在 `tikz-cd` 中,定义箭头样式以通过箭头添加标签/节点?

在 `tikz-cd` 中,定义箭头样式以通过箭头添加标签/节点?

我正在写一篇包含大量交换图的论文,使用tikz-cd,并使用不同的样式来区分图中不同类型的映射。例如,单射映射有一个钩状尾部,由 定义和使用

\tikzset{inj/.code={\pgfsetarrowsstart{right hook}}}
\begin{tikzcd} A \ar[r,inj] & B \end{tikzcd}

有一个我很难定义。它应该大致产生一个箭头旁边的下标“lw”,即\类似

\begin{tikzcd} A \ar[r,"lw"' very near end] & B \end{tikzcd}

我如何定义一种样式lw,以便我可以\begin{tikzcd} A \ar[r,lw] & B \end{tikzcd}像上面描述的那样在箭头旁边获取下标“lw”?

像上面的例子一样,添加一个标签的属性"lw"' very near end就足够了。但是,如果可以做一些事情,比如将节点相对于箭头放置,这样就可以使用节点定位的通用语法来微调“lw”的位置,那就更好了。

梅威瑟:

\documentclass{standalone}
\usepackage{tikz-cd} \usetikzlibrary{arrows}
\begin{document}

% example of defining/using arrow styles:
\tikzset{inj/.code={\pgfsetarrowsstart{right hook}}}
\begin{tikzcd} A \ar[r,inj] & B \end{tikzcd}

% what I want to define a style for:
\begin{tikzcd} A \ar[r,"lw"' very near end] & B \end{tikzcd}

\end{document}

答案1

非常简单:

\tikzset{lw/.style={"lw"' very near end}}

如果您希望向标签添加更多设置,您可以执行以下操作:

\tikzset{
  lw/.style={"lw"'{very near end,#1}},
  lw/.default={}
}

然后,您可以使用不带参数的样式 ( \ar[r,lw]),或者带参数的样式 ( \ar[r,lw={blue}])。

代码输出

\documentclass[border=5mm]{standalone}
\usepackage{amsmath}

\usepackage{tikz-cd}
\usetikzlibrary{arrows}
\tikzset{
  lw/.style={"lw"'{very near end,#1}},
  lw/.default={}
}
\begin{document}
\begin{tikzcd}
  A \ar[r,lw] & B  \ar[r,lw={pos=1,yshift=-2pt,blue,draw}] & C
\end{tikzcd}
\end{document}

相关内容