我正在尝试输入一个好看的长函数总和:
我设法通过flalign*
和的组合来做到这一点\mspace
:
\begin{flalign*}
f(a+h)-f(a)=&f(a_1+h_1,\dots\mspace{25mu}\dots,a_n+h_n)-f(a_1,\dots\mspace{120mu}\dots,a_n)=\\
=&f(a_1+h_1,a_2+h_2,\dots\mspace{1mu}\dots,a_n)-f(a_1,a_2,\dots\mspace{95mu}\dots,a_n)+\\
+&f(a_1+h_1,a_2+h_2,a_3,\dots,a_n)-f(a_1+h_1,a_2,\dots\mspace{55mu}\dots,a_n)+\\
&\dots\\
+&f(a_1+h_1,\dots\mspace{24mu}\dots,a_n+h_n)-f(a_1+h1,\dots,a_{n-1}+h_{n-1},a_n)\\
\end{flalign*}
我对我得到的结果很满意,但我的问题是:是否可以让右括号自动放置在正确的位置?如果不是用 for代替bit \phantom
,可能会有帮助。是否可以使用另一个指针(例如,)来标记“-”的行?a_n+h_n
a_n
&
&2
附言:为什么整个“声誉”不允许我创建新标签?它们不是应该帮助人们吗?
答案1
您需要将放在&
之前+
或=
之后,否则您将无法获得正确的间距,请注意您的图像两端都有没有中缀间距的运算符,我想您只是想要更多的对齐点。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{flalign*}
f(a+h)-f(a)&=f(a_1+h_1,\dots&\dots,a_n+h_n)&-f(a_1,\dots&\dots,a_n)={}\\
&=f(a_1+h_1,a_2+h_2,\dots&\dots,a_n)&-f(a_1,a_2,\dots&\dots,a_n)+{}\\
&+f(a_1+h_1,a_2+h_2,a_3,&\dots,a_n)&-f(a_1+h_1,a_2,\dots &\dots,a_n)+{}\\
&\dots\\
&+f(a_1+h_1,\dots&\dots,a_n+h_n)&-f(a_1+h1,&\dots,a_{n-1}+h_{n-1},a_n)\phantom{{}+{}}\\
\end{flalign*}
`
\end{document}
答案2
笔记:
- 我使用
scrartcl
该类只是因为您的原始方程对于标准类来说太宽了article
。 mathtools
为\math?lap
家庭和\vdotswithin
。\dots
如果后面没有空格,我会删除其中一个。\hphantom
意图使方程式的第二部分更好地对齐。- 我使用
alignat*
环境是因为对于一个方程来说flalign*
环境作用不大。(当然没有flalignat
环境。) - 我还删除了行尾的
=
和,+
因为我认为它们在那里没有任何意义。
代码
\documentclass{scrartcl}
\usepackage{amsmath,mathtools}
\begin{document}
\begin{alignat*}{4}
f(a+h)-f(a) & = f(a_1 + h_1, \dots & \mathllap{\dots, a_n + h_n)} & {} - f(a_1, \dots & \dots, a_n) \\
& = \hphantom{{}+{}} f(a_1 + h_1, a_2 + h_2, & \dots, a_n) & {} - f(a_1, a_2, \mathrlap{\dots} & \dots, a_n) \\
& \hphantom{{}={}} + f(a_1 + h_1, a_2 + h_2, a_3, & {} \dots, a_n) & {} - f(a_1+h_1, \mathrlap{a_2, \dots} & \dots,a_n) \\
& \hphantom{{}={}} \vdotswithin{+} \\
& \hphantom{{}={}} + f(a_1+h_1,\dots & \mathllap{\dots, a_n + h_n)} & {} - f(a_1+h_1,{} & \dots, a_{n-1}+h_{n-1},a_n)\\
\end{alignat*}
\end{document}
输出
答案3
我认为这不是表达你的想法的特别好的方式。
但是,这种方法只需要猜测最宽的向量,这可以在第一阶段完成。这肯定比猜测许多间距要容易得多。
\documentclass{article}
\usepackage{amsmath}
\newlength{\providewdlen}
\newcommand{\providewd}[2]{
\settowidth{\providewdlen}{$\displaystyle#1$}
\makebox[\providewdlen][s]{$\displaystyle#2$}
}
\newcommand{\alignplus}{\mathrel{\providewd{=}{\hfill+}}}
\begin{document}
\begin{align*}
f(a+h)-f(a)
&=
f(\providewd{a_1+h_1,a_2+h_2,\dots\dots,a_n}{a_1+h_1,\dots\hfill\dots,a_n+h_n})
-f(\providewd{a_1+h1,\dots,a_{n-1}+h_{n-1},a_n}{a_1,\dots\hfill\dots,a_n})\\
&=
f(\providewd{a_1+h_1,a_2+h_2,a_3,\dots,a_n}{a_1+h_1,a_2,\dots\hfill\dots,a_n})
-f(\providewd{a_1+h1,\dots,a_{n-1}+h_{n-1},a_n}{a_1,a_2,\dots\hfill\dots,a_n})\\
&\alignplus
f(a_1+h_1,a_2+h_2,a_3,\dots,a_n)
-f(\providewd{a_1+h1,\dots,a_{n-1}+h_{n-1},a_n}{a_1+h_1,a_2,\dots\hfill\dots,a_n})\\
& \dots\\
&\alignplus
f(\providewd{a_1+h_1,a_2+h_2,a_3,\dots,a_n}{a_1+h_1,\dots\hfill\dots,a_n+h_n})
-f(a_1+h_1,\dots,a_{n-1}+h_{n-1},a_n)
\end{align*}
\end{document}
请注意,符号不应该在行尾重复,&
并且前对齐点。应该有不是\\
在对齐环境中处于尾随状态。
由于+
的宽度小于=
,所以我们也需要注意这一点。还请注意,在这种情况下flalign*
的作用不大align*
;当有多个对齐点时,可以看到差异。
我的感觉是,更简单的方法可以更清晰:
\begin{align*}
f(a+h)-f(a)
&=f(a_1+h_1,\dots,a_n+h_n)-f(a_1,\dots,a_n)\\
&=
f(a_1+h_1,a_2,\dots,a_n)-f(a_1,a_2,\dots,a_n)\\
&\alignplus
f(a_1+h_1,a_2+h_2,a_3,\dots,a_n)-f(a_1+h_1,a_2,\dots,a_n)\\
& \dots\\
&\alignplus
f(a_1+h_1,\dots,a_n+h_n)-f(a_1+h_1,\dots,a_{n-1}+h_{n-1},a_n)
\end{align*}