为何pandoc命令与Haskell库解析Markdown数学公式结果不同?
问题原因及解决方法
核心差异在于扩展启用状态:
- 命令行调用
pandoc时,默认开启了tex_math_dollars扩展,该扩展会自动将$包裹的内容识别为行内数学公式,因此输出Math InlineMath类型。 - 直接使用Pandoc Haskell库解析时,默认并未启用
tex_math_dollars扩展,所以$(\lambda x.M)$会被当作普通字符串处理,输出Str类型。
要让Haskell库的解析结果和命令行一致,只需在解析时显式启用tex_math_dollars扩展,示例代码如下:
import Text.Pandoc import Text.Pandoc.Extensions (enableExtension, texMathDollars) main = do let readerOpts = def { readerExtensions = enableExtension texMathDollars (readerExtensions def) } mdContent <- readFile "example.md" parsedResult <- runIO $ readMarkdown readerOpts mdContent print parsedResult
内容的提问来源于stack exchange,提问作者F. Zer
相关产品推荐
相关产品推荐

