请查看以下 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)mathtext
amsmath
mathtools
我不确定您是否需要在文本段末尾留空格,因此我提供了两种解决方案:
\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>
\mathclap
alignat