在对齐环境中将文本重叠在等号上

在对齐环境中将文本重叠在等号上

看看下面的例子

\begin{align}
     & x \\
     \overset{\text{some long explanation}}= & foo \\
     & = bar
\end{align}

使等号对齐的最佳方法是什么?现在我已经看到了不同的解决方案,例如添加\overset{\hphantom{\ţext{some long explanation}}}=到每行的开头,但我真的不认为这是最好的解决方案。有什么更好的想法吗?


更新

我想我真正想要的是

  1. 将对齐环境的第一列右对齐
  2. 将等号在溢流文本下方右对齐

答案1

\documentclass{article}
\usepackage{mathtools}
\begin{document}

\begin{align}
  x & \\
    &\overset{\mathclap{\strut\text{some long explanation}}}= foo\\
    & = bar
\end{align}

\end{document}

答案2

你说你不想重复“一些冗长的解释”,但据我所知,确实没有更好的方法可以做到这一点。

这就是你想要的吗?

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align}
 x &\overset{\text{some long explanation}}= foo \\
   &\overset{\phantom{\text{some long explanation}}}= bar
\end{align}
\end{document}

答案3

下面的宏怎么样\alignedoverset?它保留间距并对齐第二个参数的左边缘?

\documentclass{article}
\usepackage{amsmath, calc}
\newlength\oversetwidth
\newlength\underwidth
\newcommand\alignedoverset[2]{
  % #1 = over
  % #2 = under
  \settowidth\oversetwidth{$\overset{#1}{#2}$}
  \settowidth\underwidth{$#2$}
  \setlength\oversetwidth{\oversetwidth-\underwidth}
  \hspace{.5\oversetwidth}
  &
  \settowidth\oversetwidth{$\overset{#1}{#2}$}
  \settowidth\underwidth{$#2$}
  \setlength\oversetwidth{\oversetwidth-\underwidth}
  \hspace{-.5\oversetwidth}
  \overset{#1}{#2}
}

\begin{document}
\begin{align}
  x + 2 \alignedoverset{\text{some long explanation}}{\geq} foo \\
  & = bar
\end{align}
\end{document}

在此处输入图片描述

如果第二个参数比第一个参数长,这似乎会中断,但在这种情况下根本没有必要。

答案4

根据你想要的黑客程度,你可以在第一个解决方案中使用不那么肮脏的技巧,非常第二种解决方案中的肮脏伎俩。

我绝对更喜欢第三种解决方案。

\documentclass{article}
\usepackage{amsmath}

% for the first solution
% see http://tex.stackexchange.com/a/209732/4427
\makeatletter
\newcommand{\Cen}[2]{%
  \ifmeasuring@
    #2%
  \else
    \makebox[\ifcase\expandafter #1\maxcolumn@widths\fi]{$\displaystyle{}#2$}%
  \fi
}
\makeatother

% for the second solution
\newcommand{\CEN}[1]{%
  \multispan{1}\hfill$\displaystyle{}#1$\hfill
}

\begin{document}

\begin{alignat}{2}
x & \Cen{2}{{}\overset{\text{some long explanation}}={}} && foo \\
  & \Cen{2}{{}={}}                                       && bar
\end{alignat}

\begin{alignat}{2}
x & \CEN{\overset{\text{some long explanation}}=} && foo \\
  & \CEN{=}                                       && bar
\end{alignat}

\begin{alignat}{2}
x &= foo &\qquad& \text{(some long explanation)} \\
  &= bar
\end{alignat}

\end{document}

在此处输入图片描述

相关内容