使用 svmono.cls 解决 \begin{equation} ... \end{equation} 中的居中问题

使用 svmono.cls 解决 \begin{equation} ... \end{equation} 中的居中问题

如果您构建以下代码,则第一个方程式不会居中,除非您至少删除最后一个字母(x),而第二个方程式(较长)则居中。注意:第一个方程式以\,(或\;等)开头。如果您使用\documentclass{book}或,则\documentclass{article}一切正常。(例如,如果您有一个以\,\def\xxx{\,...})开头的宏,则会出现问题:\begin{equation} \xxx等)

\documentclass{svmono} % svmono 2006/09/01 v4.16
%
\begin{document}
%
\begin{equation} % first eq.
\,abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abx
\end{equation}
%
\begin{equation} % second eq.
abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abcdefghi
\end{equation}
%
\end{document}

答案1

等式开始时的胶水就是罪魁祸首。

首先使用纯 TeX 的最小示例,因为问题与 LaTeX 无关:

\nopagenumbers
\hsize=333pt

$$
  \,abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abx
  \eqno (0.1)
$$
$$
  abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abcdefghi
  \eqno (0.2)
$$

\bye

平均能量损失

来自“The TeXbook”的“第 19 章显示方程”中显示方程算法的相关部分:

  1. TeX 检查公式、方程编号以及公式和方程编号之间的分隔空间(四边形)是否适合可用宽度。两个方程都是这种情况。

  2. TeX 尝试将公式居中没有考虑到公式编号。这两种情况都会失败,因为公式太长了。公式编号和公式对于 TeX 来说太“近”,也就是说,它们之间的间距小于公式编号的宽度。换句话说,对于文本宽度居中的公式,公式和四倍的公式编号必须放在一行中。

  3. 然后方程在剩余空间中正常居中。这是第二个方程的情况。

  4. 但是,如果公式以粘连符开头(\,是这样的粘连符),则 TeX 会假定用户会注意间距,并将公式尽可能地远离公式编号。如果公式编号向右移动,则公式会向左移动。

如果要让 TeX 自动居中,请用其他内容开始方程,例如空子公式({})或空框(\null):

\nopagenumbers
\hsize=333pt

$$
  {}\,abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abx
  \eqno (0.1)
$$
$$
  abcdefghilmnopqstuvwxyz abcdefghilmnopqstuvwxyz abcdefghi
  \eqno (0.2)
$$

\bye

结果

当然,首先移除起始粘连会更容易。然后居中(无论是关于文本宽度还是剩余空间)也会更准确。

相关内容