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}

再次感謝回答的人!

相關內容