Расширение MathJax mhchem в Sphinx

Как включить MathJax расширение mhchem в Sphinx? MathJax загружается из CDN.


person remus    schedule 08.10.2013    source источник


Ответы (3)


Добавьте следующий блок в свой первый файл. Или см. Добавление тега сценария javascript в какое-либо место, чтобы он работал для каждого файла в документации по sphinx, чтобы добавить его в свой шаблон, чтобы его можно было применить глобально.

.. raw:: html

    <script type="text/javascript" >
    MathJax.Hub.Config({
        TeX: { extensions: ["mhchem.js"] }
    });
    </script>
person Sunhwan Jo    schedule 10.03.2014
comment
Когда я добавляю это напрямую, я получаю Uncaught ReferenceError: MathJax is not defined. Похоже, что Sphinx по умолчанию не определяет MathJax, хотя я могу его использовать. В частности, не гарантируется загрузка скрипта MathJax до запуска необработанного HTML. - person Ethan Keller; 06.07.2018

Чтобы решить эту проблему для всех первых файлов, я разделил mathjax на подклассы ... AKA, я сделал еще один файл js в моем каталоге _static, который загружал mathjax, а затем вручную добавлял нужное мне расширение (отменить в моем случае). Затем я указал этот путь для параметра mathjax_path в conf.py. Содержимое mathjax_config.js:

// Dynamically load script then call helper when script has loaded.
function dynamicallyLoadScript(url, helper) {
    var script = document.createElement("script"); // Make a script DOM node
    script.src = url; // Set it's src to the provided URL

    document.head.appendChild(script); // Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead)
    script.onreadystatechange= function () {
      if (this.readyState == 'complete') helper();
     }
     script.onload= helper;
}

// Configure MathJax
function mathjax_config() {
  MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
  MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions.macros,{
    cancel: ["Extension","cancel"],
    bcancel: ["Extension","cancel"],
    xcancel: ["Extension","cancel"],
    cancelto: ["Extension","cancel"]
    });
  });
}
var mathjax_url = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
dynamicallyLoadScript(mathjax_url, mathjax_config)
person Ethan Keller    schedule 06.07.2018

Поскольку ответ Сунхван Джо не сработал для меня, вот моя попытка решить эту проблему:

.. math::

   \require{mhchem}
   \ce{E + S <=> ES -> ES* -> E + P}

Думаю, это просто и элегантно. Кроме того, вам не нужно вызывать \require{mhchem} более одного раза в одном .rst файле.

person schneiderfelipe    schedule 11.10.2019