Как создать числа в конце уравнения в python -сфинксе? - PullRequest
3 голосов
/ 06 марта 2020

С помощью следующего кода мы можем создать каждое уравнение, содержащее число в конце.

\documentclass[12pt]{article}
\usepackage{mathtools}
\begin{document}
\begin{align}
    100 + x &= y            \\    
    \frac{y}{x} &\ge 1.3    \\
    (100+x)-(100+x)z &= y 
\end{align}
\end{document}

enter image description here

Теперь, чтобы записать их в python -shinx.

.. math::

    \begin{align}
        100 + x &= y            \\    
        \frac{y}{x} &\ge 1.3    \\
        (100+x)-(100+x)z &= y 
    \end{align}

После компиляции с помощью make html мы получим следующее изображение:
enter image description here

Вы можете видеть, что есть без чисел в конце каждой строки.
Как создать одно и то же уравнение с числами в конце каждой строки в python -shinx?

1 Ответ

3 голосов
/ 14 марта 2020

Как прокомментировал @ ilke444, вы можете добавить \tag{1} в конец каждой строки. И если вам нужно обратиться к одной указанной c строке, вы можете добавить метку в строке.

 .. math::
   \begin{align}
        100 + x &= y    \label{a}   \tag{1}    \\    
        \frac{y}{x} &\ge 1.3 \label{b}  \tag{2}  \\
        (100+x)-(100+x)z &= y \label{c} \tag{3} 
   \end{align}

вывод:

enter image description here

Таким образом, вы можете ссылаться на это следующим образом:

refer it inline :math:`\ref{a}`

refer it for single line:

.. :math:: \ref{a}

Примечание: метка должна быть уникальной, иначе вывод не будет отображаться.

update: обновление mathjax в sphinx теперь поддерживает автоматическую нумерацию как латекс.

открыть index.html в каталоге _build и изменить скрипт mathjax

<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>

изменить его на:

<script>
    window.MathJax = {
        tex: {
            tags: "ams"
        }
    };
</script>
<script
    type="text/javascript"
    id="MathJax-script"
    async
    src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
></script>

Теперь все строки в align блок будет иметь автоматическую нумерацию.

связанный do c: Automati c Нумерация уравнений

Почему поведение python-sphinx такое?

исходный код для нумерации в sphinx

Python-Sphinx обрабатывать каждый математический блок целиком и назначать нумерацию для всего математического блока. При генерации html он будет игнорировать нумерацию в математическом блоке и предоставит ее библиотеке математической визуализации (по умолчанию MathJax).

Так что, действительно, проблема в том, что Mathjax не поддерживает строку автоматической нумерации в блоке выравнивания, так что вы можете обратиться к этому ответу

Как нумеровать и ссылаться на многострочные уравнения?

К настоящему времени единственный способ - добавить тег в каждую строку: (, без автоматов c way.


BTW

Если вам нужен только один ярлык для всего математического блока

Насколько я знаю, python-sphinx предоставляет возможность генерировать номер для каждого математического блока (используя :label:

 .. math::
   \begin{align}
        100 + x &= y    \\    
        \frac{y}{x} &\ge 1.3  \\
        (100+x)-(100+x)z &= y 
   \end{align}
   :label: abc

output

enter image description here

Метка (2) потому что порядковый номер генерируется из-за его позиции во всем документе.

И вы можете ссылаться на него по

refer to it by :eq:`abc`
...