TikZ - Estilo para seta com decorador de ponto médio

TikZ - Estilo para seta com decorador de ponto médio

Estou criando uma espécie de diagrama comutativo com diferentes tipos de setas. Até agora, defini diferentes estilos de linha para meus diferentes tipos de mapa, assim:

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

Dessa forma, declaro todos os meus nós no layout que desejo e então posso declarar mapas entre eles facilmente usando \draw[<style>]. Além disso, posso facilmente mudar o estilo de um mapa (por exemplo, de um mapa de inclusão para um normal) se decidir que não é o correto.

Agora, quero criar um estilo de seta para mapas parciais que se pareça com uma seta normal com um círculo no ponto médio (não importa o comprimento da seta). Eu sei que posso fazer isso um por um, mas gostaria de poder definir isso num estilo, de forma semelhante aos outros. Para esclarecer, as setas devem ficar assim:

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

Alguma sugestão?

Não estou usando cda biblioteca do TikZ, mas verifiquei e não há nada que resolva o problema.

Desde já, obrigado!

EDITAR:Conforme sugerido, adiciono aqui o MWE com meu status inicial.

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

Responder1

Usando markingsfuncionou perfeitamente. Aqui está como eu resolvi isso:

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

Obrigado novamente às pessoas que responderam!

informação relacionada