如何在 tikz-cd 图中使用修改后的箭头?

如何在 tikz-cd 图中使用修改后的箭头?

我需要制作一个交换图,其中箭头本身标记为传入或传出。经过一番调整后,我生成了此命令,它产生了可接受的形状:

\newcommand{\outgoingarrow}{\ooalign{$\longrightarrow$\!\!\!\!\!\scalebox{2.4}{\raisebox{-4.5pt}{$\widehat{}$}}}}

箭头标记为传出。

现在我只需要在交换图中使用它。但似乎我不能只在 tikz-cd 图中使用该形状。我找到了这个答案:

tikzcd 中的自定义箭头形状

但对于这种几乎未经过修改的箭头形状,这似乎相当麻烦。有没有办法让 tikz-cd 轻松识别我修改后的箭头形状?

答案1

我不确定这是否是您想要的,但您可以使用marking选项在箭头上放置符号。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}
A\arrow[r,"\uparrow"marking]\arrow[d] & B\arrow[d]\\
C\arrow[r,"\downarrow"marking] & D
\end{tikzcd}

\end{document}

或者你可以使用\wedgeand\vee代替\uparrowand \downarrow

在此处输入图片描述

答案2

让我们从某件事开始吧。

您可以将其\widehat像任何其他节点一样放置在路径上。

在这里我定义了一个hat可以为您完成所有这些操作的键。

  • slopedallow upside downmidway确保“尖端”遵循线的斜率并且保持在中间,而不管其他设置如何。
  • 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}

输出

在此处输入图片描述

相关内容