Вопрос
Как я могу настроить преамбулу MathJax для использования в ноутбуках IPython (или Jupyter) для повторного использования таким образом, чтобы другие могли читать мои документы (на http://nbviewer.org), и это работает для генерации LaTeX/PDF?
Фон
Я хотел бы использовать IPython (теперь Jupyter) для документов, которые позже конвертирую в PDF через LaTeX (используя ipython nbconvert
). Проблема заключается в том, как включить кучу макроопределений, которые я использую почти в каждом документе. Что-то вроде:
\newcommand{\vect}[1]{\vec{#1}}
\newcommand{\abs}[1]{\lvert#1\rvert}
\DeclareMathOperator{\erf}{erf}
и т.д.. Что касается ноутбуков, то одно неудовлетворительное решение состоит в том, чтобы просто включить их в ячейку уценки в верхней части ноутбука, заключенную между двумя знаками доллара $$
, поэтому она интерпретируется как математика. Если это сделано после некоторого вводного текста, то это даже не влияет на выход.
Проблема заключается в том, что при преобразовании в LaTeX (для экспорта PDF) эти команды встроены в математическую среду в файле LaTeX. У этого есть несколько проблем:
- Команды, такие как
\DeclareMathOperator
, должны войти в преамбулу документа LaTeX. - Определения команд являются локальными для уравнения и не доступны позже в документе. (Это можно преодолеть, используя
\gdef
или\global\def
, но затем нужно обмануть MathJax в распознавании этих команд с чем-то вроде\let\gdef{\def}
, который каким-то образом скрыт от LaTeX. Любой способ, которым я нашел, сделать эту работу равным уродливому взломать.) - Иногда команды уже определены в LaTeX и должны иметь
\renewcommand
(не поддерживаемые MathJax, но снова могут быть предоставлены\let\renewcommand\newcommand
и т.д., что кажется мне разумным, так как MathJax не может иметь некоторое представление о том, что преамбула может использоваться для окончательного файла LaTeX).
Возможно, решение заключается в предоставить набор макросов для MathJax, добавив код вроде (не уверен, что эквивалент \DeclareMathOperator
здесь...)
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
Macros: {
vect: ["{\\vec #1}",1],
abs: ["{\\lvert #1 \\rvert}",1]
}
}
});
</script>
в файл custom.js
и затем предоставить пакет LaTeX для включения при преобразовании в PDF. Проблема с этим подходом заключается в следующем: как распространять файл custom.js
и файл стиля LaTeX для других (соавторов и зрителей) для использования?
-
Я хочу, чтобы соавторы могли редактировать и читать мои документы без необходимости устанавливать настраиваемые расширения в своей глобальной конфигурации. Чтобы быть спецификацией, я в порядке, требуя, чтобы они запускали команду, например,
python setup.py configure
, когда они загружают/проверяют мой код, который выполняет локальные модификации проекта, например, заполняет файлыipython_notebook_config.py
во всех каталогах, содержащих ноутбуки, но я недовольны установкой расширений, или изменение их личного глобального файлаcustom.js
.В моем блоге преткновения я не знаю, как добавить вклады из локального файла
custom.js
в цепочку ноутбуков и подозревать, что это может нарушить политику безопасности.Лучшее решение не потребует каких-либо действий со стороны моего сотрудника.
-
Я хочу, чтобы мои ноутбуки работали над http://nbviewer.org, и чтобы люди могли загружать ноутбук и создавать PDF. (Я думаю, это исключает возможность использования
custom.js
хаков и распределенного файла*.sty
, но я не уверен.) -
Я бы предпочел, чтобы просто начать новый ноутбук, а затем начать писать, не вставляя кучу кода шаблона в начале каждого ноутбука, хотя он был бы прав, чтобы иметь простой способ автоматизации этого процесс с использованием расширения для ноутбука или некоторых перехватчиков в
python_notebook_config.py
.
Ссылки
Следующие сообщения затрагивают некоторые из этих проблем, но не соответствуют большинству фронтов:
- usepackage и создание макросов в ноутбуке ipython
- Символы символов bra-ket на физическом уровне в IPython (в частности этот ответ отмечает связанные трудности)
- Как получить MathJax для включения расширения mhchem в ipython-ноутбуке
Обсуждение (потенциальных) проблем с pandoc создание файлов LaTeX из ноутбуков IPython:
- Получение некоторых проблем с pandoc и mathjax
- \newcommand среда при конвертации из уценки в pandoc
- Блокнот Pandoc IPython теряет некоторые Mathjax
Общее обсуждение математики в записных книжках: