我可以使用YAML元数据设置命令行参数吗

我可以使用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

Pandoc支持在降价文档中使用。这可以设置标题和作者等。它还可以通过更改包含的图形的字体大小、边距宽度和边框大小来操纵PDF输出的外观。给出了很多细节

我想使用元数据块来记住我应该使用的命令行参数,例如
--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命令行选项: