我可以使用YAML元数据设置命令行参数吗
Pandoc支持在降价文档中使用。这可以设置标题和作者等。它还可以通过更改包含的图形的字体大小、边距宽度和边框大小来操纵PDF输出的外观。给出了很多细节 我想使用元数据块来记住我应该使用的命令行参数,例如我可以使用YAML元数据设置命令行参数吗,yaml,markdown,pandoc,Yaml,Markdown,Pandoc,Pandoc支持在降价文档中使用。这可以设置标题和作者等。它还可以通过更改包含的图形的字体大小、边距宽度和边框大小来操纵PDF输出的外观。给出了很多细节 我想使用元数据块来记住我应该使用的命令行参数,例如--toc和--number sections。我尝试了这一点,在降价的顶部添加了以下内容: --- title: My Title toc: yes number-sections: yes --- 然后我使用命令行: pandoc -o guide.pdf articheck_guide
--toc
和--number sections
。我尝试了这一点,在降价的顶部添加了以下内容:
---
title: My Title
toc: yes
number-sections: yes
---
然后我使用命令行:
pandoc -o guide.pdf articheck_guide.md
这确实产生了一个目录,但没有对章节进行编号。我想知道为什么会这样,是否有一种方法可以从文档中指定这类内容,这样我就不需要在命令行中添加它。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
那么,您为什么要生产toc?因为默认latex模板使用了toc
变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
~$ pandoc -D latex | grep number
$if(numbersections)$
因此,将toc
设置为任何值都应该生成一个目录,至少在latex输出中是这样。在此模板中,没有编号节
变量,因此此模板不起作用。但是,有一个numbersections
变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
~$ pandoc -D latex | grep number
$if(numbersections)$
将numbersections
设置为任何值都将使用默认模板在latex输出中生成编号
---
title: My Title
toc: yes
numbersections: yes
---
此解决方案的问题在于,它只适用于某些输出格式。我想我在pandoc邮件列表的某个地方读到过,我们很快就可以按预期使用YAML块中的元数据(即作为参数而不是变量),但我再也找不到它了,所以可能不会很快发生。看看(GitHub存储库)
这是马克·斯普雷瓦克(MarkSprevak)最近发布的一款软件,它为潘多克增添了“风格”的概念
它基本上是一个围绕着潘多克的包装。它最大限度地利用了YAML元数据块的概念
“样式”提供了一种通过一行设置Pandoc文档转换过程所有选项的方法(“我希望此文档是一篇文章/CV/notes/letter”)
您可以将其视为比Pandoc模板更一般的抽象。风格是
- …Pandoc命令行选项
- …元数据设置
- …模板
- …运行筛选器的说明,以及
- …运行前/后处理器的说明
- …合并和
- …可以相互承担继承关系李>
panzer
样式简化了makefile:它们将与文档外观有关的所有内容捆绑在一个地方——YAML元数据(标记文件中的一个块或单独的文件)
您只需在文档中添加一行元数据(
样式:…
),它将被视为信件/文章/简历/笔记本或其他任何内容。太好了,谢谢。这一切都有道理。虽然不是完美的(如果模板乱七八糟的话会有点脆弱),但这对我来说是可以的,直到有了改进。我编写了一个小脚本,从YAML元数据设置pandoc命令行选项: