我可以使用 YAML 元数据设置命令行参数吗
Can I set command line arguments using the YAML metadata
Pandoc 支持 YAML metadata block in markdown documents. This can set the title and author, etc. It can also manipulate the appearance of the PDF output by changing the font size, margin width and the frame sizes given to figures that are included. Lots of details are given here。
我想使用元数据块来记住我应该使用的命令行参数,例如 --toc
和 --number-sections
。我试过了,将以下内容添加到降价的顶部:
---
title: My Title
toc: yes
number-sections: yes
---
然后我使用了命令行:
pandoc -o guide.pdf articheck_guide.md
产生了 table 的内容,但没有对章节编号。我想知道为什么会这样,如果有什么方法可以从文档中指定这种东西,这样我就不需要在命令行上添加它了。
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
变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
因此将 toc
设置为任何值都应该产生 table 的内容,至少在乳胶输出中是这样。在这个模板中,没有 number-sections
个变量,所以这个是行不通的。但是,有一个 numbersections
变量:
~$ pandoc -D latex | grep number
$if(numbersections)$
将 numbersections
设置为任何值都将使用默认模板在 Latex 输出中生成编号
---
title: My Title
toc: yes
numbersections: yes
---
此解决方案的问题在于它仅适用于某些输出格式。我以为我已经在 pandoc 邮件列表的某个地方读到我们很快就能按预期在 YAML 块中使用元数据(即作为参数而不是变量),但我再也找不到它了,所以也许它不会'不会很快发生的。
查看 panzer (GitHub 存储库).
这是最近由 Mark Sprevak 宣布并发布的——一款软件,它向 Pandoc 添加了 'styles' 的概念。
它基本上是 Pandoc 的包装器。它最大限度地利用了YAML元数据块的概念。
'styles' 提供了一种用一行设置 Pandoc 文档转换过程的所有选项的方法 ("I want this document be an article/CV/notes/letter.")。
您可以将其视为比 Pandoc 模板更通用的抽象。样式是...的组合...
- ...Pandoc 命令行选项,
- ...元数据设置,
- ...模板,
- ...运行 过滤器的说明,以及
- ...运行 pre/postprocessors.
的说明
这些设置可以在每个输出类型和每个文档的基础上进行自定义。样式可以是...
- ...合并
- ...可以相互承担继承关系。
panzer
样式简化了 Makefile:它们将与文档外观有关的所有内容都集中在一个地方——YAML 元数据(Markdown 文件中的一个块,或一个单独的文件)。
您只需在文档中添加一行元数据 (style: ...
),它将被视为 letter/article/CV/notebook 或其他内容。
Pandoc 支持 YAML metadata block in markdown documents. This can set the title and author, etc. It can also manipulate the appearance of the PDF output by changing the font size, margin width and the frame sizes given to figures that are included. Lots of details are given here。
我想使用元数据块来记住我应该使用的命令行参数,例如 --toc
和 --number-sections
。我试过了,将以下内容添加到降价的顶部:
---
title: My Title
toc: yes
number-sections: yes
---
然后我使用了命令行:
pandoc -o guide.pdf articheck_guide.md
产生了 table 的内容,但没有对章节编号。我想知道为什么会这样,如果有什么方法可以从文档中指定这种东西,这样我就不需要在命令行上添加它了。
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
变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
因此将 toc
设置为任何值都应该产生 table 的内容,至少在乳胶输出中是这样。在这个模板中,没有 number-sections
个变量,所以这个是行不通的。但是,有一个 numbersections
变量:
~$ pandoc -D latex | grep number
$if(numbersections)$
将 numbersections
设置为任何值都将使用默认模板在 Latex 输出中生成编号
---
title: My Title
toc: yes
numbersections: yes
---
此解决方案的问题在于它仅适用于某些输出格式。我以为我已经在 pandoc 邮件列表的某个地方读到我们很快就能按预期在 YAML 块中使用元数据(即作为参数而不是变量),但我再也找不到它了,所以也许它不会'不会很快发生的。
查看 panzer (GitHub 存储库).
这是最近由 Mark Sprevak 宣布并发布的——一款软件,它向 Pandoc 添加了 'styles' 的概念。
它基本上是 Pandoc 的包装器。它最大限度地利用了YAML元数据块的概念。
'styles' 提供了一种用一行设置 Pandoc 文档转换过程的所有选项的方法 ("I want this document be an article/CV/notes/letter.")。
您可以将其视为比 Pandoc 模板更通用的抽象。样式是...的组合...
- ...Pandoc 命令行选项,
- ...元数据设置,
- ...模板,
- ...运行 过滤器的说明,以及
- ...运行 pre/postprocessors. 的说明
这些设置可以在每个输出类型和每个文档的基础上进行自定义。样式可以是...
- ...合并
- ...可以相互承担继承关系。
panzer
样式简化了 Makefile:它们将与文档外观有关的所有内容都集中在一个地方——YAML 元数据(Markdown 文件中的一个块,或一个单独的文件)。
您只需在文档中添加一行元数据 (style: ...
),它将被视为 letter/article/CV/notebook 或其他内容。