我有一个像这样的降价列表:
* Question A
- Answer 1
- Answer 2
- Answer 3
当我使用pandoc将markdown文档转换为docx时,我需要确保所有答案(1 - 3)与问题A出现在同一页面上。 我该怎么做?
答案 0 :(得分:3)
在Markdown中使用自定义样式,然后在自定义docx模板中定义这些样式。
值得注意的是Pandoc的documentation州(强调增加):
因为pandoc文档的中间表示较少 表达比它之间转换的许多格式,一个应该 不要指望每种格式和其他格式之间的完美转换。 Pandoc试图保留文档的结构元素,但是 没有格式化细节 ...
当然,Markdown没有"页面"或者"分页符,"所以这不是Pandoc默认处理的东西。但是,Pandoc知道docx样式。正如documentation所解释的那样:
默认情况下,pandoc的docx输出应用一组预定义的样式 对于诸如段落和块引号之类的块,以及主要用途 内联的默认格式(斜体,粗体)。这将有用 大多数用途,特别是与
reference.docx
文件一起使用。但是,如果 您需要将自己的样式应用于块,或匹配预先存在的样式 一组样式,pandoc允许您为块定义自定义样式 和文本分别使用divs
和spans
。如果您使用属性
div
定义span
或custom-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.docx
:pandoc --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文档中的哪些元素获取哪些样式,您就应该有一个列表,只要整个列表适合一页,就不会在分页符中断开。