75 votes

Utiliser MathJax avec Jekyll

J'ai un Jekyll blog, et je veux utiliser MathJax, dans le sens que je veux être en mesure de taper quelque chose comme

$$\sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6}$$

dans mes fichiers markdown, et ont la bonne expression LaTeX généré avec MathJax, d'une manière similaire à la façon dont il est fait à math.stackexchange.

Quelle est la meilleure façon de le faire? Actuellement, j'ai le fichier jsmath.js (GitHub gist) dans mon répertoire, et j'ai pensé que je pourrais avoir un simple fichier nommé mathjs mon _includes répertoire avec la ligne

<script src="path/to/jsmath.js></script>

et de l'inclure dans chaque post via

{% include mathjs %}

mais cela ne semble pas fonctionner - lorsque j'exécute jekyll --server la page est générée, mais aucun contenu n'est visible.

Je vais sur ce la bonne manière? Est-il une meilleure façon d'utiliser MathJax avec Jekyll?

54voto

cboettig Points 2483

Certes, vous pouvez utiliser mathjax avec Jekyll. Pour obtenir ce travail assurez-vous que

  1. Si vous êtes à la rédaction de votre post en markdown, votre markdown interprète n'est pas le martelage de votre mathjax d'entrée. La meilleure façon de protéger ce que j'ai trouvé est de toujours mettre de l'affichage de mathématiques en <div> - éléments et en ligne de mathématiques en <span> - éléments, dont la plupart des démarques interprètes de le laisser seul.
  2. Est le javascript ligne s'afficher correctement dans la source html? Je trouve ça plus facile et plus rapide pour pointer vers le mathjax CA plutôt que de donner mon propre exemplaire. Essayez d'utiliser la ligne de

    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

(Ces options de configuration vous permettent d'utiliser plus de la notation tex pour démarrer votre de mathématiques de l'environnement, tels que l' \begin{equation}, etc).

Peut-être il ya un problème avec votre jsmath.js script; la version CAN sera plus rapide et beaucoup plus fiable. (J'ai le javascript de la charge dans mon pied de page sur chaque page, mais bien sûr de votre stratégie avec d'inclure de sens que si vous ne voulez pas charger le javascript lorsque vous n'en avez pas besoin.)

Nous avons pu aider plus si vous nous donner un lien vers votre blog? Vous pouvez voir quelques exemples sur mon blog (le lien vers Jekyll installation sur github trop si ça peut aider).

51voto

Caramdir Points 213

Si vous avez suffisamment de contrôle sur le processus de publication (par exemple, vous exécutez Jekyll vous-même), une solution simple est de passer la démarque de l'analyseur qui prend en charge TeX. Par exemple, à l'aide de kramdown:

gem install kramdown

Modifier l' markdown ligne _config.yml de

markdown: kramdown

et d'ajouter quelque chose comme

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

d' _layouts/default.html. Maintenant, vous pouvez simplement marquer les mathématiques dans vos messages avec $$.

6voto

cwoebker Points 1079

J'ai écrit un billet de blog à propos de la configuration MathJax un moment de retour: Latex Mathématiques Magiques

En essence, vous devez arrêter le Démarque de déconner avec le MathJax.

J'ai fini à l'aide de blocs de code, ce qui a bien fonctionné pour moi. Donc, soit à l'aide d'au moins 4 espaces avant de vous écrire quelque chose, ou à l'aide de l'aigu symbole: `; Malheureusement MathJax est de sauter <code> tags par défaut, car il ne veut pas convertir un code qu'il ne devrait pas.

Donc quelque part dans votre fichier de mise en page, vous devez ajouter un peu de code javascript:

MathJax.Hub.Config({
  tex2jax: {
    skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
  }
});

De plus, nous devons dire MathJax pour ignorer non-latex code-blocs ou normal blocs de code:

MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i=0; i < all.length; i += 1) {
        all[i].SourceElement().parentNode.className += ' has-jax';
    }
});

De cette façon, tous nos latex blocs de code ont le a-jax chaîne dans leur nom de classe. Par conséquent, nous pouvons appliquer un peu de style simple dans notre css feuilles de donner notre propre style.

code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;}

Peut-être pas la meilleure approche, mais cela a fonctionné pour mon blog depuis des années et je n'ai jamais rencontré aucun problème avec elle.

2voto

Z.H. Points 157

Vous pouvez essayer mon générateur de blog statique: Jekyde . Jekyde est similaire à Jekyll, mais il prend bien en charge le fichier LaTeX dans Markdown. Il vous suffit de mettre vos formules dans $ ... $ et $$ ... $$. De plus, Jekyde contient un éditeur de démarques dans le navigateur avec aperçu LaTeX.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X