Usando MathJax con Jekyll
(5)
Tengo un blog de Jekyll y quiero usar MathJax con él, en el sentido de que quiero poder escribir algo así como
$$/sum_{n=1}^/infty 1/n^2 = /frac{/pi^2}{6}$$
en mis archivos de rebajas, y tiene la expresión LaTeX correcta generada con MathJax, de forma similar a cómo se hace en math.stackexchange .
¿Cuál es la forma más fácil de hacer esto? Actualmente tengo el archivo math.stackexchange (GitHub math.stackexchange ) en mi directorio, y pensé que podría tener un archivo simple llamado mathjs
en mi directorio _includes
con la línea
<script src="path/to/jsmath.js></script>
e incluir eso en cada publicación a través de
{% include mathjs %}
pero esto no parece funcionar, cuando ejecuto jekyll --server
se genera la página, pero ninguno de los contenidos está visible.
¿Voy por esto de la manera correcta? ¿Hay una mejor manera de usar MathJax con Jekyll?
Ciertamente puedes usar mathjax con Jekyll. Para que esto funcione, asegúrese de que
- Si está escribiendo su publicación en el descuento, su intérprete de descuento no está presionando su entrada mathjax. La mejor forma de protegerlo que he encontrado es colocar siempre las matemáticas de pantalla en elementos
<div>
y matemática en línea en elementos<span>
, que la mayoría de los intérpretes de rebajas dejarán solos. ¿La línea de JavaScript se muestra correctamente en la fuente html? Me resulta más fácil y rápido señalar el CDN de mathjax en lugar de proporcionar mi propia copia. Intenta usar la línea
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
(Esas opciones de configuración le permiten usar más notación tex para iniciar su entorno matemático, como /begin{equation}
, etc.).
Tal vez haya algún problema con su script jsmath.js
; la versión de CDN será más rápida y probablemente más confiable. (Tengo la carga de Javascript en mi pie de página en cada página, pero por supuesto tu estrategia con include tiene sentido si no quieres cargar el javascript cuando no lo necesitas).
Podríamos ayudar más si nos da un enlace a su blog? Puedes ver algunos ejemplos en mi blog (también tiene un enlace a la configuración de Jekyll en github si eso ayuda).
Escribí una publicación en el blog sobre cómo configurar MathJax hace un tiempo: cwoebker.com/posts/latex-math-magic
En esencia, tienes que evitar que Markdown se meta con el MathJax.
Terminé usando bloques de código, que funcionó bien para mí. Entonces, ya sea usando al menos 4 espacios antes de escribir algo o usar el símbolo agudo: `
; Desafortunadamente, MathJax omite las etiquetas <code>
de forma predeterminada, ya que no quiere convertir código que no debería.
Entonces, en algún lugar de su archivo de diseño principal, debe agregar un pequeño código de JavaScript:
MathJax.Hub.Config({
tex2jax: {
skipTags: [''script'', ''noscript'', ''style'', ''textarea'', ''pre'']
}
});
Además, tenemos que decirle a MathJax que ignore los bloques de código que no sean de látex o los bloques de código normales:
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'';
}
});
En su punto, todos nuestros bloques de código de látex van a tener la cadena has-jax en su nombre de clase. Por lo tanto, podemos aplicar un estilo simple en nuestras hojas de cálculo para darle un estilo propio.
code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;}
Puede que no sea el mejor enfoque, pero funcionó en mi blog durante los últimos años y nunca encontré ningún problema adicional.
Puedes probar mi generador de blogs estáticos: Jekyde . Jekyde es similar a Jekyll, pero se ocupa bien de LaTeX en el archivo Markdown. Solo necesita poner sus fórmulas dentro de $ ... $ y $$ ... $$. Además, Jekyde contiene un editor de marcas en el navegador con la vista previa de LaTeX.
Si está utilizando kramdown
como su sabor de kramdown
, es fácil. Kramdown tiene soporte mathjax
para mathjax
.
Agregue esto antes de la etiqueta
</head>
en su diseño predeterminado.<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js? config=TeX-AMS-MML_HTMLorMML"></script>
Establezca esto en verdadero en
_config.yml
, después de la línea demarkdown: kramdown
.mathjax: true
Hecho. Por el renegado de Mathjax
- en línea, use
/( ... /)
, bloquear, use
/[ ... /]
.Lo único a lo que hay que prestarle atención es al escaparse de la barra invertida cuando se usa la marca, por lo que los delimitadores se convierten en
//( ... //)
y//[ ... //]
para las matemáticas en línea y en bloque, respectivamente.
- en línea, use
Aquí hay un ejemplo de representación en línea de MathJax
//( 1/x^{2} //)
, y aquí está una representación en bloque://[ /frac{1}{n^{2}} //]
.
Yo uso esto en mi blog.
Si tiene suficiente control sobre el proceso de publicación (por ejemplo, está ejecutando Jekyll), una solución fácil es cambiar el analizador de rebajas a uno que admita TeX. Por ejemplo, usando kramdown :
gem install kramdown
Cambie la línea de _config.yml
en _config.yml
a
markdown: kramdown
y agrega algo como
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
a _layouts/default.html
. Ahora puedes simplemente marcar cualquier matemática en tus publicaciones con $$
.