TikZ - 带有中点装饰器的箭头样式

TikZ - 带有中点装饰器的箭头样式

我正在创建一种具有不同类型箭头的交换图。到目前为止,我已经为不同类型的地图定义了不同的线条样式,如下所示:

\tikzstyle{map}=[->,>=stealth',semithick]
\tikzstyle{incmap}=[semithick, right hook-latex]
\tikzstyle{typemap}=[->,>=latex',thin, dashed]

这样,我就可以在我想要的布局中声明所有节点,然后我可以使用 轻松地在它们之间声明映射\draw[<style>]。此外,如果我认为它不正确,我可以轻松切换地图的样式(例如,从包含地图到普通地图)。

现在,我想为部分地图创建一个箭头样式,看起来像一个中点带有圆圈的普通箭头(无论箭头的长度如何)。我知道我可以逐个完成此操作,但我希望能够以与其他方式类似的方式以一种样式定义它。为了澄清起见,箭头应如下所示:

-o->
--o-->
---o--->

有什么建议么?

我没有使用 TikZ 的cd库,但我已经检查过并且没有任何东西可以解决问题。

提前致谢!

编辑:根据建议,我在这里添加了 MWE 和我的初始状态。

\documentclass{standalone}
\usepackage{tikz}

\usetikzlibrary{arrows,positioning,shapes}

\begin{document}
\begin{tikzpicture}[on grid,node distance=20mm]

\tikzstyle{element}=[inner sep=2pt,minimum height=1.3em,font=\itshape]
\tikzstyle{label}=[auto,midway,font=\itshape,inner sep=2pt]
\tikzstyle{map}=[->,>=stealth',semithick]
\tikzstyle{incmap}=[semithick, left hook-latex]
\tikzstyle{typemap}=[->,>=latex',thin, dashed]

\node[element] (l)  []  {L};
\node[element] (i)  [right of=l]    {I};
\node[element] (r)  [right of=i]    {R};

\draw[map]      (l) to node [label,above]   (lm)    {l}     (i);
\draw[incmap]   (r) to node [label,above]   (rm)    {r}     (i);

\end{tikzpicture}
\end{document}

答案1

使用markings效果很好。以下是我解决的方法:

\documentclass{standalone}
\usepackage{tikz}

\usetikzlibrary{arrows,positioning,shapes,decorations.markings}

\begin{document}
\begin{tikzpicture}[on grid,node distance=20mm,
  decoration={markings,mark=at position 0.5 with {\draw circle [radius=.4ex];}}]

\tikzset{element/.style={inner sep=2pt,minimum height=1.3em,font=\itshape}}
\tikzset{label/.style={auto,midway,font=\itshape,inner sep=2pt}}
\tikzset{map/.style={->,>=stealth',semithick}}
\tikzset{incmap/.style={semithick, left hook-latex}}
\tikzset{partmap/.style={->,>=latex,semithick,postaction={decorate}}}

\node[element] (l)  []  {L};
\node[element] (i)  [right of=l]    {I};
\node[element] (r)  [right of=i]    {R};

\draw[partmap]  (l) to node [label,above]   (lm)    {l}     (i);
\draw[incmap]   (r) to node [label,above]   (rm)    {r}     (i);

\end{tikzpicture}
\end{document}

再次感谢回答的人!

相关内容