我正在数学模式下写一系列不等式,其中第一行定义第一个对象。为了清楚起见,我有类似
\documentclass[12pt]{amsart}
\usepackage{amsfonts,graphics,amsmath,amsthm}
\usepackage{amsfonts,amscd, amssymb,amsmath,latexsym}
\usepackage{mathtools}
\begin{document}
\begin{equation}
\begin{split}
A &:= B - C \\
&= U + V \\
&\geq Z.
\end{split}
\end{equation}
\end{document}
我希望第一行中=
的:=
和第二行中的 对齐=
。如果我使用上面的代码,则不会发生这种情况。同样,如果我使用\coloneqq
代替:=
,也会发生同样的错位。另一方面,如果我写:&=
,我会得到我想要的对齐方式;然而,这样一来,列离等号太远,渲染效果也不好。
我怎样才能获得我想要的对齐而又不:
太远=
?
答案1
答案2
使用 TABstack,无需添加版本split
所需的空白组,因为 TABstack 默认会自动在每个单元格的右端添加一个组。可以使用声明\TABbinaryLeft
(also \TABunaryRight
) 将空白组默认在每个单元格的左侧,或者使用 在每个单元格的两端添加空白组。可以使用(also )\TABbinary
恢复原始默认条件。\TABbinaryRight
\TABunaryLeft
\documentclass[12pt]{amsart}
\usepackage{amsfonts,graphics,amsmath,amsthm}
\usepackage{amsfonts,amscd, amssymb,amsmath,latexsym}
\usepackage{mathtools}
\usepackage{tabstackengine}
\TABstackMath
\begin{document}
\begin{equation}
\tabbedCenterstack[r]{
A \coloneqq& B - C \\
=& U + V \\
\geq& Z.
}
\end{equation}
\end{document}
请注意,我最好使用\coloneqq
而不是:=
,因为\coloneqq
它具有垂直对称性,而:=
没有。
答案3
这样可以产生完美的对齐,并且仅影响第一行。
如图所示,将第一个替换\\
为\\[-.9\baselineskip]
。
然而,这可能有点傻...
输出
和\\[-.9\baselineskip]
没有
代码
\documentclass[12pt]{standalone}
\usepackage{mathtools}
\newlength\myUselessLength
\begin{document}
\settowidth{\myUselessLength}{${}={}$}
$
\begin{aligned}
A\coloneqq{}\hspace{-\myUselessLength} & \phantom{{}={}} B - C \\
& = U + V \\
& \geq Z. \\
\end{aligned}
$
\end{document}
答案4
另一种方式,相同的输出。
\documentclass[12pt]{article}
\usepackage{mathtools}
\begin{document}
\begin{equation}
\begin{split}
& \phantom{{}={}} \mathllap{A\coloneqq{}} B - C \\
& = U + V \\
& \geq Z. \\
\end{split}
\end{equation}
\end{document}