更改 DOCX 输出中的 Pandoc 等宽字体大小或样式

Changing the Pandoc monospace font size or style in DOCX output

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

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

有什么办法可以:

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

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 支持在最近的版本中得到了显着改善。

使用 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。预格式化的源现在使用 隐藏 链接样式 "Source Code" 进行格式化。默认情况下,此样式不会显示在样式预览窗格中,您可以通过单击样式预览面板右下角的带箭头的小方块来配置样式预览窗格来添加它。

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

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

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

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