首页 > 解决方案 > 获取要在 Sphinx 中显示的多行文档字符串方程。狮身人面像中的潜在错误?

问题描述

Sphinx 官方文档中有以下代码:

.. math::
   :nowrap:

   \begin{eqnarray}
   y    & = & ax^2 + bx + c \\
   f(x) & = & x^2 + 2xy + y^2
   \end{eqnarray}

我尝试了很长时间才能让它工作,直到我将其更改为:

.. math::
   :nowrap:

   $$
   \\begin{eqnarray}
   y    & = & ax^2 + bx + c \\\\
   f(x) & = & x^2 + 2xy + y^2
   \\end{eqnarray}
   $$

Sphinx 官方文档怎么可能是错误的? 还是这里发生了一些不为人知的事情?甚至Sagemath文档似乎也建议$$需要使用(请参阅“如果您希望明确不包装 MATH 块 [...]”)或者这是一个错误?

(我使用 Sphinx 2.2.0 并在我的index.rst文件autofunction中用于其文档字符串包含上述等式的函数。)

标签: mathpython-sphinx

解决方案


Sphinx文档指出,当您将数学标记放入 autodoc 读取的 Python 文档字符串中时,您要么必须将所有反斜杠加倍,要么使用 Python 原始字符串 (r"raw")。发生这种情况是因为 Python 会在Sphinx 有机会解析它之前解释该字符串。

所以,如果你想插入math一个docstring,下面应该工作:

.. math::
   :nowrap:

   \\begin{eqnarray}
   y    & = & ax^2 + bx + c \\\\
   f(x) & = & x^2 + 2xy + y^2
   \\end{eqnarray}

您可以通过以下方式进一步简化它:

.. math::

   y    & = ax^2 + bx + c \\\\
   f(x) & = x^2 + 2xy + y^2

:nowrap唯一提示 Sphinx 不应将提供的方程式包装在 LaTeX“拆分”环境中(参见 amsmath 手册的第 3节。相反,您必须按照本文第一个示例中的说明提供自己的。


推荐阅读