Как конвертировать HTML с mathjax в Latex с помощью Pandoc?
у меня есть некоторые HTML-документы с уравнениями MathJax, и я хочу преобразовать их в Latex, а затем в pdf. Я хотел бы использовать Pandoc.
однако Pandoc заменяет $
с $
и он заменяет в смеси с
textbackslash{}
.
можно ли заставить Pandoc передавать формулы MathJax буквально из HTML в Latex?
2 ответов
С последней версией 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
, следующая команда должна преобразовать его в latex с математикой неповрежденной, поместив результат в output.html
:
cat input.html | \
perl -0pe 's/($$?[^$]+$$?)/\<!--MATH-->/gm' | \
pandoc -s --parse-raw -f html -t json | \
./fixmath | \
pandoc -f json -t latex -s > output.tex
первая часть Перл ОДН-вкладыш который кладет ваше математические биты в специальных комментариях HTML с пометкой "математика". Вторая часть анализирует HTML в JSON-представление структуры данных Pandoc, соответствующей документу. Тогда fixmath
преобразует эту структуру, изменяя специальные комментарии HTML в необработанные блоки LaTeX и строки. (См.сценарии с pandoc для объяснений.) Наконец, мы преобразуем из JSON обратно в LaTeX.