![如何更改 pandoc 的 LaTeX 模板中的强调命令?](https://linux22.com/image/245986/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20pandoc%20%E7%9A%84%20LaTeX%20%E6%A8%A1%E6%9D%BF%E4%B8%AD%E7%9A%84%E5%BC%BA%E8%B0%83%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我想更改默认设置强的在从 pandoc 的 markdown 到 LaTeX 的转换中,例如从\textbf
到,需要使用强调命令\textsc
。由于在源文件中运行 pandoc 会打印到文件中.tex
,\textbf
因此我认为这与所选模板无关(除非后者重新定义\textbf
,但这似乎不是一个好选择)。我希望告诉 pandoc 将其强调转换为\strong
我可以在 LaTeX 模板中定义的 LaTeX 命令。
答案1
Pandoc 讨论列表中的查询得到了一些不错的回复,来自 Andrea Rossato 和 John MacFarlane(Pandoc 的开发者)。下面是 John 的回答。这假设您有Haskell 平台已安装。
假设这是你的 Pandoc 文件,
myexample.md
A *simple* pandoc example with **strong emphasis**!
以下 Haskell 程序利用了 Pandoc 的脚本接口
-- strongify.hs -- compile as 'ghc --make strongify.hs' import Text.Pandoc main = toJsonFilter makeItStrong where makeItStrong (Strong xs) = [latex "\\strong{"] ++ xs ++ [latex "}"] makeItStrong x = [x] latex = RawInline "latex"
编译程序:
ghc --make strongify.hs
然后您可以像这样使用生成的可执行文件:
pandoc -t json myexample.md | ./strongify | pandoc -f json -t latex
步骤4的输出是:
A \emph{simple} pandoc example with \strong{strong emphasis}!
约翰·麦克法兰指出以下观点:
“...与使用 sed 或 perl 对输出进行后处理相比,此方法的优势在于:在逐字环境中,“\textbf” 不会受到影响。”
答案2
为了让未来发现此主题的人受益,请参阅https://stackoverflow.com/questions/19472828/unable-to-compile-haskell-program-couldnt-match-errors其中 John 解释了对 pandoc 的后续更改导致 strongify.hs 抛出错误。
这在 1.15.0.6 下有效
-- strongify.hs
-- compile as 'ghc --make strongify.hs'
import Text.Pandoc
import Text.Pandoc.JSON
main = toJSONFilter makeItStrong
where makeItStrong (Strong xs) = [latex "\\strong{"] ++ xs ++ [latex "}"]
makeItStrong x = [x]
latex = RawInline (Format "latex")