align+multicolumn 有时会产生未对齐的方程标签

align+multicolumn 有时会产生未对齐的方程标签

以下是一份简短的文档,演示了该问题:

\documentclass[twocolumn]{article}
\makeatletter
\renewcommand{\rmdefault}{ptm}
\renewcommand{\normalsize}{\@setfontsize{\normalsize}{9pt}{10pt}}
\makeatother
\usepackage[table]{xcolor}
\usepackage{amsmath}

\begin{document}
\begin{itemize} \item
    \begin{align}
        longfoo &\in foo \\
        foo &= longlonglongfoo \\
        foo &= foo && longlonglongfoo \\
        \multicolumn{2}{c}{foo}
    \end{align}
\end{itemize}
\end{document}

这将生成如下的文档:

最小的不良对齐

如您所见,(4)标签与其他标签不对齐。我尝试尽可能地最小化文档,因此在这个小示例中,视觉问题并不那么严重,但您可以在我的实际文档中看到,对齐确实相当偏离。

原始文档对齐不良

为什么对齐不正确?我该如何修复它?

答案1

\multicolumn不应在这里使用。

下面说明了如何将最后一行放置在=上面一行的中心:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath

\newsavebox{\equalbox}
\savebox{\equalbox}{${}={}$}
\begin{document}

\begin{align}
        c_a &= (\mathit{swap}(c_b),()) \\
  (x,c_a,y) &\in a.K \\
  (x,c_b,y) &\in b.K \\
          x &= \mathsf{inl}(x_k) \quad \text{for some $x_k\in X_k$} \\
            &\hspace*{.5\wd\equalbox}
               \makebox[0pt]{$\mathrm{d}x; \mathit{init}_{X_i}\downarrow$}
\end{align}
\end{document}

我们将关系存储=在一个框中,并使用它来精确测量距离对齐字符的一半&。然后我们将构造放置在零宽度框中(默认情况下居中)。

答案2

实际上不允许使用\multicolumnin ,因为环境不使用与or相同的机制。aligntabulararray

在这种特殊情况下,关系符号的对齐并不是管理显示的最佳方式,因为这些符号彼此不相关。

\documentclass[twocolumn]{article}
\usepackage{amsmath}

\begin{document}
\begin{align}
& c_a=(\mathit{swap}(c_b),()) \\
& (x,c_a,y)\in a.K \\
& (x,c_b,y)\in b.K \\
& x=\mathsf{inl}(x_k)\quad \text{for some $x_k\in X_k$} \\
& \mathrm{d}x; \mathit{init}_{X_i}\downarrow
\end{align}
\end{document}

在此处输入图片描述

答案3

您是否尝试过放置 & \text{foo} 而不是多列?

另外您到底想在哪里排队?

您还可以使用该\phantom{}命令隐藏方程的某些部分,例如

\phantom{foo} & \phantom{{} = } \text{foo}

然后会对齐到不可见的=

在您的 MWE 上

\documentclass[twocolumn]{article}
\makeatletter
\renewcommand{\rmdefault}{ptm}
\renewcommand{\normalsize}{\@setfontsize{\normalsize}{9pt}{10pt}}
\makeatother
\usepackage[table]{xcolor}
\usepackage{amsmath}

\begin{document}
\begin{itemize} \item
    \begin{align}
        longfoo &\in foo \\
        foo &= longlonglongfoo \\
        foo &= foo && longlonglongfoo \\
        \phantom{foo} & \phantom{{} = } \, foo
    \end{align}
\end{itemize}
\end{document}

在此处输入图片描述

编辑:将幻影线改为

\phantom{foo} \phantom{{} = } & \! \! foo 

给予

在此处输入图片描述

相关内容