我想制作如下排列的方程式:
x = y x
z
= a x
b
以下是 MWE:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
x &= &y \times \\
& &z \\
&= &a \times \\
& &b
\end{align*}
\end{document}
然而,它产生了这样的结果:
您能否建议我如何按照我的意愿进行对齐?
谢谢
答案1
你有太多的&
。对于这种对齐,你需要一个“特殊技巧”:
\begin{align*}
x ={} & y \times{} \\
& z \\
={} & a \times{} \\
& b
\end{align*}
(空子公式)的目的{}
是为了在关系和运算符号周围留出正确的间距。
align
一个空的子公式被隐式地插入到(或) 环境的偶数列中align*
。偶数列左对齐,而奇数列右对齐。
另一种方法(但更复杂)是
\begin{align*}
x &= y \times{} \\
&\mathrel{\hphantom{=}} z \\
&= a \times{} \\
&\mathrel{\hphantom{=}} b
\end{align*}
无论如何,二元运算符号后面{}
的 都是必需的,如下例所示。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Good example of the alignment you want:
\begin{align*}
x ={} & y \times{} \\
& z \\
={} & a \times{} \\
& b
\end{align*}
The following is equivalent to the above one
\begin{align*}
x &= y \times{} \\
&\mathrel{\hphantom{=}} z \\
&= a \times{} \\
&\mathrel{\hphantom{=}} b
\end{align*}
Compare the spacing around $\times$ in the following example:
\begin{align*}
x ={} & y \times \\
& z \\
={} & a \times \\
& b
\end{align*}
\end{document}
答案2
这里有两种使用 TABstacks 的方法,这两种方法都不需要空子组的“特殊技巧”。第一种情况,使用 OP 建议的对齐标签,它需要等效的“特殊技巧”,\TABbinary
即在每个单元格的开头和结尾添加一个空子组。或者,tabstackengine
堆栈的 align 版本不需要这样的技巧。
\documentclass{article}
\usepackage{tabstackengine}
\setstacktabulargap{0pt}
\stackMath
\begin{document}
\[
\TABbinary
\tabularCenterstack{rcl}{
x &= &y \times \\
& &z \\
&= &a \times \\
& &b
}
\]
\[
\alignCenterstack{
x = &y \times \\
&z \\
= &a \times \\
&b
}
\]
\end{document}