pandoc markdown to docx - 将列表保留在一个页面上

时间:2018-03-23 01:43:58

标签: ms-word markdown pandoc

我有一个像这样的降价列表:

* Question A - Answer 1 - Answer 2 - Answer 3 当我使用pandoc将markdown文档转换为docx时,我需要确保所有答案(1 - 3)与问题A出现在同一页面上。 我该怎么做?

1 个答案:

答案 0 :(得分:3)

在Markdown中使用自定义样式,然后在自定义docx模板中定义这些样式。

值得注意的是Pandoc的documentation州(强调增加):

  

因为pandoc文档的中间表示较少   表达比它之间转换的许多格式,一个应该   不要指望每种格式和其他格式之间的完美转换。   Pandoc试图保留文档的结构元素,但是   没有格式化细节 ...

当然,Markdown没有"页面"或者"分页符,"所以这不是Pandoc默认处理的东西。但是,Pandoc知道docx样式。正如documentation所解释的那样:

  

默认情况下,pandoc的docx输出应用一组预定义的样式   对于诸如段落和块引号之类的块,以及主要用途   内联的默认格式(斜体,粗体)。这将有用   大多数用途,特别是与reference.docx文件一起使用。但是,如果   您需要将自己的样式应用于块,或匹配预先存在的样式   一组样式,pandoc允许您为块定义自定义样式   和文本分别使用divsspans

     

如果您使用属性div定义spancustom-style,pandoc   将您指定的样式应用于包含的元素。因此对于   示例使用bracketed_spans语法

[Get out]{custom-style="Emphatically"}, he said.
     

将生成一个docx文件,其中“Get out”采用字符样式设计   Emphatically。同样,使用fenced_divs语法

     狄金森简单地开始写这首诗:

::: {custom-style="Poetry"}
| A Bird came down the Walk---
| He did not know I saw---
:::
     

将使用Poetry段落样式设置两个包含的行的样式。

     

如果样式尚未在reference.docx中,则会定义它们   在输出文件中继承自normal文本。如果他们已经   已定义,pandoc不会改变定义。

如果您不想手动定义样式,但希望它自动应用于每个列表(或者可能应用于遵循特定模式的每个列表),您可以定义自定义filter将样式应用于文档中的每个匹配元素。

当然,这只会将样式名称添加到输出中。您仍然需要定义样式(告诉Word如何显示分配这些样式的元素)。由于--reference-doc选项的documentation解释了:

  

为获得最佳效果,参考docx应该是a的修改版本   使用pandoc生成的docx文件。参考docx的内容   被忽略,但它的样式表和文档属性(包括   边距,页面大小,页眉和页脚)在新的docx中使用。如果   在命令行上没有指定参考docx,pandoc将会显示   对于用户数据目录中的文件reference.docx(请参阅--data-dir)。   如果未找到,则将使用合理的默认值。

     

要制作自定义reference.docx,请先获取默认副本   reference.docxpandoc --print-default-data-file reference.docx > custom-reference.docx。然后在Word中打开custom-reference.docx,进行修改   您希望的样式,并保存文件。

当然,在Word中修改custom-reference.docx时,您可以添加在Markdown中使用的新自定义样式。正如@CindyMeister在评论中指出的那样:

  

Word会使用样式来处理这个问题,问题风格会在哪里   有段落设置" Keep with Next"。答案风格会   也有这个。对于最后一个条目,第三种风格不会   设置已激活。此外,所有三种风格都有   段落设置"保持在一起"激活。

最后,当使用pandoc将Markdown转换为Word docx文件时,请使用选项--reference-doc=custom-reference.docx,您的自定义样式定义将包含在生成的docx文件中。只要您还正确识别Markdown文档中的哪些元素获取哪些样式,您就应该有一个列表,只要整个列表适合一页,就不会在分页符中断开。

相关问题