使用markdown代码块时,DOCX文档中产生的单空格字体太大。
我可以通过指定自定义模板.docx文件来调整段落的字体大小,但由于某些原因,与大多数其他生成的输出不同,生成的代码块不使用段落样式。
有没有办法:
-
使代码块使用特定的样式,这样我就可以覆盖模板.docx中的样式
-
是否覆盖代码块DOCX表示中使用的单空格字体?
更新以澄清:我使用的是一个基于先前生成的docx的外部引用.docx,如评论中所述。通过修改heading1等的样式,我可以合理地控制输出。问题是,生成的单空间文本不使用命名样式,它只是经过一些更改后的"正常"文本。所以我没有办法在模板中更改它,除非我也更改所有"正常"文本的大小。
使用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。预先格式化的源代码现在使用隐藏链接样式"源代码"进行格式化。默认情况下,此样式不会显示在样式预览窗格中,您可以通过单击样式预览面板右下角带箭头的小方块来配置样式预览窗格来添加它。
根据需要修改此样式并保存模板。然后根据这个模板生成您的文档:
pandoc --reference-docx=template_1.17.2.docx -o mydoc.docx mydoc.md
现在,您应该可以在mydoc中看到格式正确的源代码。
@LinusR建议不同的源样式使用不同的布局样式。我添加了XML作为示例。格式化后的XML将使用"KeywordTok"one_answers"NormalTok"。
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
标志一起使用)之外,还有一个模板。您可以使用pandoc -D odt
打印默认模板,然后对其进行修改并将其与pandoc -o out.odt --template=modifiedTemplate.odt
一起使用
最后的建议:使用最新的Pandoc版本!(电流为1.13.2.1。本月底预计为1.14。)它对DOCX的支持在最近的版本中有了很大的改进。