对齐并匹配 \rightarrow 和 \xrightarrow 的长度

对齐并匹配 \rightarrow 和 \xrightarrow 的长度

在下面的例子中,我想使\rightarrow与 的长度相同\xrightarrow,同时将两者对齐。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{split}
A &\xrightarrow{\mathrm{closed\, loop}} B \\
C &\rightarrow D
\end{split}
\end{equation}
\end{document}

我发现我可以改变长度\rightarrow,使用calc's\widthof来获取正确的长度:

\documentclass{article}
\usepackage{amsmath}
\usepackage{calc}
\begin{document}
\begin{equation}
\begin{split}
A &\xrightarrow{\mathrm{closed\, loop}} B \\
C &\parbox{\widthof{$\xrightarrow{\mathrm{closed\, loop}}$}}{\rightarrowfill} D
\end{split}
\end{equation}
\end{document}

但是我随后失去了两个箭头的对齐(并且我$...$对在 中使用 感到不高兴equation。有没有办法将这两个箭头对齐?有没有更好的方法让两个箭头长度相同?

答案1

您只需要一个\hphantom

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{split}
A &\xrightarrow{\mathrm{closed\, loop}} B \\
C &\xrightarrow{\hphantom{\mathrm{closed\, loop}}} D
\end{split}
\end{equation}
\end{document}

在此处输入图片描述

答案2

这个答案其实和@Schrödinger的答案是一样的,我添加了两个命令,方便使用。

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\firstarrow}[2][default]{
  \expandafter\gdef\csname arrow@content@#1\endcsname{#2}
  \xrightarrow{\@nameuse{arrow@content@#1}}
}
\newcommand{\alignarrow}[1][default]{\xrightarrow{\hphantom{\@nameuse{arrow@content@#1}}}}
\makeatother

\begin{document}
\begin{equation}
\begin{split}
  A &\firstarrow{\mathrm{closed\, loop}} B \\
  A &\alignarrow B\\
  C &\firstarrow[test]{a_c} D\\
  A &\alignarrow B\\
  C &\alignarrow[test] D\\
\end{split}
\end{equation}
\end{document}

在此处输入图片描述

相关内容