我经常喜欢设置这样的公式
除了手动插入空格(使用等)之外,还有其他方法吗?\quad
例如
\begin{align*}
f( & 1 + g( & 2 + \\
& & 3), \\
& 4 + 5 + 6 + 7)
\end{align*}
因此,在第一行包含n
th&
符号时,应该记住其水平位置。当后续行包含n
th&
符号时,文本应该从记住的位置继续。
据align
我所知,无法做到这一点,因为2 +
并且3
会被移动到右侧,因为4 + 5 + 6 + 7)
占用了太多空间。
答案1
是的,这是可能的。使用array
for 堆叠,并根据需要使用 删除列间空间@{}
:
\documentclass{article}
\begin{document}
\[
\begin{array}{r@{}l@{}l}
f( & 1 + g( & 2 + \\
& & 3), \\
& \multicolumn{2}{@{}l}{4 + 5 + 6 + 7)}
\end{array}
\]
\end{document}
如果您希望获得更加流畅的演示,请使用\\[\jot]
而不是仅仅\\
。
答案2
您也可以使用以下任一方式执行此操作:
- 环境
alignat
以及\matrlap{}
,或 - 与
align
并使用\hphantom{}
可获得:
1. 使用\alignat
和\mathrlap
:
提供alignat
多个rl
对齐对。由于您的第二个对齐旨在l
对齐,因此您使用双精度&&
。第一个&
跳过对齐r
对的对齐列rl
。
\mathrlap
和相关的宏在这份 TuGboat 报纸。
代码:
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{alignat*}{3}
f( & 1 + g( && 2 + \\
& && 3), \\
& \mathrlap{4 + 5 + 6 + 7)}
\end{alignat*}
\end{document}
2. 使用\align
和\hphantom
:
您也可以只使用\hphantom{}
来插入其参数所需的精确水平间距。
代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
f( & 1 + g( 2 + \\
& \hphantom{1 + g(} 3), \\
& 4 + 5 + 6 + 7)
\end{align*}
\end{document}
答案3
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\[
\begin{array}{ r @{} l @{\mkern\thinmuskip} r }
f( & 1 + g( & 2 + \\
& & 3), \\
& \mathrlap{4 + 5 + 6 + 7)}
\end{array}
\]
\end{document}
答案4
这个问题问得好。我在排版长达一页的公式时也遇到了同样的问题。在没有具有制表功能的数学显示环境的情况下,我排版了如下内容:
\documentclass{article}\pagestyle{empty}
\usepackage{mathtools}\mathtoolsset{mathic=true}
\begin{document}
\begin{tabbing}
\(f(\)\=\(1 + g(\)\=\kill
\(f(\)\>\(1 + g(\)\>\(2 \,+\)\\[\jot]
\>\>\(3),\)\\[\jot]
\>\(4 + 5 + 6 + 7)\)
\end{tabbing}
%%% Won't work:
% \[
% \begin{tabbing}
% f( \= 1 + g( \=\kill
% f( \> 1 + g( \> 2 \,+\\[\jot]
% \>\> 3),\\[\jot]
% \>4 + 5 + 6 + 7)
% \end{tabbing}
% \]
%%% Badly needed:
% \begin{mathtabbing}
% f( \= 1 + g( \=\kill
% f( \> 1 + g( \> 2 \,+\\
% \>\> 3),\\
% \>4 + 5 + 6 + 7)
% \end{mathtabbing}
%%% How much effort is it to produce such a mathtabbing environment?
\end{document}