Я пишу математический код на Python и используя Sphinx для создания документации. Я знаю, что Sphinx может обрабатывать код LaTeX в докстерах Python; см. http://sphinx.pocoo.org/latest/ext/math.html#module-sphinx.ext.mathbase. Как я могу создать макросы LaTeX, например \newcommand{\cG}{\mathcal{G}}
, для использования в докстронах Python?
Создание макросов LaTeX в Sphinx
Ответ 1
Ага, я нашел решение, которое работает с расширением sphinx pngmath. Это трюк, который использует Sage (программное обеспечение для математики с открытым исходным кодом); вдохновение из http://www.sagemath.org/doc/reference/sage/misc/latex_macros.html.
Чтобы добавить собственные макросы латекса в документ Sphinx:
1) Создайте файл, скажем, "latex_macros.sty", содержащий ваши макросы (по одной в строке), и поместите его, скажем, в тот же каталог, что и ваш файл conf.py Sphinx;
2) Добавьте следующий код в ваш файл conf.py Sphinx:
# Additional stuff for the LaTeX preamble.
latex_elements['preamble'] = '\usepackage{amsmath}\n\usepackage{amssymb}\n'
#####################################################
# add LaTeX macros
f = file('latex_macros.sty')
try:
pngmath_latex_preamble # check whether this is already defined
except NameError:
pngmath_latex_preamble = ""
for macro in f:
# used when building latex and pdf versions
latex_elements['preamble'] += macro + '\n'
# used when building html version
pngmath_latex_preamble += macro + '\n'
#####################################################
Ответ 2
Если вы используете MathJax, это возможное решение. Я все еще ищу лучшее решение, но это может помочь, если вам нужен быстрый хак.
-
Создайте файл в каталоге, указанном в параметре конфигурации
html_static_path
(обычно_static
), скажемmathconf.js
. Это будет содержать JS-конфигурацию для MathJax. Например (из Документация MathJax):MathJax.Hub.Config({ TeX: { Macros: { RR: '{\\bf R}', bold: ['{\\bf #1}', 1] } } });
Вы можете добавить дополнительные команды в соответствии с приведенным выше синтаксисом. Отображаемое содержимое определяет макросы
\RR
и\bold{#1}
, причем последний принимает один аргумент. -
Добавьте файл
layout.html
в каталог_templates
. Идея состоит в том, чтобы расширить текущую тему, поэтому она ищет предыдущий файл конфигурации MathJax. Таким образом, содержимое:{% extends "!layout.html" %} {% set script_files = script_files + ["_static/mathconf.js"] %}
Обратите внимание, что в этом случае это каталог
_static
, потому что в этом случае он ссылается на то, где искать после сборки. Sphinx перенесет файл изhtml_static_path
в каталог_static
в каталоге сборки.
Ответ 3
Если вы используете расширение pngmath, вы можете поместить его в преамбулу, вставив его в conf.py script:
pngmath_latex_preamble = r"\newcommand{\cG}{\mathcal{G}}"
Ответ 4
Чтобы добавить ответ @Keta с августа 2018 года и этот коммит (https://github.com/sphinx-doc/sphinx/pull/5230/files), вы можете использовать mathjax_config
в файле conf.py согласно документации (http://www.sphinx-doc.org/en/master/usage/extensions/math.html?#confval-mathjax_config)
Так, например, можно добавить следующее,
mathjax_config = {
"TeX": {
"Macros": {
"RR": '{\\bf R}',
"bold": ['{\\bf #1}',1]
}
}
}