
我正在創建一種帶有不同類型箭頭的交換圖。到目前為止,我已經為不同類型的地圖定義了不同的線條樣式,如下所示:
\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}
再次感謝回答的人!