18

MathJax方程式を含むHTMLドキュメントがいくつかあり、それらをラテックスに変換してからpdfに変換したいと思います。Pandocを使用したいのですが。

ただし、Pandocはに置き換え$られ、数式では。に置き換えられます。\$\\textbackslash{}

PandocにMathJax式を文字通りHTMLからLaTeXに渡すようにすることは可能ですか?

4

2 に答える 2

19

最新バージョンのpandoc(1.12.2)を使用すると、次のことができます。

pandoc -f html+tex_math_dollars+tex_math_single_backslash -t latex

ずっといい!\(\)で区切られた数学を変換したくない場合は、

pandoc -f html+tex_math_dollars -t latex
于 2013-12-10T17:58:11.870 に答える
10

それは簡単な作業ではありません。$これは、数学の区切り文字としてのみ使用し$$、ドキュメントに他の使用法が含まれていないことを前提として、機能するはずのソリューションです$。(それが想定できない場合は、次のようにperl正規表現を調整してみてください。)

ステップ1:Haskellプラットフォームをまだインストールしていない場合はインストールし、「cabalinstallpandoc」を使用して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

最初の部分は、「MATH」とマークされた特別なHTMLコメントに数学ビットを入れるperlワンライナーです。2番目の部分では、HTMLを解析して、ドキュメントに対応するPandocデータ構造のJSON表現にします。次にfixmath、この構造を変換し、特別なHTMLコメントを生のLaTeXブロックとインラインに変更します。(説明については、 pandocを使用したスクリプトを参照してください。)最後に、JSONからLaTeXに変換し直します。

于 2012-07-12T21:59:08.177 に答える