Quel est le meilleur moyen d'intégrer LaTeX dans une page Web?
Question
Je ne vous demande pas de convertir un document LaTeX en HTML.
Ce que j'aimerais pouvoir faire, c'est avoir un moyen d'utiliser les commandes mathématiques LaTeX dans un document HTML et de les afficher correctement dans un navigateur. Cela pourrait être fait côté serveur ou client.
La solution
MediaWiki peut faire ce que vous recherchez. Il utilise Texvc ( http://fr.wikipedia.org/wiki/Texvc ), qui " valide (AMS) les expressions mathématiques LaTeX et les convertit en graphiques HTML, MathML ou PNG. " Cela ressemble à ce que vous recherchez.
Consultez l'article de Wikipedia sur la façon dont ils gèrent les équations mathématiques ici: http: //en.wikipedia. org / wiki / Help: Formule . Ils ont également une vaste référence sur LaTeX et des avantages / inconvénients des différents types de rendu (PNG / MathML / HTML).
MediaWiki utilise un sous-ensemble du balisage TeX, y compris des extensions de LaTeX et AMS-LaTeX, pour les mathématiques formules. Il génère soit PNG images ou simple balisage HTML, en fonction des préférences de l'utilisateur et de la complexité de l'expression. dans le l'avenir, car de plus en plus de navigateurs sont plus intelligents, il sera capable de générer amélioré HTML ou même MathML dans de nombreux cas. (Voir blahtex pour des informations sur travaux en cours sur l'ajout de MathML soutien.)
Plus précisément, MediaWiki filtre les balisage via Texvc, qui à son tour passe les commandes à TeX pour le rendu réel. Ainsi, seul un nombre limité de une partie du langage TeX complet est prise en charge; voir ci-dessous pour plus de détails. ...
Avantages de HTML
- Les formules HTML en ligne s'alignent toujours correctement avec le reste du code HTML. texte.
- L'arrière-plan, la taille de la police et le visage de la formule correspondent au reste du code HTML. le contenu et le respect de l'apparence Paramètres CSS et du navigateur.
- Les pages utilisant HTML se chargeront plus rapidement.
Avantages de TeX
- TeX est sémantiquement supérieur au HTML. Dans TeX, " x " veux dire "variable mathématique x", alors que dans HTML " x " pourrait signifier n'importe quoi. L'information a été irrévocablement perdue. Cela présente de nombreux avantages:
- TeX peut être transformé en HTML, mais pas l'inverse. Cela signifie que le côté serveur on peut toujours transformer une formule, basée sur sa la complexité et l'emplacement dans le texte, préférences utilisateur, type de navigateur, etc. Par conséquent, où possible, tous les avantages du HTML peuvent être conservés avec les avantages de TeX. C'est vrai que le la situation actuelle n’est pas idéale, mais ce n'est pas une bonne raison de laisser tomber informations / contenu. C'est plus un raison d'aider à améliorer la situation.
- TeX peut être converti en MathML pour les navigateurs qui le supportent, donc garder sa sémantique et lui permettre être rendu sous forme de vecteur.
- TeX a été spécialement conçu pour la composition de formules, la saisie est donc plus facile et plus naturel, et la sortie est plus esthétique.
- Lors de l'écriture dans TeX, les éditeurs ne doivent pas s'inquiéter de la prise en charge du navigateur, car il est rendu dans une image par le serveur. Formules HTML, d'autre part main, peut finir par être rendu incohérent des intentions de l'éditeur (ou pas du tout), par certains navigateurs ou anciennes versions d'un navigateur.
Autres conseils
Je préfère MathJax les solutions qui choisissent de rendre les images (ce qui cause des problèmes d'aliasing).
MathJax est un moteur de rendu Javascript open source pour les mathématiques. Il utilise CSS et Webfonts au lieu d'images ou de flash et peut rendre LaTeX ou MathML. Ainsi, vous n’avez pas de problèmes de zoom et il est même compatible avec les lecteurs d’écran.
J'ai déjà développé un plugin jQuery qui a en fait ceci: jsLaTeX
Voici l'exemple le plus simple d'utilisation:
$(".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>
Ce qui précède générera l’équation LaTeX suivante sur votre page:
La page de démonstration du plug-in contient davantage d'exemples de code et de démos.
Historiquement, le rendu de LaTeX et l'extraction d'une image étaient votre meilleur choix pour des opérations mathématiques multiplates-formes et multi-navigateurs. De plus en plus, MathML devient une alternative raisonnable. Voici un convertisseur en ligne qui émettra du balisage MathML à partir de Tex, qui vous peut ensuite intégrer dans votre page Web. Je sais que les navigateurs basés sur Gecko, comme Firefox et Camino, fonctionnent bien avec MathML, tout comme Opera. Internet Explorer ne fonctionne pas immédiatement, mais des plugins sont disponibles (comme celui-ci ). .
Texvc est une excellente trouvaille! La sortie HTML vanilla devrait bien fonctionner si vous êtes principalement intéressé par les exposants / indices / italiques / symboles communs, mais pour les choses plus complexes, sachez que les sites les plus populaires axés sur les mathématiques (p. Ex. Wolfram ) génèrent des images. Par conséquent, vous ne pouvez peut-être pas en faire plus si la compatibilité entre navigateurs vous intéresse: - (
J'ai lu toutes les réponses ici, et je suis surpris que personne n'ait mentionné la conversion de PDF en HTML. Si vous utilisez pdf2htmlEX , il créera une page Web parfaite à partir d'un fichier PDF . Il vous suffit de compiler votre latex au format pdf (pdflatex).
Par défaut, il génère un seul fichier html, avec le contenu de votre PDF composé de CSS, javascript et html. J'ai essayé beaucoup d'outils pour convertir le latex en HTML et c'est de loin la solution la plus simple et la plus simple que j'ai trouvée .
Vous pouvez essayer LaTexRenderer . Je ne sais pas si c'est le meilleur, mais ça marche.
Je commence à me pencher là-dessus et il semble que les choses ont évolué. J'ai rencontré cette démo de comparaison de KaTeX et MathJax .
Longue histoire courte (au moment d'écrire ces lignes) :
- Des fractions à l'intérieur d'une matrice se rencontrent dans KaTeX, mais pas dans MathJax (voir "Produit croisé")
- À l'intérieur du symbole de racine carrée (ou nième), les exposants et les racines carrées imbriquées semblent se heurter à la ligne supérieure horizontale (voir "Répétition de fractions" et "racine nième".)
- MathJax a une police légèrement plus épaisse et plus large, KaTeX est légèrement plus maigre.
Mais peut-être le plus décisif de tous, j’ai constaté que le traitement total de MathJax pour la page était en moyenne de 1674 ms pour trois exécutions. En revanche, la moyenne KaTeX est 128 ms , ce qui est meilleur d'un ordre de grandeur!
Lorsque vous parcourez leurs sites Web respectifs, vous devez prendre en compte d'autres points de comparaison:
- Le site Web principal de KaTeX affirme prendre en charge la plupart des logiciels LaTeX, mais pas tous. Ils répertorient les fonctions prises en charge ici . MathJax exprime également certaines de ses . Bien que ce soit difficile de savoir à partir d'un survol rapide de ceux qui à la fin a "meilleur" soutien. Certains blogs que j'ai consultés disent que KaTeX a moins de soutien, mais d'autres ont déclaré que KaTeX avait considérablement amélioré son soutien au cours des dernières années.
- Le site Web de MathJax annonce la prise en charge de MathML pour les entrées et les sorties. Certains problèmes de KaTeX sur son site github ici et ici indique qu'ils prennent en charge MathML pour la sortie, mais pas pour la saisie (je ne connais pas beaucoup MathML, mais cela semble au moins important si vous souhaitez aider les utilisateurs malvoyants).
- KaTeX rend de manière synchrone , pour ne pas rediffuser la page (une partie de ce qui la rend plus rapide). Mais en échange, il verrouille temporairement le navigateur.
- StackOverflow est un partenaire de MathJax (voir ici ). Il est utilisé sur certains sites StackExchange, mais pas sur StackOverflow lui-même en raison de performances de chargement de la page. KaTeX a été développé par la Kahn Academy.
Je vous encouragerais certainement à regarder MathML si cela correspond à ce que vous recherchez, mais un peu de travail avec JsTeX pourrait vous donner tout ce dont vous avez besoin.