我正在创建一种具有不同类型箭头的交换图。到目前为止,我已经为不同类型的地图定义了不同的线条样式,如下所示:
\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}
再次感谢回答的人!