编号:math:reStructuredText中的方程式

Dav*_*jad 3 restructuredtext python-sphinx

如何在重组后的文本中生成方程式,然后加上方程式编号:

p = f(x)                (1)
Run Code Online (Sandbox Code Playgroud)

.. math::
   p = f(x)
Run Code Online (Sandbox Code Playgroud)

只会导致:

p = f(x)
Run Code Online (Sandbox Code Playgroud)

Mad*_*ist 10

几年后看这个,似乎数字仍然没有自动放在方程的右边。因此,我想补充一点已接受的答案。

首先,您在 rst 文件中为方程添加一个标签:

.. math::
   :label: pfx

   p = f(x)
Run Code Online (Sandbox Code Playgroud)

这将生成一个包含数字和方程链接<span>的类eqno。为了让它像您期望的等式编号那样显示,您需要添加一个样式来覆盖该类的默认行为。

我通常通过添加custom.css_static/css我的文档根目录下的文件夹来做到这一点:

.math {
    text-align: left;
}
.eqno {
    float: right;
}
Run Code Online (Sandbox Code Playgroud)

math类标签的<div>包含整个公式。如果没有text-align: left;样式,您的所有方程都将居中,因此将它们编号在左侧是完全合理的。

现在您需要在 .css 文件中注册 CSS 文件conf.py。我添加了以下基本钩子:

def setup(app):
    app.add_stylesheet('css/custom.css')
Run Code Online (Sandbox Code Playgroud)

_static文件夹解析相对路径。您可以添加通配符以一次提取文件夹中的所有文件,但这应该就足够了。

@EngineeredBrain 的评论在前一行报告了一个数字的原因是他们的方程太长,不适合在同一行。我敢肯定有一种方法可以让它们适应任何情况,但我什至不会在这里尝试讨论。

这仅适用于 sphinx(而不是 rST),并且仅适用于 HTML 输出,据我所知。有一天我会尝试使用 latexpdf 并进行更新。


rem*_*mus 5

.. math:: p=f(x)
  :label: eq:pfx
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,它在方程式上方而不是在同一行上显示方程式编号。 (4认同)