Non è un compito facile. Ecco una soluzione che dovrebbe funzionare, purché si utilizzi solo $
e $$
come delimitatori matematici e si presuma che il documento non contenga altri usi di $
. (Se non si può presumere che, si può provare a regolare l'espressione regolare perl nel seguito.)
Fase 1: Installare il Haskell Platform, se non lo avete già fatto, e 'cabala installare Pandoc' per ottenere il libreria pandoc. (Se è stato installato Pandoc con il programma di installazione binario, avete solo l'eseguibile, non la libreria Haskell.)
Fase 2: Ora scrivere un piccolo script Haskell - la chiameremo 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
compilare questo:
ghc --make fixmath.hs
questo vi darà un eseguibile fixmath
. Ora, supponendo che il file di input è input.html
, il seguente comando dovrebbe convertirlo in lattice con la matematica intatta, ponendo il risultato in 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 prima parte è un one-liner perl che mette le vostre punte di matematica in commenti HTML speciali contrassegnati con "MATH". La seconda parte analizza l'HTML in una rappresentazione JSON della struttura di dati Pandoc corrispondente al documento. Quindi fixmath
trasforma questa struttura, modificando i commenti HTML speciali in blocchi e inline LaTeX non elaborati. (Vedi Scripting with pandoc per una spiegazione.) Infine convertiamo da JSON a LaTeX.
fonte
2012-07-12 21:59:08
C'è qualche modo per rendere eseguibile 'lavoro fixmath' con' Pandoc-ruby'? – Daniel
E come dovrebbe essere scritto lo script Haskell per non convertire la matematica che è delimitata da '\ (\)'? http://stackoverflow.com/questions/20492982/convert-html-and-inline-mathjax-math-to-latex-with-pandoc-ruby – Daniel
Vedere la mia ultima risposta. –