我正在使用pandoc将org和markdown文件转换为HTML。我想在外部YAML文件中设置元数据,例如title
,subtitle
和author
标签,并使用模板显示它们。但是,除了正常的身体转换之外,我什么也看不见。
我正在使用默认的HTML模板。我已经预先运行了将YAML配置串联的转换:
pandoc -t html -o output.html metadata.yaml input.md
我还尝试了添加yaml_metadata_block
扩展名:
pandoc -t html+yaml_metadata_block -o output.html metadata.yaml input.md
此外,我尝试在命令本身中设置变量:
pandoc -t html -o output.html -V title="my title" input.md
我的YAML文件如下:
---
title: "my title"
subtitle: "my subtitle"
author: "the author"
...
使用pandoc -D html
检查默认的html模板,看起来当定义title
等时,它将放置在标题块中:
$if(title)$
<header>
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
</header>
但是在每种情况下,html文件仅包含来自input.md
的转换后的文本。我认为这是默认模板中定义的$body$
行。
如何使这些字段显示在html文档中?
答案 0 :(得分:2)
天哪,我所缺少的只是-s
属性!
从手册页:
-s, --standalone
Produce output with an appropriate header and footer (e.g. a standalone HTML, LaTeX, TEI, or RTF file, not a fragment). This option is set automat‐
ically for pdf, epub, epub3, fb2, docx, and odt output.
因此以下命令可以正常工作
pandoc -s -t html -o output.html metadata.yaml input.md