标记箭头的更好的传递闭包

标记箭头的更好的传递闭包

我认为答案很简单,但我还没有找到:

\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]$

在此处输入图片描述

相关内容