过度支撑/不足支撑,但用箭头代替

过度支撑/不足支撑,但用箭头代替

是否有类似的命令,\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和用于堆叠项目,因此看不到大小调整。\underarrowtabular

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}。还可以扩展变量箭头方向的定义。

相关内容