我需要制作一个交换图,其中箭头本身标记为传入或传出。经过一番调整后,我生成了此命令,它产生了可接受的形状:
\newcommand{\outgoingarrow}{\ooalign{$\longrightarrow$\!\!\!\!\!\scalebox{2.4}{\raisebox{-4.5pt}{$\widehat{}$}}}}
现在我只需要在交换图中使用它。但似乎我不能只在 tikz-cd 图中使用该形状。我找到了这个答案:
但对于这种几乎未经过修改的箭头形状,这似乎相当麻烦。有没有办法让 tikz-cd 轻松识别我修改后的箭头形状?
答案1
答案2
让我们从某件事开始吧。
您可以将其\widehat
像任何其他节点一样放置在路径上。
在这里我定义了一个hat
可以为您完成所有这些操作的键。
sloped
,allow upside down
并midway
确保“尖端”遵循线的斜率并且保持在中间,而不管其他设置如何。yscale
只需yshift
将帽子移开,这样看起来就好看了。对于其他字体,可能需要进行调整。
当然,您可以在这里使用任何符号,也可以根据需要旋转它。
您还可以使用任何 TikZ 绘图,就像我在图片上所做的那样outgoing
,只是绘制了一条与路径正交的线。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{cd}
\tikzcdset{
tikzcd to small/.tip={tikzcd to[scale=.5, sep=+0pt +1]},
edge node/.style={/tikz/every to/.append style={edge node={#1}}},
/tikz/pics/outgoing/.style={
/tikz/sloped, /tikz/allow upside down, code={
\draw[pic actions] (0pt,0pt) -- (up:1ex);}},
outgoing/.style={edge node={pic[-tikzcd to small,#1]{outgoing}}},
outgoing'/.style={edge node={pic[-tikzcd to small,yscale=-1,#1]{outgoing}}},
incoming/.style={edge node={pic[tikzcd to small-,#1]{outgoing}}},
incoming'/.style={edge node={pic[tikzcd to small-,yscale=-1,#1]{outgoing}}},
hat/.style={edge node={
node[sloped, allow upside down, inner sep=+0pt, midway,
yscale=2, yshift=-.6ex]{$\widehat{}$}}}}
\begin{document}
\begin{tikzcd}
A \rar[hat] & B \dlar[hat, bend left] \\
C \uar[outgoing'] \urar[incoming']
\end{tikzcd}
\end{document}