![数学模式和 tikz-cd 中带上标的箭头](https://linux22.com/image/396281/%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E5%92%8C%20tikz-cd%20%E4%B8%AD%E5%B8%A6%E4%B8%8A%E6%A0%87%E7%9A%84%E7%AE%AD%E5%A4%B4.png)
我有两种情况需要使用带有上标星号的箭头:数学模式和tikz-cd
图表。我希望能够在两种情况下都显示这样的箭头,使箭头看起来相同,即在星号的位置方面。
考虑下面的 MWE。这就是我希望箭头的样子。
平均能量损失
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz-cd}
\newcommand*\dirinfsymname{Rightarrow}
\newcommand*\directdatacolourname{PineGreen}
\newcommand*\directdatacolour{\textcolor{\directdatacolourname}}
\newcommand*\dirinfsym{\mathbin{\directdatacolour{\Rightarrow}}}
\newcommand{\pathdirinfsym}[1][]{\mathrel{
\vphantom{\dirinfsym{#1}}
\smash{\dirinfsym{#1}}
\vphantom{\to}^{\textcolor{PineGreen}{*}}}
}
\begin{document}
$a \pathdirinfsym b$
\end{document}
输出:
现在,考虑这个 MWE。
平均能量损失
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz,tikz-cd}
\usetikzlibrary{shapes,fit}
\usetikzlibrary{positioning}
\usetikzlibrary{decorations.pathmorphing}
\newcommand*\dirinfsymname{Rightarrow}
\newcommand*\directdatacolourname{PineGreen}
\newcommand*\directdatacolour{\textcolor{\directdatacolourname}}
\newcommand*\dirinfsym{\mathbin{\directdatacolour{\Rightarrow}}}
\begin{document}
\begin{tikzcd}[
column sep=small,
cells={nodes={draw=black, ellipse, anchor=center, minimum height=2em}}
]
a \arrow[\dirinfsymname, \directdatacolourname, bend left]{rrrrr}{*} & a \arrow[\dirinfsymname, \directdatacolourname]{r}{*} & a & |[draw=none]|a\vphantom{1} & a & a
\end{tikzcd}
\end{document}
输出:
注意两个箭头的星号位于字干的中间。我希望星号位于与第一张图相同的位置。
此外,我希望这不仅适用于\Rightarrow
。我希望能够为 做同样的事情\rightarrow
。
答案1
tizk-cd
可以使用箭头的字形,并arrows.meta
允许我们将箭头拼凑在一起。这里有一个更 Ti钾Zy 和更短的代码也具有\to
-type 箭头。
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz-cd}
\usetikzlibrary{shapes.geometric,arrows.meta}
\newcommand{\mysym}{\vphantom{\to}^{*}}
\begin{document}
\tikzset{
startip/.tip={Glyph[glyph math command=mysym]},
Rightarrow*/.style={PineGreen,double equal sign distance,>={Implies},->.startip},
to*/.style={PineGreen,->.startip}}
\begin{tikzcd}[
column sep=small,
cells={nodes={draw=black, ellipse, anchor=center, minimum height=2em}}
]
a \arrow[r,Rightarrow*]
\arrow[Rightarrow*, bend left]{rrrrr}{m} & a \arrow[Rightarrow*,r] & a
\arrow[to*,r] &
|[draw=none,rectangle,inner sep=1pt]|a\vphantom{1} \arrow[Rightarrow*,r] & a \arrow[Rightarrow*,r] & a
\end{tikzcd}
\end{document}
请注意,您不必停在这里,使用它您可以将任何符号拼凑在一起并将它们用作箭头。(当然,在给定点您可能想要使用bending
。)
这是使用宏的旧版本。
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{tikz-cd}
\usetikzlibrary{shapes.geometric,arrows.meta}
\newcommand*\dirinfsymname{Rightarrow}
\newcommand*\directdatacolourname{PineGreen}
\newcommand*\directdatacolour{\textcolor{\directdatacolourname}}
\newcommand*\dirinfsym{\mathbin{\directdatacolour{\Rightarrow}}}
\newcommand{\pathdirinfsym}[1][]{\mathrel{
\vphantom{\dirinfsym{#1}}
\smash{\dirinfsym{#1}}
\vphantom{\to}^{\textcolor{PineGreen}{*}}}
}
\newcommand{\mysym}{\hspace{1em}\vphantom{\to}^{\textcolor{PineGreen}{*}}}
\usetikzlibrary{arrows}
\begin{document}
\tikzset{
fancy/.tip={Glyph[glyph math command=mysym]},
pft/.style={\directdatacolourname,double equal sign
distance,>={Implies},->.fancy}
}
\begin{tikzcd}[
column sep=small,
cells={nodes={draw=black, ellipse, anchor=center, minimum height=2em}}
]
a \arrow[r,pft]
\arrow[pft, bend left]{rrrrr}{m} & a \arrow[pft,r] & a \arrow[pft,r] &
|[draw=none,rectangle,inner sep=1pt]|a\vphantom{1} \arrow[pft,r] & a \arrow[pft,r] & a
\end{tikzcd}
\end{document}