我认为答案很简单,但我还没有找到:
我\xrightarrow\tau
经常使用带标签的箭头。有时,我需要这种关系的传递闭包,我写了它
\xrightarrow\tau^*
,但是星号太高了,远远高于\tau
。
\rightarrow^*
即使我有标签,我怎样才能将星星放在与我写的相同的高度?
人物:
答案1
\documentclass{article}
\usepackage{amsmath}
\def\Xrightarrow#1#2{\xrightarrow#1{}\negthickspace^#2}
\begin{document}
$ \rightarrow^*$
$ \xrightarrow\tau{}\!\!^* $
$ \Xrightarrow\tau* $
\end{document}
\!\!
是相同的\negthickspace
答案2
您可以使用\raisebox
来调整 的高度*
。以下是原始版本和带有 的版本\raisebox
:
我还定义了一个宏\myxrightarrow
,您可以使用它来\myxrightarrow{\tau}
获得相同的效果。
\documentclass[border=2pt]{standalone}
\usepackage{amsmath}
\newcommand*{\myxrightarrow}[1]{{\xrightarrow{#1}}\raisebox{0.4ex}{\scriptsize*}}%
\begin{document}
$\xrightarrow\tau^*$
${\xrightarrow\tau}\raisebox{0.4ex}{\scriptsize *}$
$\myxrightarrow{\tau}$
\end{document}
答案3
这是另一个版本,它定义了一个新箭头\xrighttransarrow
(也许有更好的名字……)。这是一个可扩展的箭头,以 的定义为模型,\xrightarrow
使 成为*
箭头的一部分,而不是事后添加的装饰。为了使间距正确,需要进行一些调整:就*
的位置而言,必须忽略\tau
,但在将箭头与其周围的文本一起定位时必须考虑到它。我可能把这些部分弄乱了,因为我不是长度方面的专家。在不同的数学风格中也可能会出错。
代码如下:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newdimen\arrow@ht
\setbox\@tempboxa\hbox{\(\rightarrow\)}
\arrow@ht\ht\@tempboxa
\newdimen\star@wd
\setbox\@tempboxa\hbox{\(\scriptstyle *\)}
\star@wd\wd\@tempboxa
\def\righttransarrowfill@{\arrowfill@\relbar\relbar{\raisebox{0pt}[\arrow@ht][0pt]{\(\rightarrow^*\hskip-\star@wd\)}}}
\setbox\@tempboxa\hbox{\(\rightarrow\)}
\arrow@ht\ht\@tempboxa
\newcommand{\xrighttransarrow}[2][]{\ext@arrow 0359\righttransarrowfill@{#1}{#2}\hskip\star@wd}
\makeatother
\begin{document}
\(
a\rightarrow^* b
a\xrightarrow\tau^* b
a\xrightarrow{\raisebox{0pt}[0pt][0pt]{\(\scriptstyle\tau\)}}^* b
a \xrighttransarrow\tau b
\)
\end{document}
\raisebox
结果如下(请注意,中间还有另一个解决方案):
答案4
这是一个更简单的定义
\newcommand{\tto}[1][]{\mathrel{
\vphantom{\xrightarrow{#1}}
\smash{\xrightarrow{#1}}
\vphantom{\to}^*}
}
$\tto$
$\tto[\tau]$