Создание математических макросов LaTeX в Sphinx - PullRequest
10 голосов
/ 16 марта 2012

Я пишу некоторый математический код на Python и использую Sphinx для создания документации. Я знаю, что Sphinx может обрабатывать код LaTeX в строках документов Python; см. http://sphinx.pocoo.org/latest/ext/math.html#module-sphinx.ext.mathbase. Как создать макросы LaTeX, такие как \newcommand{\cG}{\mathcal{G}}, для использования в строках документации Python?

Ответы [ 4 ]

5 голосов
/ 09 октября 2013

Если вы используете MathJax, вот возможное решение.Я все еще ищу более подходящее решение, но оно может помочь, если вам нужен быстрый взлом.

  1. Создайте файл в каталоге, указанном в параметре конфигурации html_static_path (обычно _static), скажем mathconf.js.Это будет содержать конфигурацию JS для MathJax.Например (из документации MathJax ):

    MathJax.Hub.Config({
      TeX: {
        Macros: {
          RR: '{\\bf R}',
          bold: ['{\\bf #1}', 1]
        }
      }
    });
    

    Вы можете добавить больше команд, следуя приведенному выше синтаксису.Показанное содержимое определяет макросы \RR и \bold{#1}, последний из которых принимает один аргумент.

  2. Добавьте файл layout.html в каталог _templates.Идея состоит в том, чтобы расширить текущую тему, чтобы она искала предыдущий файл конфигурации MathJax.Таким образом, содержимое:

    {% extends "!layout.html" %}
    {% set script_files = script_files + ["_static/mathconf.js"] %}
    

    Обратите внимание, что в этом случае является каталогом _static, потому что в этом случае он указывает, где искать после сборка.Sphinx перенесет файл из html_static_path в каталог _static в каталоге сборки.

4 голосов
/ 17 марта 2012

Ага, я нашел решение, которое работает с расширением Sphinx pngmath. Это трюк, который использует Sage (математическое программное обеспечение с открытым исходным кодом); вдохновение от http://www.sagemath.org/doc/reference/sage/misc/latex_macros.html.

Чтобы добавить свои собственные макросы Latex в документ Sphinx:

1) Создайте файл, скажем 'latex_macros.sty', содержащий ваши макросы (по одному на строку), и поместите его, скажем, в тот же каталог, что и ваш файл Sphinx conf.py;

2) Добавьте следующий код в файл Sphinx conf.py:

# 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'

#####################################################
1 голос
/ 16 марта 2012

Если вы используете расширение pngmath, вы можете поместить его в преамбулу, вставив его в скрипт conf.py:

pngmath_latex_preamble = r"\newcommand{\cG}{\mathcal{G}}"
0 голосов
/ 28 июня 2019

Чтобы добавить к ответу @ Keta с августа 2018 г. и этот коммит (https://github.com/sphinx-doc/sphinx/pull/5230/files), вы можете использовать mathjax_config в conf.py согласно документации (http://www.sphinx -doc.org / ru)./master/usage/extensions/math.html?#confval-mathjax_config)

Так, например, можно добавить следующее,

mathjax_config = {                  
    "TeX": {                        
        "Macros": {                 
            "RR": '{\\bf R}',       
            "bold": ['{\\bf #1}',1] 
            }                       
        }                           
    }                               
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...