在此示例中,
\documentclass{article}
\begin{document}
\begin{eqnarray*}
A&=&B,\\
C&=&D,\\
E&=&F,
\end{eqnarray*}
\begin{eqnarray*}
A&=&\mathord{B,}\\
C&=&\mathord{D,}\\
E&=&\mathord{F,}
\end{eqnarray*}
\end{document}
我原以为两个eqnarray*
' 应该在 = 符号上完全对齐,但实际上顶部的 '略微偏向底部的 ' 左侧(差异不到 1 点)。我认为这与顶部的行以标点符号结尾,而底部的行以普通符号结尾eqnarray*
有关。这是一个已知问题吗?eqnarray*
eqnarray*
顺便说一句,如果我eqnarray
从这里,中间一列周围的多余空间被消除了,但我的居中问题仍然存在。
答案1
添加\showoutput
调试这类东西。
首先,因为,
位于表达式的中间,所以
......\glue(\thinmuskip) 1.66663
在它之后,但是因为在第二个表达式中它位于子表达式的末尾,所以{}
没有这样的空间,所以第一个表达式要宽得多,当它居中时会将事物移动一半,正如你所说的那样小于一个点。
仔细观察你会发现额外的空间是仅有的在前两行添加,因为,
只有在末尾才添加空格,\\
其作用类似于{}
但\end{eqnarray*}
实际上不是。$B,{}$
与 相比$B,$
。这可以说是 中的一个错误eqnarray
,但现在很难更改它。
添加
\makeatletter
\def\foo#1!!{\def\@eqncr{\ifnum0=`{\fi}{\ifnum0=`}\fi#1}}
\expandafter\foo\@eqncr!!
\makeatother
修复了它(我认为)
使用逗号时,间距变化仅在末尾,因此会影响整个对齐的居中,但并不那么明显。但使用逗号时,+
最后一行的不同就更加明显了:
也许我们应该修复这个问题fixltx2e
....
\documentclass{article}
\begin{document}
\showoutput
\begin{eqnarray*}
A&=&B+\\
C&=&D+\\
E&=&F+
\end{eqnarray*}
\makeatletter
\def\foo#1!!{\def\@eqncr{\ifnum0=`{\fi}{\ifnum0=`}\fi#1}}
\expandafter\foo\@eqncr!!
\let\@seqncr=\@eqncr
\begin{eqnarray*}
A&=&B+\\
C&=&D+\\
E&=&F+
\end{eqnarray*}
\end{document}
实际上我认为在这里使用简单是可以的,\bgroup
所以:
\def\foo#1!!{\def\@eqncr{\egroup\bgroup#1}}
而不是特殊的\halign
技巧组。