Ответ 1
Я нашел обходное решение, но это не очень.
Чтобы иметь числовые уравнения MathJax, вам нужно добавить флаг конфигурации (из MathJax docs). Флаги конфигурации в IPython установлены в IPython/html/static/notebook/js/mathjaxutils.js
(как минимум, на IPython 1.1). Кажется, что в этом должен быть параметр конфигурации, но я не смог его найти. Вместо этого я отредактировал это вручную:
>>> locate mathjaxutils.js
/home/me/.virtualenvs/nengo/lib/python2.7/site-packages/IPython/html/static/notebook/js/mathjaxutils.js
>>> emacs -nw `locate mathjaxutils.js`
В этом файле измените вызов MathJax.Hub.Config
, чтобы включить TeX: { equationNumbers: { autoNumber: "AMS" } },
. Он должен выглядеть так:
// MathJax loaded
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }, # Add this line
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
processEnvironments: true
},
displayAlign: 'left', // Change this to 'center' to center equations.
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}}
}
});
Очистите кеш и перезагрузите ноутбук, и вы должны иметь нумерованные уравнения, которые правильно ссылаются.
Если вы остановитесь здесь, то повторное прослушивание ячейки с помеченным уравнением приведет к тому, что это уравнение прекратит рендеринг, потому что метка уже существует. Как отмечено в комментариях, есть и обходной путь для этого.
В том же файле, что и выше, mathjaxutils.js
, отредактируйте функцию process_math
, чтобы настроить очередь концентратора: hub.Queue( ["resetEquationNumbers",MathJax.InputJax.TeX], ["Typeset",hub] );
. Он должен выглядеть так:
var process_math = function (i, j, pre_process, math, blocks) {
var hub = MathJax.Hub;
hub.Queue( ["resetEquationNumbers",MathJax.InputJax.TeX], ["Typeset",hub] );
...
Это позволяет перераспределить ячейки с мечеными уравнениями; однако нумерация нулей будет локальной для каждой ячейки, что означает, что вы не можете ссылаться на уравнения по ячейкам.