对齐 \coloneqq 和 =

对齐 \coloneqq 和 =

有一件事让我很久以来都很生气:

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}
\begin{document}
    \begin{align}
        x &\coloneqq a^2 + b^2\\
        &= c^2
    \end{align}
\end{document}

我只想引入一个定义,然后进行计算。但它看起来很糟糕:

在此处输入图片描述

\coloneqq= 没有在右侧对齐,并且后面的公式也没有对齐。

(注意:将 放在&等式的另一边可以得到正确的对齐,但右边公式的间距会错误)

答案1

由于align右对齐第一个字段而左对齐第二个字段,因此必须将\coloneqq和后续字段放在=第一个align字段中,以便它们右对齐。

但是,align设置\mathrel为构造提供适当的间距&=,而不是=&构造。因此,除了将\coloneqq和放在各自行的=第一个字段末尾之外,还必须在分隔符前align添加一个空占位符,以便强制这两个符号的字符在符号后提供适当的间距。{}&\mathrel

\documentclass{article}
\usepackage{mathtools}
\begin{document}
    \begin{align}
        x \coloneqq{}& a^2 + b^2\\
        ={}& c^2
    \end{align}
\end{document}

在此处输入图片描述

答案2

另一个简单的解决方案是使用非常小的包makebox,它将第二个参数放在第一个参数宽度的框中:

\documentclass{article}

\usepackage{mathtools}
\usepackage{makebox}

\begin{document}
\setlength\fboxsep{0pt}
\begin{align}
  x &\coloneqq a^2 + b^2\\
  &\mathrel{\makebox*{$\coloneqq$}{\hfill$=$}} c^2
\end{align}

\end{document}

在此处输入图片描述

答案3

定义如下\coloneqq

> \coloneqq=macro:
->\vcentcolon \mathrel {\mkern -1.2mu}=

我们可以将前面的内容放在=里面\phantom

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\begin{document}

\begin{align}
  x &\coloneqq a^2 + b^2\\
  &\phantom{\vcentcolon\mathrel{\mkern-1.2mu}}= c^2
\end{align}

\end{document}

相关内容