当期刊不喜欢数组时控制方程之间的对齐

当期刊不喜欢数组时控制方程之间的对齐

我刚刚收到一份关于我提交给期刊的论文的报告,编辑希望我做的一件事就是将所有 替换为arrayalign提交的论文包含以下内容:

\[ \begin{array}{l@{}l@{}lcc@{}c@{}ccr@{}r@{}r@{}r@{}r@{}r@{}r}
\sigma^{\ast}(x^3) &+& \tau^{\ast}(x^3) &=& (x+y)^3 &+& x^3 &=& 2 x^3 &+& 3 x^2 y &+& 3 x y^2 &+& y^3 \\
\sigma^{\ast}(x^2 y) &+& \tau^{\ast}(x^2 y) &=& (x+y)^2 y &+& x^2 (x+y) &=& x^3 &+& 2 x^2 y &+& 2 x y^2 &+& y^3  \\
\sigma^{\ast}(x y^2) &+& \tau^{\ast}(x y^2) &=& (x+y) y^2 &+& x (x+y)^2 &=&  x^3 &+& 2x^2 y &+& 2 x y^2 &+& y^3 \\
\sigma^{\ast}(y^3) &+& \tau^{\ast}(y^3) &=& y^3 &+& (x+y)^3 &=& x^3 &+& 3 x^2 y &+& 3 x y^2 &+& 2 y^3  \\
\end{array} \]

在此处输入图片描述

尝试用写这篇文章align,我想到了

\begin{align*}
\sigma^{\ast}(x^3) &+ \tau^{\ast}(x^3) &= (x+y)^3 &+ x^3 &= 2 x^3 &+ 3 x^2 y &+ 3 x y^2 &+ y^3 \\
\sigma^{\ast}(x^2 y) &+ \tau^{\ast}(x^2 y) &= (x+y)^2 y &+ x^2 (x+y) &= x^3 &+ 2 x^2 y &+ 2 x y^2 &+ y^3  \\
\sigma^{\ast}(x y^2) &+ \tau^{\ast}(x y^2) &= (x+y) y^2 &+ x (x+y)^2 &=  x^3 &+ 2x^2 y &+ 2 x y^2 &+ y^3 \\
\sigma^{\ast}(y^3) &+ \tau^{\ast}(y^4) &= y^3 &+ (x+y)^3 &= x^3 &+ 3 x^2 y &+ 3 x y^2 &+ 2 y^3  
\end{align*} 

在此处输入图片描述

我认为,第二个更糟糕。+ 和 = 符号没有对齐;为了便于解析,在 = 周围使用空格而不是在 + 周围使用空格的选择已被删除;匹配的单项式不再对齐。

经过一番折腾,我想出了

 \begin{alignat*}{14}
&\sigma^{\ast}(x^3) &&+ \tau^{\ast}(x^3) & \ \ = \ \  & (x+y)^3 &+& x^3 & \ \ = \ \  && 2 x^3 &+& 3 x^2 y &+& 3 x y^2 &+& y^3 \\
&\sigma^{\ast}(x^2 y) &&+ \tau^{\ast}(x^2 y) & \ \ = \ \  & (x+y)^2 y &+& x^2 (x+y) & \ \ = \ \  && x^3 &+& 2 x^2 y &+& 2 x y^2 &+& y^3  \\
&\sigma^{\ast}(x y^2) &&+ \tau^{\ast}(x y^2) & \ \ = \ \  & (x+y) y^2 &+& x (x+y)^2 & \ \ = \ \  &&  x^3 &+& 2x^2 y &+& 2 x y^2 &+& y^3 \\
&\sigma^{\ast}(y^3) &&+ \tau^{\ast}(y^4) & \ \ = \ \  & y^3 &+& (x+y)^3 & \ \ = \ \  && x^3 &+& 3 x^2 y &+& 3 x y^2 &+& 2 y^3  
\end{alignat*}  

在此处输入图片描述

这并不糟糕——我更喜欢将中间的方程式项居中,而不是左对齐,但这没什么大不了的——但这显然像是在滥用环境alignat,而且 + 周围的间距似乎不太一致。有没有一种更易读的方式来生成类似顶部版本的内容,而无需使用array

答案1

很可能评论者更多反对的是间距不均匀,而不是显示的具体实现方式。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\begin{document}

\[
\setlength{\arraycolsep}{0pt}% let TeX add spaces
\renewcommand{\arraystretch}{1.2}% emulate align
\newcolumntype{O}{>{{}}c<{{}}}% operations and relations
\begin{array}{
  l % first column
  O % operation
  l % second column
  O % relation
  c % third column
  O % operation
  c % fourth column
  O % relation
  r % fifth column
  O % operation
  r % sixth column
}
\sigma^{*}(x^3)  &+& \tau^{*}(x^3)  &=&  (x+y)^3 &+&   x^3    &=& 2x^3 + 3x^2y + 3xy^2 &+& y^3 \\
\sigma^{*}(x^2y) &+& \tau^{*}(x^2y) &=& (x+y)^2y &+& x^2(x+y) &=&  x^3 + 2x^2y + 2xy^2 &+& y^3 \\
\sigma^{*}(xy^2) &+& \tau^{*}(xy^2) &=& (x+y)y^2 &+& x(x+y)^2 &=&  x^3 + 2x^2y + 2xy^2 &+& y^3 \\
\sigma^{*}(y^3)  &+& \tau^{*}(y^3)  &=&    y^3   &+&  (x+y)^3 &=&  x^3 + 3x^2y + 3xy^2 &+& 2y^3\\
\end{array}
\]

