No es una tarea fácil. Aquí hay una solución que debería funcionar, siempre que solo use $
y $$
como delimitadores matemáticos, y suponiendo que su documento no contiene ningún otro uso de $
. (Si no puede suponer eso, puede intentar ajustar la perl regex en lo que sigue.)
Paso 1: Instale Haskell Platform, si no lo tiene ya, y 'cabal install pandoc' para obtener el biblioteca pandoc. (Si ha instalado Pandoc con el instalador binario, es suficiente con el ejecutable, no la biblioteca de Haskell.)
Paso 2: Ahora escribir un pequeño script de Haskell - lo llamaremos 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
compilar este:
ghc --make fixmath.hs
esto le dará un ejecutable fixmath
. Ahora, suponiendo que el archivo de entrada es input.html
, el siguiente comando debe convertirlo al látex con las matemáticas intacta, poniendo el resultado en 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
La primera parte es un perl de una sola línea que pone sus bits de matemáticas en comentarios especiales de HTML marcados como "MATH". La segunda parte analiza el HTML en una representación JSON de la estructura de datos de Pandoc correspondiente al documento. Luego, fixmath
transforma esta estructura, cambiando los comentarios especiales de HTML en bloques LaTeX sin formato y en línea. (Consulte el Scripting with pandoc para obtener una explicación.) Finalmente, convertimos de JSON a LaTeX.
¿Hay alguna manera de hacer el ejecutable '' trabajo fixmath' con Pandoc-ruby'? – Daniel
¿Y cómo debe escribirse el script de Haskell para no convertir matemática que está delimitada por '\ (\)'? http://stackoverflow.com/questions/20492982/convert-html-and-inline-mathjax-math-to-latex-with-pandoc-ruby – Daniel
Vea mi última respuesta. –