我正在使用pandoc
markdown 生成 PDF,但无法让它接受我的特殊字符。
例如,我想Mah\={a}v\={\i}ra
在文档中将长音符号放在相应的字母上。当我发布时:
pandoc -o mydoc.pdf mydoc.md
我的文档包含Mah={a}v={i}ra
。 点已从 中删除i
,正如我通过使用 所请求的那样\i
,但\=
仅转换为=
。
使用相似重音字符进行的一些测试揭示了同样的问题。
我怎样才能在我的文档中添加长音符?
答案1
通常,当pandoc
发现某些内容看起来像 latex 命令时(即转义字符\
后跟字母,以及括号中可能出现的多个参数,例如 in \emph{xxx}
),它会传递命令及其参数,而不直接处理生成的.tex
文件。当输出格式与 latex 无关时,它会忽略完整的命令及其参数(例如:在 html 输出中)。
在您的例子中,\i
它具有 tex 命令的结构,但\=
实际上却不是,因为它不包含任何字母(并且显然pandoc
不支持活动字符)。这解释了您得到的结果。
可能的解决方法:
“破解”tex 输出。您可以在 latex 模板中(甚至在 pandoc 文档中)定义以下命令:
\def\passthrulatex#1{#1}
然后,当您将此命令用作 pandoc 文档的一部分时,命令及其论证将被传递,而不会对结果
.tex
文件进行更改。因此,例如,您可以\passthrulatex{Mah\={a}v\={\i}ra}
在 中写入并获取所需的输出pdf
。但是,如果您尝试生成html
此命令(及其参数),则整个命令(及其参数)将在 html 版本中消失,因此此解决方案不是最佳的。使用 unicode。不要使用 tex 重音基元,而是直接在 pandoc 源中输入 unicode 字符。在我看来,这是一个更明智的解决方案,因为毕竟 pandoc 源应该尽可能独立于最终格式(因此也独立于 tex)。在这种情况下,您可以直接
Mahāvīra
在 pandoc 源中写入,并使用 utf8 编码保存该文件。Pandoc 会将 unicode 直接传递给输出,因此它将适用于 html 输出,并且
pdf
如果使用的 latex 模板已准备好处理 utf8,它还将适用于输出。Pandoc 的默认模板附带 utf8 支持,因此它应该可以立即使用。您甚至可以使用pandoc
来生成中间tex
文件,然后使用xelatex
而不是“手动” 编译该文件以pdflatex
确保完全支持 unicode。