我正在尝试对齐一些生成函数,以便直观地显示它们如何表示递归。当我尝试以看似自然的方式使用 时aligned
,它会在常数项后放置一个令人讨厌的大空格,并且还会在加号周围留下一些空格。
我找到了一种按我想要的方式对齐它的方法,但它有很多\,
看起来不自然且难以对齐的负空间。有没有更好的方法可以按我想要的方式对齐它?
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Bad: $$
\begin{aligned}
A(x) &= a_0 +& a_1 x + a_2 x^2 +& a_3 x^3 + a_4 x^4 + \cdots \\
x\, A(x) &= & a_0 x + a_1 x^2 +& a_2 x^3 + a_3 x^4 + \cdots \\
x^3 A(x) &= & & a_0 x^3 + a_1 x^4 + \cdots
\end{aligned}
$$
Good: $$
\begin{aligned}
A(x) &= a_0 \,+&\negmedspace\negmedspace\!\! a_1 x + a_2 x^2 \,+&\, a_3 x^3 + a_4 x^4 + \cdots \\
x\, A(x) &= &\negmedspace\negmedspace\!\! a_0 x + a_1 x^2 \,+&\, a_2 x^3 + a_3 x^4 + \cdots \\
x^3 A(x) &= & &\, a_0 x^3 + a_1 x^4 + \cdots
\end{aligned}
$$
\end{document}
上述代码在 TeXworks 中给出了以下结果(我使用的是 pdfLatex 设置):
我发现这个类似的问题,但我不需要任何前导加号,因为我只省略了前导项。
答案1
一个替代方法是使用数组。
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\arraycolsep=0pt
\[
\begin{array}{rlll}
A(x) &= a_0 +\null& a_1 x + a_2 x^2 +\null& a_3 x^3 + a_4 x^4 + \cdots \\
x\, A(x) &= & a_0 x + a_1 x^2 +\null& a_2 x^3 + a_3 x^4 + \cdots \\
x^3 A(x) &= & & a_0 x^3 + a_1 x^4 + \cdots
\end{array}
\]
\end{document}
答案2
您可以利用系数占据相同空间的事实:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{2}
A(x) ={}&& a_0 + a_1 x + a_2 x^2 + a_3 x^3 + a_4 x^4 + \cdots \\
x\, A(x) ={}&& a_0 x + a_1 x^2 + a_2 x^3 + a_3 x^4 + \cdots \\
x^3 A(x) ={}&& a_0 x^3 + a_1 x^4 + \cdots
\end{alignat*}
\end{document}
我们={}
确保等号后的间距正确;然后我们跳过左对齐的列到右对齐的列。
答案3
我将使用一个简单的align*
环境以及\hphantom
第 2 行和第 3 行中的某些语句来指示需要插入的水平空格量。
\documentclass{article}
\usepackage{amsmath} % for 'align*' environment
\begin{document}
\begin{align*}
A(x) &= a_0 + a_1 x + a_2 x^2 + a_3 x^3 + a_4 x^4 + \cdots \\
x\, A(x) &= \hphantom{a_0 +{}} a_0 x + a_1 x^2 + a_2 x^3 + a_3 x^4 + \cdots \\
x^3 A(x) &= \hphantom{a_0 +a_0 x + a_1 x^2+{}}a_0 x^3 + a_1 x^4 + \cdots
\end{align*}
\end{document}