我使用sphinx
编写方程式。我的代码如下所示:
.. math::
:label: eq1
\begin{eqnarray}
\begin{cases}
a_{11}x_{1} + \dots + a_{1m}x_{m} = b_1\\
a_{21}x_{1} + \dots + a_{2m}x_{m} = b_2
\end{cases}
\end{eqnarray}
这会在第一行的右侧显示标签(1),但我会将其分配给此{cases}
的中心,即在第一行和第二行之间。
我该怎么做?
答案 0 :(得分:2)
这个问题似乎主要与MathJax的使用有关。
通过一些实验我发现它理解\smash
并且使用它提供了希望的标签放置。但也许有一些MathJax设置会避免使用这个\smash
。除\smash
之外,仅适用于两个或三个"案例"。
我已将\smash
方法移至第二部分,其中也解释了其缺点。实际上,我已经找到了半满意的CSS方法。
无论如何,请不要在那里使用eqnarray
。
使用这些内容在源库中创建文件_static/custom.css
。
.MathJax_Display {
transform: translate(0%,-50%) translate(0%,8px);
}
div.math {
transform: translate(0%,50%);
}
在conf.py结束时添加:
if html_theme != 'alabaster':
def setup(app):
app.add_stylesheet('custom.css')
例如,我使用'classic'
主题获取此内容:
这也适用于'agogo'
和'alabaster'
主题,但对于只有一行定位的方程式可能需要进行一些微调。
在RTD主题的情况下,它根本不起作用。
支持可能取决于浏览器。
\smash
接近Text before.
.. math::
:label: eq1
\smash{\begin{cases}
a_{11}x_{1} + \dots + a_{1m}x_{m} &= b_1\\
a_{21}x_{1} + \dots + a_{2m}x_{m} &= b_2
\end{cases}}
Text after.
我来自make html
(经典主题)
conf.py
包含
extensions = ['sphinx.ext.mathjax',
]
html_theme = 'classic'
顺便说一下,eqnarray
不是很好的标记。如果您使用它,您应该使用:nowrap:
选项。请参阅Sphinx doc。
注意当然cases
的使用情况可疑,因为您的示例是方程之一。我添加了&
,但间距是cases
适合的间距,这肯定不是预期的间距。所以删除它们。
这是标记,不会滥用cases
环境:
Text before.
.. math::
:label: eq1
\smash{\left\{\begin{aligned}
a_{11}x_{1} + \dots + a_{1m}x_{m} &= b_1\\
a_{21}x_{1} + \dots + a_{2m}x_{m} &= b_2
\end{aligned}\right.}
Text after.
CAVEAT 粉碎技巧仅适用于两个(也许是三个)方程式,即使在MathJax中也是如此。