如何垂直对齐两个方程式而没有水平空间?

如何垂直对齐两个方程式而没有水平空间?

请查看以下 MWE:

\documentclass{scrartcl}
\usepackage{amsmath,amstext,amssymb}
\begin{document}

\begin{align}
\cdots\text{ABB}&\bigg|\text{BAABB}&\bigg|\text{AAABB}&\bigg|\text{BB}&\bigg|\text{BB}&\bigg|\text{ABABAABABB}&\bigg|\text{AA}\cdots \\
n_0 &  n_1 & n_2 & n_3 & n_4 & n_5
\end{align}
\end{document}

这将产生以下输出:

在此处输入图片描述

我想将垂直线$\bigg|$和相应的标签$n_i$对齐。我也不希望在公式 (1) 后面有额外的空白$\bigg|$。我该如何实现呢?

答案1

如果我理解了你想要什么,这里有一个解决方案。它基于\vdotswithin来自的命令代码mathtools。所以我定义了一个\vertwithin{label}命令,将 \vert命令置于宽度为标签宽度的框的中心,并使用此框作为对齐点。

顺便说一句,对于 n 个对齐点,您需要使用& 符号。此外,如果您加载,则2n-1无需加载(如果您加载,则也无需加载,这会加载 amsmath)mathtextamsmathmathtools

我不确定您是否需要在文本段末尾留空格,因此我提供了两种解决方案:

\documentclass{scrartcl}
\usepackage{mathtools,amssymb}

\newcommand\vertwithin[1]{%
{\mathmakebox[\widthof{\ensuremath{{}#1{}}}][c]{{\biggm\vert}}}}%

\begin{document}

\begin{align}
 ⋯ \text{ABB} & \vertwithin{n₀} \text{BAABB} & & \vertwithin{n₁} \text{AAABB}& &\vertwithin{n₂} \text{BB} & & \vertwithin{n₃} \text{BB} & & \vertwithin{n₄} \text{ABABAABABB} & & \vertwithin{n₅} \text{AA} ⋯ \\
 & n₀ & & n₁ & & n₂ & & n₃ & & n₄ & & n₅
\end{align}

\begin{alignat}{6}
 ⋯ \text{ABB} & \vertwithin{n₀} \text{BAABB} & & \vertwithin{n₁} \text{AAABB}& & \vertwithin{n₂} \text{BB} & & \vertwithin{n₃} \text{BB} & & \vertwithin{n₄} \text{ABABAABABB} & & \vertwithin{n₅} \text{AA} ⋯ \\
 & n₀ & & n₁ & & n₂ & & n₃ & & n₄ & & n₅
\end{alignat}

\end{document} 

在此处输入图片描述

答案2

您可以使用alignat以下方法消除对齐标记之间的间隙&

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools,eqparbox}

\begin{document}

% Original alignment
\begin{align}
  \cdots\text{ABB}&\bigg|\text{BAABB}&\bigg|\text{AAABB}&\bigg|\text{BB}&\bigg|\text{BB}&\bigg|\text{ABABAABABB}&\bigg|\text{AA}\cdots \\
  n_0 &  n_1 & n_2 & n_3 & n_4 & n_5
\end{align}

% Updated alignment
\newcommand{\setvert}{\eqmakebox[eqmb]{$\bigg|$}}
\newcommand{\setsub}[1]{\eqmakebox[eqmb]{$\mathclap{#1}$}}
\begin{alignat}{6}
  \cdots\text{ABB}
    &\setvert\text{BAABB}
    &&\setvert\text{AAABB}
    &&\setvert\text{BB}
    &&\setvert\text{BB}
    &&\setvert\text{ABABAABABB}
    &&\setvert\text{AA}
  \cdots \\
    &\setsub{n_0}
    &&\setsub{n_1}
    &&\setsub{n_2}
    &&\setsub{n_3}
    &&\setsub{n_4}
    &&\setsub{n_5}
\end{alignat}

\end{document}

eqparbox计算出所有相似s\eqmakebox[<tag>]{<stuff>}的宽度(因此第一次至少需要两次编译)。我将第二个等式中的枚举放在 a 内,以避免它影响对齐。<stuff><tag>\mathclapalignat

相关内容