
Я создаю своего рода коммутативную диаграмму с разными типами стрелок. До сих пор я определял разные стили линий для разных типов карт, например:
\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}
Еще раз спасибо всем, кто ответил!