繁体   English   中英

如何使用Pandoc将带有mathjax的HTML转换为Latex?

[英]How to convert HTML with mathjax into Latex using Pandoc?

我有一些带有MathJax方程的HTML文档,我想将它们转换为Latex,然后转换为pdf。 我想用Pandoc。

然而,Pandoc替换$\\$它取代\\公式与\\textbackslash{}

是否有可能让Pandoc将MathJax公式从HTML传递到Latex?

使用最新版本的pandoc(1.12.2),您可以执行以下操作:

pandoc -f html+tex_math_dollars+tex_math_single_backslash -t latex

好多了! 如果你不想转换由\\(\\)分隔的数学,那就行了

pandoc -f html+tex_math_dollars -t latex

这不是一件容易的事。 这是一个应该有效的解决方案,前提是你只使用$$$作为数学分隔符,并假设你的文档不包含$任何其他用途。 (如果你不能假设,你可以尝试在下面的内容中调整perl正则表达式。)

步骤1:安装Haskell平台 (如果您还没有),并安装'cabal install pandoc'以获取pandoc库。 (如果您使用二进制安装程序安装了pandoc,则只有可执行文件,而不是Haskell库。)

第2步:现在编写一个小的Haskell脚本 - 我们称之为fixmath.hs:

import Text.Pandoc

main = toJsonFilter fixmath

fixmath :: Block -> Block
fixmath = bottomUp fixmathBlock . bottomUp fixmathInline

fixmathInline :: Inline -> Inline
fixmathInline (RawInline "html" ('<':'!':'-':'-':'M':'A':'T':'H':xs)) =
  RawInline "tex" $ take (length xs - 3) xs
fixmathInline x = x

fixmathBlock :: Block -> Block
fixmathBlock (RawBlock "html" ('<':'!':'-':'-':'M':'A':'T':'H':xs)) =
  RawBlock "tex" $ take (length xs - 3) xs
fixmathBlock x = x

编译:

ghc --make fixmath.hs

这将为您提供可执行的fixmath 现在,假设您的输入文件是input.html ,以下命令应将其转换为乳胶并且数学完整,将结果放在output.html

cat input.html | \
perl -0pe 's/(\$\$?[^\$]+\$\$?)/\<!--MATH$1-->/gm' | \
pandoc -s --parse-raw -f html -t json | \
./fixmath | \
pandoc -f json -t latex -s > output.tex

第一部分是perl one-liner,它将您的数学位置放在标记为“MATH”的特殊HTML注释中。 第二部分将HTML解析为与文档对应的Pandoc数据结构的JSON表示。 然后fixmath转换此结构,将特殊HTML注释更改为原始LaTeX块和内联。 (有关解释,请参阅使用pandoc编写脚本 。)最后,我们将JSON转换回LaTeX。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM