【问题标题】:Changing the Pandoc monospace font size or style in DOCX output在 DOCX 输出中更改 Pandoc 等宽字体大小或样式
【发布时间】:2015-02-05 14:21:54
【问题描述】:

使用 markdown 代码块时,DOCX 文档中生成的等宽字体太大。

我可以通过指定自定义 template.docx 文件来调整段落的字体大小,但由于某种原因,生成的代码块不使用段落样式,这与大多数其他生成的输出相反。

有什么办法:

  • 使代码块使用特定样式,以便我可以覆盖 template.docx

  • 中的样式
  • 覆盖在代码块的 DOCX 表示中使用的等宽字体?

更新澄清: 我正在使用基于先前生成的 docx 的外部 reference.docx,如 cmets 中所述。通过修改 heading1 等的样式,我可以合理地控制输出。问题是生成的等宽文本不使用命名样式,它只是“正常”的一些更改。所以我无法在模板中更改它,除非我也更改所有“正常”文本的大小。

【问题讨论】:

  • 您可以发布(链接到)您的自定义 template.docx 文件吗?您是否知道有一个附加选项(不同于 Pandoc 使用的 template.docx),可以使用--reference-docx=my.docx 调用?您可以创建my.docx 文件以包含您想要的样式,Pandoc 将从该 reference.docx 中窃取所有要使用的样式...
  • 您找到解决方案了吗?我注意到,对于我指定语法的围栏代码块(例如```php ...),代码块确实在docx中分配了一次样式,但它有许多不同的样式,具体取决于代码语法标记类型。我可以更改参考文档中所有样式的样式。他们继承了一种我找不到的风格,叫做“Verbatim Char”。但是对于没有指定语法的常规代码块,仍然没有运气。

标签: docx pandoc


【解决方案1】:

使用 Pandoc 1.17.2 和 Word 2013 我终于找到了解决方案,似乎更高版本的 Pandoc 使用了默认隐藏在 Word 中的链接样式。

第 1 步:使用生成自定义模板文件

pandoc -o template_1.17.2.docx test.md

其中 test.md 包括源代码和您可能想要修改的所有其他样式。例如:

~~~~
this is preformatted source using style "Source Code"
~~~~

~~~ xml
<this> is preformatted source using "KeyworkTok" and "NormalTok"</this>
~~~

在 Word 中打开 template_1.17.2.docx。预格式化的源现在使用 hidden 链接样式“源代码”进行格式化。默认情况下,此样式不显示在样式预览窗格中,您可以通过单击样式预览面板右下角的带箭头的小方块来配置样式预览窗格来添加它。

根据需要修改此样式并保存模板。然后根据这个模板生成你的文档:

pandoc --reference-docx=template_1.17.2.docx -o mydoc.docx mydoc.md

您现在应该会在 mydoc 中看到格式正确的源代码。

@LinusR 建议不同的源样式使用不同的布局样式。我添加了 XML 作为示例。格式化的 XML 将使用“KeywordTok”和“NormalTok”。

【讨论】:

    【解决方案2】:

    Pandoc,在创建 DOCX (MS Word) 文档时使用 reference.docx 文件。这必须在 Pandoc 命令行上给出。然后,Pandoc 将从该参考 DOCX 中提取所有默认样式和格式设置(除非它们使用自定义名称),并将它们应用于生成的 DOCX:

        pandoc -t docx -o out.docx in-markdown.txt --reference-docx=my.docx
    

    获得 Pandoc 可用参考 DOCX 的最佳方法是在 Pandoc 的帮助下生成第一个简单的 DOCX,然后将其带到 Word 安装中,打开它并根据自己的喜好更改要使用的样式.然后保存,带回 Pandoc 作为参考。


    对于 ODT (LibreOffice/OpenOffice/OpenDocument),除了 reference.odt(可以与 --reference-odt 标志一起使用)之外,还有一个 template。你可以用pandoc -D odt打印默认模板,然后修改它并与pandoc -o out.odt --template=modifiedTemplate.odt一起使用


    最后的建议:使用最新的 Pandoc 版本! (当前版本为 1.13.2.1。预计本月底为 1.14。)它的 DOCX 支持在最近的版本中得到了显着改善。

    【讨论】:

    • 我正在使用基于先前生成的 docx 的外部 reference.docx,如您所描述的。通过修改标题1 等的样式,我可以合理地控制输出。问题是生成的等宽文本不使用命名样式,它只是“正常”的一些更改。所以我没有办法在模板中更改它,除非我也更改“正常”。
    • @mb21:感谢您尝试改进我的答案。你似乎比我更了解 Pandoc 的内部结构。但是...请您仔细地改进您的编辑的以下几点:(1)当您仅时不要参考 ODT i> 谈谈reference.docx 文件。 (2) 同时更新对"latest Pandoc version" 的引用,不再是 1.13.2.1,而是现在是 1.17。跨度>
    • @mb21:你能不能也看看github.com/jgm/pandoc/issues/2797
    • @KurtPfeifle 对不起,我错过了 ODT 部分,因为这个问题只询问了 Docx。再次添加它...请恢复我的任何更改或进一步改进它们...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多