Как настроить Mathjax в Python Django

Я хотел бы знать, как настроить Mathjax в Django в системе вопросов и ответов, где вопросы и ответы будут основаны на формате LaTeX.

Я попытался добавить:

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

в шаблон html, где вопросы и ответы будут отображаться безрезультатно.

Спасибо.


person XinYi Chua    schedule 12.05.2012    source источник
comment
Примечание из будущего: срок службы cdn.mathjax.org подходит к концу, проверьте mathjax. org/cdn-shutting-down для советов по миграции (и, возможно, обновите свой пост для будущих читателей).   -  person Peter Krautzberger    schedule 21.04.2017


Ответы (3)


Если содержимое страницы создается динамически, вам нужно будет вызвать MathJax после загрузки содержимого. Подробнее см. в документации. Основная идея заключается в том, что вы должны включить

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

в javascript, который выполняется после размещения содержимого.

person Davide Cervone    schedule 12.05.2012
comment
Привет, содержимое извлекается из базы данных, и я пробовал: ‹script type=text/javascript src=/mathjax/config/TeX-AMS_HTML.js› ‹/script›, но это тоже не работает. Я озадачен. - person XinYi Chua; 18.05.2012
comment
Когда вы добавляете новый контент на страницу после того, как MathJax уже набрал его в первый раз, как это звучит, как вы делаете здесь, когда вы извлекаете данные из базы данных, вам нужно сказать MathJax повторно набрать страницу. В javascript, который добавляет новый контент на страницу, вы должны включить команду, которую я перечислил выше. См. ссылку на документацию, которую я включил выше, чтобы увидеть более подробную информацию о процессе. - person Davide Cervone; 18.05.2012
comment
Привет, я выяснил, что на html-странице в теге ‹div› и при наличии тега ‹pre› Mathjax не работает там, где математические формулы находятся внутри тега ‹pre›. Есть ли обходное решение вместо удаления тега ‹pre›? Спасибо. - person XinYi Chua; 19.05.2012
comment
Вы правы, MathJax не обрабатывает содержимое тегов <pre> или <code>. Вы можете удалить pre из массива skipTags в своей конфигурации. Подробнее см. в документации по параметрам конфигурации tex2jax. - person Davide Cervone; 19.05.2012

ДЛЯ Динамического контента вот рабочее решение. Я использовал AsciiMath Input в качестве формата ввода в mathjax, который включает ASCIIMathML. В base.html добавьте следующие скрипты:

<script>
  MathJax = {
    loader: {load: ['input/asciimath', 'output/chtml']}
  }
</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/startup.js"></script>
<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">

and remember to enclose the dynamic text by back-ticks”, i.e., `...` So in the django-admin you can simply enter sqrt(50) as ` sqrt(50) ` or ` x^2 ` and the dynamic content which is passed from view to the template, in the template you surround {{e1}} by back-ticks

` {{ e1 }} `

instead of
{{ e1 }} where e1 is the dynamic content. So if e1 which was earlier displayed in plain text as 2*sqrt(2) will now be displyed as 2√2.

Дополнительные сведения: http://docs.mathjax.org/en/latest/input/asciimath.html#asciimath-support

person Mint.High    schedule 29.03.2020

см. https://docs.mathjax.org/en/latest/web/configuration.html. Чтобы демонстрация, указанная здесь, работала, вы также должны добавить ['\(', '\)'] в inlineMath:


<script>
MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']]
  },
  svg: {
    fontCache: 'global'
  }
};
</script>
<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
person xiaoou wang    schedule 31.12.2020