如何更改 pandoc 的 LaTeX 模板中的强调命令?

如何更改 pandoc 的 LaTeX 模板中的强调命令?

我想更改默认设置强的在从 pandoc 的 markdown 到 LaTeX 的转换中,例如从\textbf到,需要使用强调命令\textsc。由于在源文件中运行 pandoc 会打印到文件中.tex\textbf因此我认为这与所选模板无关(除非后者重新定义\textbf,但这似乎不是一个好选择)。我希望告诉 pandoc 将其强调转换为\strong我可以在 LaTeX 模板中定义的 LaTeX 命令。

答案1

Pandoc 讨论列表中的查询得到了一些不错的回复,来自 Andrea Rossato 和 John MacFarlane(Pandoc 的开发者)。下面是 John 的回答。这假设您有Haskell 平台已安装。

  1. 假设这是你的 Pandoc 文件,myexample.md

    A *simple* pandoc example with **strong emphasis**!
    
  2. 以下 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" 
    
  3. 编译程序:

    ghc --make strongify.hs
    
  4. 然后您可以像这样使用生成的可执行文件:

    pandoc -t json myexample.md | ./strongify | pandoc -f json -t latex
    
  5. 步骤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")

相关内容