Использование MathJax с Джекилом


у меня есть блог Jekyll, и я хочу использовать MathJax с ним, в том смысле, что я хочу иметь возможность вводить что-то вроде

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

в моих файлах markdown и имеют правильное выражение LaTeX, созданное с помощью MathJax, аналогично тому, как это делается в математика.stackexchange.

какой самый простой способ сделать это? В настоящее время у меня есть файл jsmath.js (GitHub gist) в моем каталоге, и я думал, что у меня может быть простой файл с именем mathjs в своем _includes каталог со строкой

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

и включите это в каждый пост через

{% include mathjs %}

но это, кажется, не работает - когда я бегу jekyll --server страница генерируется, но содержимое не отображается.

Я иду по этому правильному пути? Есть ли лучший способ использовать MathJax с Джекилом?

5 55

5 ответов:

конечно, вы можете использовать mathjax с Jekyll. Чтобы получить эту работу, убедитесь, что

  1. если вы пишете свой пост в markdown, ваш интерпретатор markdown не забивает ваш вход mathjax. Лучший способ защитить его, который я нашел, - это всегда отображать математику в <div> элементы и встроенная математика в <span> элементы, которые большинство интерпретаторов markdown оставят в покое.
  2. правильно ли отображается строка javascript в источнике html? Я нахожу это проще и быстрее, чтобы указать на MathJax CDN, а не предоставить свою собственную копию. Попробуйте использовать строку

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

(эти параметры конфигурации позволяют использовать больше обозначений tex для запуска математической среды, например \begin{equation} и т. д.).

возможно, есть некоторые проблемы с вашим jsmath.js script; версия CDN будет быстрее и, вероятно, более надежной. (У меня есть загрузка javascript в моем нижнем колонтитуле на каждой странице, но, конечно, ваша стратегия с include имеет смысл, если вы не хотите загружать javascript, когда он вам не нужен.)

мы могли бы помочь больше, если вы даете нам ссылку на свой блог? Вы можете увидеть некоторые примеры мой блог (имеет ссылку на установку Jekyll на github тоже, если это поможет).

если у вас есть достаточный контроль над процессом публикации (например, вы сами запускаете Jekyll), то простое решение это переключение парсера markdown на тот, который поддерживает TeX. Например, с помощью kramdown:

gem install kramdown

изменить markdown в строке _config.yml до

markdown: kramdown

и добавить что-то вроде

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

до _layouts/default.html. Теперь вы можете просто отметьте любую математику в своих сообщениях с помощью $$.

я написал сообщение в блоге о настройке MathJax некоторое время назад: Latex Math Magic

по сути, вы должны остановить уценки от Мессинг С MathJax.

в конечном итоге я использовал блоки кода, которые отлично работали для меня. Поэтому либо используйте по крайней мере 4 пробела, прежде чем писать что-то, либо используйте острый символ: `; К сожалению MathJax пропускает <code> теги по умолчанию, так как он не хочет конвертировать код, который он не стоит.

Итак, где-то в вашем основном файле макета вы должны добавить немного кода javascript:

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

кроме того, мы должны сказать MathJax игнорировать не латексные кодовые блоки или обычные кодовые блоки:

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';
    }
});

в его точке все наши блоки кода latex будут иметь строку has-jax в своем имени класса. Поэтому мы можем применить некоторые простые стили в CSS листы выдать свой собственный стиль.

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

может быть не лучший подход но он работал для моего блога в течение последних лет, и я никогда не сталкивался с какой-либо дальнейшей проблемой с ним.

если вы используете kramdown как ваш вкус уценки, это легко. Kramdown имеет встроенную поддержку mathjax.

  1. добавить перед </head> тег в шаблоне по умолчанию.

    <script type="text/javascript" async 
    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?
    config=TeX-AMS-MML_HTMLorMML"></script>
    
  2. установите значение true в _config.yml, после markdown: kramdown линии.

    mathjax: true
    
  3. сделано. Для рендеринга Mathjax

    • inline, используйте \( ... \),
    • блок, использовать \[ ... \].

      единственное, на что нужно обратить внимание, это экранирование обратной косой черты при использовании markdown, поэтому разделители становятся \( ... \) и \[ ... \] для встроенной и блочной математики соответственно.

  4. здесь пример встроенного рендеринга MathJax \( 1/x^{2} \), а вот блок рендеринга: \[ \frac{1}{n^{2}} \].

я использую это в своем блоге.

вы можете попробовать мой статический генератор блог: Jekyde. Jekyde похож на Jekyll, но он хорошо заботится о LaTeX в файле Markdown. Вам нужно только поместить свои формулы внутри $...$ и.$$ ..$$. Также Jekyde содержит редактор markdown в браузере с предварительным просмотром LaTeX.