Используйте MathJax с kramdown, без защиты в div (как рекламируется!) - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь настроить jekyll для правильного отображения математики.

Проблема в том, что ничего не отображается, если я не вкладываю уравнения в теги div для защиты их от анализатора уценки: (

---
layout: default
math:   true
---

# Using Mathjax

along markdown parsers is a real pain...

$$ a + b = c $$

doesn't show, though the following does:

<div> 
$$ x + y + c $$
</div>

Тесты макета включают в себя следующий скрипт mathjax через include {% if page.math %}:

<script async src="https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_CHTML"></script>

Я в замешательстве, потому что:

  • Джекил делает вид, что по умолчанию использует kramdown
  • kramdown
    притворяется, что поддерживает mathjax по умолчанию с указанным выше синтаксисом .

На этой топике уже много всего, c, однако многое устарело! Любая помощь для простого и простого Конфигурация будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 апреля 2020

Проблема в том, что вывод kramdown больше не совместим с mathjax v3.

Вы можете проверить, что kramdown выполняет свою работу при вложении $$ a + b = c$$ в рекомендуемые теги сценария:

<script type="tex/math"> a = b + c </script> 

Однако mathjax больше не использует эти теги сценария, как упоминалось здесь (последняя пуля).

Поэтому для работы kramdown с mathjax необходимо:

  • включить надежный источник в mathjax 2: мои попытки не увенчались
  • включить этот сложный объект конфигурации mathjax 3 до скрипт mathjax, передавая ему функцию для поиска этих тегов
MathJax = {
  options: {
    renderActions: {
      find: [10, function (doc) {
        for (const node of document.querySelectorAll('script[type^="math/tex"]')) {
          const display = !!node.type.match(/; *mode=display/);
          const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
          const text = document.createTextNode('');
          node.parentNode.replaceChild(text, node);
          math.start = {node: text, delim: '', n: 0};
          math.end = {node: text, delim: '', n: 0};
          doc.math.push(math);
        }
      }, '']
    }
  }
};

Не могу понять, почему эта обратная боеспособность вместо простого переключателя опций ...

...