Ben*_*ohn 5 markdown yaml pandoc
Pandoc 支持Markdown 文档中的YAML 元数据块。这可以设置标题和作者等。它还可以通过更改字体大小、边距宽度和为包含的图形指定的框架大小来操作 PDF 输出的外观。这里提供了很多细节。
我想使用元数据块来记住我应该使用的命令行参数,例如--toc和--number-sections。我试过了,将以下内容添加到我的降价顶部:
---
title: My Title
toc: yes
number-sections: yes
---
Run Code Online (Sandbox Code Playgroud)
然后我使用命令行:
pandoc -o guide.pdf articheck_guide.md
Run Code Online (Sandbox Code Playgroud)
这确实产生了一个目录,但没有给章节编号。我想知道这是为什么,如果有办法可以从文档中指定这种东西,这样我就不需要在命令行中添加它。
YAML 元数据不pandoc作为参数传递,而是作为变量传递。当您调用pandocMWE 时,它不会产生以下结果:
pandoc -o guide.pdf articheck_guide.md --toc --number-sections
Run Code Online (Sandbox Code Playgroud)
正如我们所想的那样。相反,它调用:
pandoc -o guide.pdf articheck_guide.md -V toc:yes -V number-sections:yes
Run Code Online (Sandbox Code Playgroud)
那么,为什么你们 MWE 会制作目录呢?因为默认的乳胶模板使用toc变量:
~$ pandoc -D latex | grep toc
$if(toc)$
\setcounter{tocdepth}{$toc-depth$}
Run Code Online (Sandbox Code Playgroud)
因此,设置toc为任何值都应该生成一个目录,至少在乳胶输出中是这样。在这个模板中,没有number-sections变量,所以这个不起作用。然而,有一个numbersections变数:
~$ pandoc -D latex | grep number
$if(numbersections)$
Run Code Online (Sandbox Code Playgroud)
设置numbersections为任何值都会使用默认模板在乳胶输出中生成编号
---
title: My Title
toc: yes
numbersections: yes
---
Run Code Online (Sandbox Code Playgroud)
该解决方案的问题在于它仅适用于某些输出格式。我以为我在 pandoc 邮件列表上的某个地方读到,我们很快就能够按预期使用 YAML 块中的元数据(即作为参数而不是变量),但我再也找不到它了,所以也许它不会这不会很快发生。
| 归档时间: |
|
| 查看次数: |
3572 次 |
| 最近记录: |