Qual è il modo migliore per incorporare LaTeX in una pagina Web?
Domanda
Non sto chiedendo di convertire un documento LaTeX in HTML.
Quello che mi piacerebbe poter fare è avere un modo per usare i comandi matematici LaTeX in un documento HTML e farlo apparire correttamente in un browser. Questo potrebbe essere fatto lato server o client.
Soluzione
MediaWiki può fare quello che stai cercando. Utilizza Texvc ( http://en.wikipedia.org/wiki/Texvc ) che " convalida (AMS) espressioni matematiche LaTeX e le converte in grafica HTML, MathML o PNG. " Sembra quello che stai cercando.
Consulta l'articolo di Wikipedia su come gestiscono le equazioni matematiche qui: http: //en.wikipedia. org / wiki / aiuto: Formula . Hanno anche un ampio riferimento su LaTeX e pro / contro dei diversi tipi di rendering (PNG / MathML / HTML).
MediaWiki utilizza un sottoinsieme del markup TeX, tra cui alcune estensioni da LaTeX e AMS-LaTeX, per matematica formule. Genera PNG immagini o markup HTML semplice, a seconda delle preferenze dell'utente e del complessità dell'espressione. Nel futuro, poiché più browser sono più intelligenti, sarà in grado di generare potenziato HTML o persino MathML in molti casi. (Vedi blahtex per informazioni su lavori in corso sull'aggiunta del MathML supporto).
Più precisamente, MediaWiki filtra il markup tramite Texvc, che a sua volta passa i comandi a TeX per il rendering effettivo. Quindi, solo un limitato parte dell'intero linguaggio TeX è supportato; vedi sotto per i dettagli. ...
Pro di HTML
- Le formule HTML in linea si allineano sempre correttamente con il resto dell'HTML testo.
- Lo sfondo, la dimensione del carattere e la faccia della formula corrispondono al resto dell'HTML contenuto e aspetto rispetta Impostazioni CSS e browser.
- Le pagine che utilizzano HTML verranno caricate più velocemente.
Pro di TeX
- TeX è semanticamente superiore all'HTML. In TeX, " x " si intende "variabile matematica x", mentre in HTML " x " potrebbe significare qualsiasi cosa. Le informazioni sono state irrevocabilmente perse. Questo ha molteplici vantaggi:
- TeX può essere trasformato in HTML, ma non viceversa. Questo significa che acceso il lato server possiamo sempre trasforma una formula, in base alla sua complessità e posizione all'interno del testo, preferenze dell'utente, tipo di browser, ecc. Pertanto, dove possibile, tutti i vantaggi dell'HTML possono essere mantenuto, insieme al vantaggi di TeX. È vero che il la situazione attuale non è l'ideale, ma non è una buona ragione per lasciar perdere informazioni / contenuti. È più un motivo per contribuire a migliorare la situazione.
- TeX può essere convertito in MathML per browser che lo supportano, quindi mantenendo la sua semantica e permettendola essere reso come un vettore.
- TeX è stato specificamente progettato per le formule di composizione, quindi lo è l'input più facile e più naturale, e l'output è più esteticamente piacevole.
- Durante la scrittura in TeX, gli editor non devono preoccuparsi del supporto del browser, poiché viene reso in un'immagine dal server. Formule HTML, dall'altro mano, può finire per essere reso incoerente delle intenzioni dell'editor (o per niente), da alcuni browser o versioni precedenti di un browser.
Altri suggerimenti
Preferisco MathJax rispetto alle soluzioni che scelgono di eseguire il rendering delle immagini (che causa problemi di aliasing).
MathJax è un motore di rendering Javascript open source per la matematica. Utilizza CSS e Webfonts invece di immagini o flash e può eseguire il rendering di LaTeX o MathML. In questo modo non hai problemi con lo zoom ed è persino compatibile con lo screen reader.
Una volta ho sviluppato un plugin jQuery che in effetti fa questo: jsLaTeX
Ecco l'esempio più semplice di come può essere utilizzato:
$(".latex").latex();
<div class="latex">
\int_{0}^{\pi}\frac{x^{4}\left(1-x\right)^{4}}{1+x^{2}}dx =\frac{22}{7}-\pi
</div>
Quanto sopra genererà la seguente equazione LaTeX sulla tua pagina:
La Pagina dimostrativa del plugin contiene più esempi di codice e demo.
Storicamente, il rendering di LaTeX e l'estrazione di un'immagine è stata la soluzione migliore per la matematica multi-piattaforma e cross-browser. Sempre più, il MathML sta diventando un'alternativa ragionevole. Ecco un convertitore online che emetterà MathML dal markup Tex, che tu può quindi essere incorporato nella tua pagina web. So che i browser basati su Gecko come Firefox e Camino funzionano bene con MathML, così come Opera. IE non funziona immediatamente, ma ci sono plugin disponibili (come questo ) .
Texvc è un'ottima scoperta! L'output HTML vanilla dovrebbe funzionare bene se sei principalmente interessato a apice / pedice / corsivo / simboli comuni, ma per cose più complesse, tieni presente che i siti orientati alla matematica più popolari là fuori (ad esempio Wolfram ) genera immagini, quindi potrebbero esserci solo così tante cose che puoi fare se sei interessato alla compatibilità tra browser: - (
Ho letto tutte le risposte qui e sono sorpreso che nessuno abbia menzionato la conversione da PDF a HTML. Se usi pdf2htmlEX , creerà pagine web perfette da un pdf . Devi solo compilare il tuo lattice in pdf (pdflatex).
Di default genera un singolo file html, con i contenuti del tuo PDF realizzati in CSS, javascript e html. Ho provato molti strumenti per convertire il lattice in html e questa è di gran lunga la soluzione migliore e più semplice che ho trovato .
Puoi provare LaTexRenderer . Non so se sia il migliore, ma funziona.
Sto iniziando a esaminare questo da solo e sembra che le cose si siano evolute. Mi sono imbattuto questa demo comparativa di KaTeX e MathJax .
Breve storia (al momento della stesura di questo documento) :
- Le frazioni all'interno di una matrice si incontrano in KaTeX, ma non in MathJax (vedi "prodotto incrociato")
- All'interno del simbolo della radice quadrata (o ennesima), esponenti e radici quadrate nidificate sembrano imbattersi nella linea superiore orizzontale (vedi " Frazioni ripetute " e " ennesima radice " ;.)
- MathJax ha un carattere leggermente più audace e più grande, KaTeX è leggermente più magro.
Ma forse il più decisivo di tutti, ho scoperto che l'elaborazione totale di MathJax per la pagina è stata in media di 1674 ms per tre sessioni. Al contrario, KaTeX ha una media di 128 ms , che è un ordine di grandezza migliore!
Esistono altri punti di confronto da considerare quando si guardano i rispettivi siti Web:
- Il sito Web principale di KaTeX afferma di supportare la maggior parte, ma non tutta, di LaTeX. Elencano le loro funzioni supportate qui . MathJax esprime anche alcune delle sue limitazioni . Anche se è difficile sapere da una breve scia di questi che alla fine ha "meglio" supporto. Alcuni blog che ho incontrato dicono che KaTeX ha meno supporto, ma altri hanno affermato che KaTeX ha migliorato significativamente il supporto negli ultimi anni.
- Il sito Web MathJax pubblicizza il supporto di MathML sia per l'input che per l'output. Alcuni problemi di KaTeX sul suo github qui e qui indicano che supportano MathML per l'output, ma non per l'input (non so molto sul MathML, ma almeno sembra importante se vuoi aiutare gli utenti con disabilità visive).
- Rendering KaTeX in modo sincrono , quindi non ridisegna la pagina (parte di ciò che la rende più veloce). Ma in cambio blocca temporaneamente il browser.
- StackOverflow è un partner di MathJax (vedi qui ). È utilizzato su alcuni siti StackExchange, sebbene non su StackOverflow stesso a causa di rendimento del tempo di caricamento della pagina. Al contrario, KaTeX è stato sviluppato dalla Kahn Academy.
Ti incoraggio sicuramente a guardare il MathML se si adatta a quello che stai cercando, ma un po 'di lavoro con JsTeX potrebbe darti tutto il necessario.