2015-02-05 101 views
8

使用降低代码块时,生成的等宽字体大小在DOCX文档中太大。在DOCX输出中更改Pandoc等宽字体大小或样式

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

有没有什么办法:

  • 使代码块使用特定的风格,这样我可以覆盖风格的范本.docx

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

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

+0

你可以发布(链接到)你的自定义* template.docx *文件吗?你是否知道有一个额外的选项(与Pandoc使用的* template.docx *不同),可以用'--reference-docx = my.docx'调用?您可以创建'my.docx'文件以包含您想要的样式,Pandoc将从reference.docx中窃取所有要使用的样式... – 2015-05-24 22:02:51

+1

您是否找到解决方案?我注意到,对于指定语法的围栅代码块(例如'''php ...),代码块在docx中确实有一次赋值样式,但它有许多不同的样式,具体取决于代码语法标记类型。我可以在参考文档中更改所有这些样式。他们继承了我无法找到的称为“逐字字符”的风格。但对于没有指定语法的常规代码块,仍然没有运气。 – LinusR 2016-08-22 16:45:26

回答

3

使用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”和“NormalTok”。

3

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支持得到了显着改善。

+1

我正在使用基于之前生成的docx的外部reference.docx,如您所描述的。通过修改heading1等的样式,我对输出有合理的控制。问题在于生成的等宽字体文本不使用命名样式,它只是“正常”并进行了一些更改。所以我没有办法在模板中改变它,除非我也改变“正常”。 – 2015-05-26 14:05:43

+0

@ mb21:我很欣赏你试图改进我的答案。你似乎比我更了解Pandoc的内部结构。但是......请您谨慎行事,以便改进您的编辑中的以下几点:***(1)***当* *只讨论* reference.docx *文件时,请勿参考ODT。 ***(2)***同时更新对*“最新Pandoc版本”*的引用,该引用不再是1.13.2.1,现在是1.17。 – 2016-03-21 21:28:39

+0

@ mb21:你可以看看https://github.com/jgm/pandoc/issues/2797吗? – 2016-03-21 21:48:27