TikZ - 中点デコレータ付き矢印のスタイル

TikZ - 中点デコレータ付き矢印のスタイル

私は、さまざまな種類の矢印を使用して、一種の可換図を作成しています。これまで、次のように、さまざまな種類のマップにさまざまな線のスタイルを定義してきました。

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

この方法では、必要なレイアウトですべてのノードを宣言し、 を使用してそれらの間のマップを簡単に宣言できます\draw[<style>]。さらに、マップのスタイルが適切ではないと判断した場合は、マップのスタイルを簡単に切り替えることができます (例: インクルージョン マップから通常のマップへ)。

ここで、部分マップの矢印スタイルを作成します。これは、中間点に円がある通常の矢印のように見えます (矢印の長さは関係ありません)。これを 1 つずつ実行できることはわかっていますが、他の方法と同様に、スタイルで定義できるようにしたいと思います。明確にするために、矢印は次のようになります。

-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}

回答してくださった皆様に改めて感謝いたします!

関連情報