如何使用Pandoc将带有mathjax的HTML转换为Latex?
我有一些带有MathJax方程的HTML文档,我想把它们转换成Latex,然后再转换成pdf。我想用潘多克 但是,Pandoc将如何使用Pandoc将带有mathjax的HTML转换为Latex?,html,latex,mathjax,pandoc,Html,Latex,Mathjax,Pandoc,我有一些带有MathJax方程的HTML文档,我想把它们转换成Latex,然后再转换成pdf。我想用潘多克 但是,Pandoc将$替换为\$,并将公式中的\替换为\textbackslash{} 有可能让Pandoc将MathJax公式从HTML直接传递到Latex吗?这不是一项容易的任务。如果您只使用$和$$作为数学分隔符,并且假设您的文档不包含$的任何其他用法,那么这里有一个解决方案应该是可行的。(如果您不能假设这一点,可以尝试在下面的步骤中调整perl正则表达式。) 步骤1:如果您还没有安
$
替换为\$
,并将公式中的\
替换为\textbackslash{}
有可能让Pandoc将MathJax公式从HTML直接传递到Latex吗?这不是一项容易的任务。如果您只使用
$
和$$
作为数学分隔符,并且假设您的文档不包含$
的任何其他用法,那么这里有一个解决方案应该是可行的。(如果您不能假设这一点,可以尝试在下面的步骤中调整perl正则表达式。)
步骤1:如果您还没有安装,请安装“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
这将为您提供一个可执行的fixmath
。现在,假设您的输入文件是input.html
,下面的命令应该将其转换为latex,数学保持不变,将结果放入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
cat input.html |\
perl-0pe的/(\$\$?[^\$]+\$\$?)/\/gm'\
pandoc-s——解析raw-fhtml-tjson |\
/固定数学|\
pandoc-f json-t latex-s>output.tex
第一部分是一个perl one线性程序,它将您的数学位放入标记为“math”的特殊HTML注释中。第二部分将HTML解析为对应于文档的Pandoc数据结构的JSON表示形式。然后
fixmath
转换此结构,将特殊的HTML注释更改为原始的LaTeX块和内联线。(请参阅以获取解释。)最后,我们将JSON转换回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
是否有某种方法可以使可执行文件
fixmath
与pandoc ruby
一起工作?如何编写Haskell脚本以不转换由\(\)
分隔的数学?见我的最新答案。
pandoc -f html+tex_math_dollars -t latex