如何在python-sphinx中的方程式末尾创建数字?

问题描述 投票:1回答:1

使用以下代码,我们可以创建每个末尾包含数字的方程。

\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-sphinx编写它们。

.. 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-sphinx的每一行末尾创建带有数字的相同方程式?

python-sphinx equation
1个回答
0
投票

如@ ilke444所评论,您可以在每行末尾添加\tag{1}。如果需要参考某一行,则可以在行中添加标签。

 .. 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}

注意:标签应该是唯一的,否则输出将不会呈现。

更新:在sphinx中升级mathjax现在支持将自动编号行作为乳胶。

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块中的所有行将自动编号。

相关文档:Automatic Equation Numbering

为什么python-sphinx这样的行为?

source code for numbering in sphinx

Python-Sphinx整体处理每个数学块,并为整个数学块分配编号。生成html时,它将忽略数学块中的编号,并将其留给数学渲染库(默认为MathJax)。

确实,问题是为什么Mathjax在align块中不支持自动编号行,所以您可以参考此答案

How to number and reference multiline equations?

到目前为止,唯一的方法是将标记添加到每行:(,没有自动方法。


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

输出

enter image description here

标签(2),因为序列号是由于其在整个文档中的位置而生成的。

您可以通过]进行引用>

refer to it by :eq:`abc`
© www.soinside.com 2019 - 2024. All rights reserved.