Pandoc将元数据值解释为未格式化的字符串,并将输出以输出格式生成字符串的代码。因此,所有的逃跑。
有两种方法可以解决这个问题:要么说服pandoc接受输入作为
格式化
string,或者告诉pandoc插入字符串
逐字逐句
.
后者更容易,只需更换
--metadata
/
-M
具有
--variable
/
-V
.Pandoc将按原样使用变量,并将其插入模板中。缺点是这需要特定格式的输入,因此在这种特定情况下,它不适用于LaTeX以外的输出格式。
pandoc --variable='title:Some Notes on $x^{y^z}\pi$' â¦
另一种方法是让pandoc相信元数据是格式化的。再一次,有两种方法可以做到这一点。
-
使用元数据文件。这是一个YAML文件,其中的字符串标量将被解析为Markdown。所以你可以这样做:
my_metadata=$(mktemp 'metadata-yaml.XXX')
echo 'title: Some Notes on $x^{y^z}\pi$' > ${my_metadata}
pandoc --metadata-file=${my_metadata} â¦
rm ${my_metadata}
-
使用Lua过滤器解析元数据字符串。为此,你需要一个Lua脚本,例如。,
parse-metadata.lua
,内容
function Meta (meta)
for key, value in pairs(meta) do
if type(value) == 'string' then
meta[key] = pandoc.utils.blocks_to_inlines(
pandoc.read(value).blocks)
end
end
return meta
end
通过以下方式将此脚本传递给pandoc
--lua-filter
/
-L
并继续使用
--元数据
/
M
像以前一样。元数据现在将被解析为Markdown。
pandoc --lua-filter=parse-markdown.lua -M 'title:Some Notes on $x^{y^z}\pi$'