Pandoc支持降价文档中的YAML metadata block。这可以设置标题和作者等。它还可以通过更改字体大小,边距宽度和包含的图形的帧大小来操纵PDF输出的外观。提供了大量详细信息here。
我想使用元数据块来记住我应该使用的命令行参数,例如--toc
和--number-sections
。我尝试了这个,将以下内容添加到我的降价顶部:
---
title: My Title
toc: yes
number-sections: yes
---
然后我使用了命令行:
pandoc -o guide.pdf articheck_guide.md
此确实生成了一个目录,但未对这些部分进行编号。我想知道为什么会这样,如果有一种方法我可以从文档中指定这种东西,这样我就不需要在命令行中添加它。
答案 0 :(得分:3)
YAML元数据不作为参数传递给pandoc
,而是作为变量传递。当您在MWE上呼叫pandoc
时,它不会产生此信息:
pandoc -o guide.pdf articheck_guide.md --toc --number-sections
我们认为会这样做。相反,它叫:
pandoc -o guide.pdf articheck_guide.md -V toc:yes -V number-sections:yes
那么,为什么MWE会产生一个toc?因为默认的乳胶模板使用toc
变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
因此将toc
设置为任何值都应该生成一个目录,至少在latex输出中。在此模板中,没有number-sections
个变量,因此这个变量不起作用。但是,有一个numbersections
变量:
~$ pandoc -D latex | grep number
$if(numbersections)$
将numbersections
设置为任何值将使用默认模板
---
title: My Title
toc: yes
numbersections: yes
---
此解决方案的问题在于它仅适用于某种输出格式。我以为我已经阅读了pandoc邮件列表上的某个地方,我们很快就可以按照预期使用YAML块中的元数据(即作为参数而不是变量),但我不能再找到它了,所以也许它很快就不会发生。
答案 1 :(得分:3)
查看 panzer (GitHub存储库)。
这是最近由Mark Sprevak宣布并发布的 - 一款软件,增加了'款式的概念。到潘多克。
它基本上是Pandoc的包装器。它最大限度地利用了YAML元数据块的概念。
'风格'提供了一种方法,用一行来设置Pandoc文档转换过程的所有选项("我希望这个文档是文章/ CV / notes / letter。" )。
您可以将此视为比Pandoc模板更通用的抽象。样式是......的组合。
可以按输出类型和每个文档自定义这些设置。风格可以......
panzer
样式简化了Makefile:它们将有关文档外观的所有内容捆绑在一个位置 - YAML元数据(Markdown文件中的块或单独的文件)。
您只需在文档中添加一行元数据(style: ...
),它就会被视为字母/文章/简历/笔记本或其他任何内容。