\end{document}

在此处输入图片描述

我删除了一些对齐点,因为最终多项式的中间项具有相似的结构,所以它们自然对齐,但如果需要,可以使用相同的方案将它们添加回来。

O类型在本地引入只是为了方便输入。它是如何工作的?首先,我将列间距设置为零,但{}在操作或关系符号的两侧添加,因此 TeX 的空格插入规则会自动起作用。

使用 可以获得非常相似的输出IEEEeqnarray。请参阅https://moser-isi.ethz.ch/docs/typeset_equations.pdf了解使用说明。

\documentclass{article}
\usepackage{amsmath}
\usepackage{IEEEtrantools}

\begin{document}

\begin{IEEEeqnarray*}{lClCcCcCrCr}
\sigma^{*}(x^3)  &+& \tau^{*}(x^3)  &=&  (x+y)^3 &+&   x^3    &=& 2x^3 + 3x^2y + 3xy^2 &+& y^3 \\
\sigma^{*}(x^2y) &+& \tau^{*}(x^2y) &=& (x+y)^2y &+& x^2(x+y) &=&  x^3 + 2x^2y + 2xy^2 &+& y^3 \\
\sigma^{*}(xy^2) &+& \tau^{*}(xy^2) &=& (x+y)y^2 &+& x(x+y)^2 &=&  x^3 + 2x^2y + 2xy^2 &+& y^3 \\
\sigma^{*}(y^3)  &+& \tau^{*}(y^3)  &=&    y^3   &+&  (x+y)^3 &=&  x^3 + 3x^2y + 3xy^2 &+& 2y^3\\
\end{IEEEeqnarray*}

\end{document}

在此处输入图片描述

答案2

array编辑器对使用和环境可以生成的内容进行了过多区分alignat*。下面演示了arrayalignat*环境的输出实际上几乎无法区分 —— 当然,它们在排版上也是正确的。

在此处输入图片描述

有四个不同的方面可以使 的输出array看起来与 的输出相同alignat*:(a)设置\arraycolsep为 0pt;(b)创建定制的列类型来“容纳”+=符号,以确保它们分别被 TeX 视为二进制和关系运算符;(c)确保其他数学部分默认处理\displaystyle;(d)将 的值增加\arraystretch约三分之一。

\documentclass{article} % or some other suitable document class
\usepackage{amsmath} % for 'alignat*' env.
\usepackage{array}   % for '\newcolumntype' macro
\newcolumntype{C}{>{{}}c<{{}}}  % for binary and relational operators
\newcolumntype{L}{>{\displaystyle}l} % automatic display-style math mode

\begin{document}
  
% Solution 1: An 'array' env. inside a \[ ... \] group
\[ 
\setlength\arraycolsep{0pt}      % default: 5pt
\renewcommand\arraystretch{1.35} % default: 1.0
\begin{array}{ *{7}{LC} L } % make full use of 'L' and 'C' column types
\sigma^*(x^3)   &+& \tau^*(x^3)   &=& (x+y)^3   &+& x^3       &=& 2 x^3 &+& 3 x^2 y &+& 3 x y^2 &+& y^3  \\
\sigma^*(x^2 y) &+& \tau^*(x^2 y) &=& (x+y)^2 y &+& x^2 (x+y) &=& x^3   &+& 2 x^2 y &+& 2 x y^2 &+& y^3  \\
\sigma^*(x y^2) &+& \tau^*(x y^2) &=& (x+y) y^2 &+& x (x+y)^2 &=& x^3   &+& 2x^2 y  &+& 2 x y^2 &+& y^3  \\
\sigma^*(y^3)   &+& \tau^*(y^3)   &=& y^3       &+& (x+y)^3   &=& x^3   &+& 3 x^2 y &+& 3 x y^2 &+& 2 y^3 
\end{array} 
\]

% Solution 2: Standalone alignat* environment
\begin{alignat*}{8} % Why 8? There are 15 '&' symbols per row, and (15+1)/2=8.
&\sigma^*(x^3)   &&+ \tau^*(x^3)   &&= (x+y)^3   &&+ x^3       &&= 2 x^3 &&+ 3 x^2 y &&+ 3 x y^2 &&+ y^3  \\
&\sigma^*(x^2 y) &&+ \tau^*(x^2 y) &&= (x+y)^2 y &&+ x^2 (x+y) &&= x^3   &&+ 2 x^2 y &&+ 2 x y^2 &&+ y^3  \\
&\sigma^*(x y^2) &&+ \tau^*(x y^2) &&= (x+y) y^2 &&+ x (x+y)^2 &&= x^3   &&+ 2x^2 y  &&+ 2 x y^2 &&+ y^3  \\
&\sigma^*(y^3)   &&+ \tau^*(y^3)   &&= y^3       &&+ (x+y)^3   &&= x^3   &&+ 3 x^2 y &&+ 3 x y^2 &&+ 2 y^3 
\end{alignat*} 
\end{document}

相关内容