是否有类似的命令,\overbrace{foo}^{bar}
但不是用括号,而是指向上/下的箭头?
编辑:这里有一个小演示,说明我期望这样的事情如何工作:
可能的语法是\overarrow{a=b}^{\text{theorem X}}
答案1
这是一个通用方法,提供\overarrow[<relation>][<arrow>]{<stuff>}
。默认情况下<relation>
是=
和(两个参数都是可选<arrow>
的\uparrow
)。对此的补充是\underarrow[<relation>][<arrow>]{<stuff>}
下面的排版<operator>
(在 中<arrow>
有默认值)。<downarrow>
\underarrow
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentCommand{\overarrow}{O{=} O{\uparrow} m}{%
\overset{\makebox[0pt]{\begin{tabular}{@{}c@{}}#3\\[0pt]\ensuremath{#2}\end{tabular}}}{#1}
}
\NewDocumentCommand{\underarrow}{O{=} O{\downarrow} m}{%
\underset{\makebox[0pt]{\begin{tabular}{@{}c@{}}\ensuremath{#2}\\[0pt]#3\end{tabular}}}{#1}
}
\begin{document}
\begin{align*}
\alpha &\overarrow{Theorem X}\beta & \alpha &\underarrow{Theorem X}\beta \\
\alpha &\overarrow[\approx]{Theorem Y}\beta & \alpha &\underarrow[\approx]{Theorem Y}\beta \\
\alpha &\overarrow[>][\downarrow]{Theorem Z}\beta & \alpha &\underarrow[>][\uparrow]{Theorem Z}\beta
\end{align*}
\end{document}
这种排版和那种排版之间的一个区别由@Herbert 提出是\stackrel
修改上部组件的大小。由于此答案中的\overarrow
和用于堆叠项目,因此看不到大小调整。\underarrow
tabular
xparse
提供混合可选/强制参数的接口。
答案2
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\overUnderArrow{\@ifnextchar[\overUnderArrow@i{\overUnderArrow@i[]}}
\def\overUnderArrow@i[#1]#2#3{% #1 under #2 over #3 main argument
\ifx\relax#1\relax\array[b]{c}\overset{\text{#2}}{\uparrow}\\#3\endarray
\else\ifx\relax#2\relax
\array[t]{c}#3\\\underset{\text{#1}}{\downarrow}\endarray
\else
\array{c}\overset{\text{#2}}{\uparrow}\\#3\\\underset{\text{#1}}{\downarrow}\endarray
\fi\fi}
\makeatother
\begin{document}
\[
\overUnderArrow[TheoremX]{TheoremX}{\alpha = \beta}
\overUnderArrow{TheoremX}{\alpha = \beta}
\overUnderArrow[TheoremX]{}{\alpha = \beta}
\]
\end{document}
语法是\overUnderArrow[below]{above}{main entry}
。还可以扩展变量箭头方向的定义。