在对齐环境中,使符号\coloneq
、=
和\eqcolon
(由包提供)以良好方式对齐(以便每个符号的相等部分对齐)的最佳方法是什么?mathtools
&
我可以通过放置后一个并使用空字段来正确获得 mathrel 对齐,从而使前两个很好地对齐,如下所示,...但第三个对齐得很糟糕。
r(x) \coloneq{}& \log x^{-(k+1)} + k\\
={}& -\log x \quad\text{if } k=0\\
\eqcolon{}& s(x)
同样,如果我将它们左对齐,则后两个会对齐,但第一个却不是:
r(x) &\coloneq \log x^{-(k+1)} + k\\
&= -\log x \quad\text{if } k=0\\
&\eqcolon s(x)
我想我可以通过一些临时调整来推动事情的发展,但是,有没有更好的方法解决这个问题?
答案1
定义与合适的模型对齐的符号。
\documentclass{article}
\usepackage{mathtools}
\usepackage{xcolor}
\newcommand{\phantomcolon}{\mathrel{\phantom{:\mkern-1.2mu}}}
\newcommand{\acoloneqq}{\coloneqq\phantomcolon}
\newcommand{\aeqqcolon}{\phantomcolon\eqqcolon}
\newcommand{\aequalsa}{\phantomcolon=\phantomcolon}
\newcommand{\aequals}{\phantomcolon=}
\newcommand{\equalsa}{=\phantomcolon}
\begin{document}
\begin{equation*}
\begin{aligned}
r(x) &\acoloneqq \log x^{-(k+1)} + k\\
&\aequalsa -\log x \quad\text{if } k=0\\
&\aeqqcolon s(x)
\end{aligned}
\end{equation*}
\end{document}
\aequalsa
当两种冒号都使用时,使用,\aequals
即仅在左侧使用冒号或\equalsa
仅在右侧使用冒号。在后两种情况下,您只需使用\eqqcolon
或\coloneqq
。
或者干脆忘记冒号并使用 =,正如在编程语言宣传使用冒号之前的几个世纪里数学家们所做的那样。