我的问题与TikZ:如何在线中间画箭头?:
我的例子:我喜欢有两个圆圈 - 我想将圆圈 1 的箭头定位在圆圈 1 的西南偏南位置,将圆圈 2 的箭头定位在圆圈 2 的东北偏北位置。
我的个人“秘诀”:
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows}
\usetikzlibrary{through}
\usetikzlibrary{automata,backgrounds}
\begin{tikzpicture}[node distance=2cm]
\begin{scope}[every node/.style={sloped,allow upside down,circle,
fill=black,inner sep=2pt}]
\node[draw,fill=white,inner sep=10pt, xshift=-0.49cm] (loop) {};
\node (n1){} ;
\node[draw,fill=white,inner sep=10pt,right of=n1,xshift=0.49cm] (loop2) {};
\node (n2) [right of=n1] {};
\end{scope}
\draw (loop)-- node {\midarrowcirc} (loop);
\draw (n1)-- node {\midarrow} (n2);
\draw (loop2)-- node {\midarrowcirc} (loop2);
\end{tikzpicture}
不幸的是我无法定位箭头。感谢您的帮助!
PS 抱歉,也许库太多了 - 这是基于我的试验...
答案1
这就是我解决问题的方法(假设我理解正确):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
% draw the two circles and decorate them with arrows
\draw[
decoration={markings, mark=at position 0.625 with {\arrow{>}}},
postaction={decorate}
]
(0,0) circle (0.5);
\draw[
decoration={markings, mark=at position 0.125 with {\arrow{>}}},
postaction={decorate}
]
(3,0) circle (0.5);
% draw the connecting line
\draw[
decoration={markings, mark=at position 0.5 with {\arrow{>}}},
postaction={decorate}
]
(0.5,0) -- (2.5,0);
% draw the two black dots
\fill (0.5,0) circle (0.1);
\fill (2.5,0) circle (0.1);
\end{tikzpicture}
\end{document}
绘制圆形的说明见 TikZ 手册 14.7 节“圆形和椭圆形操作”(所有编号均参考 v2.10 手册)。一般语法为(<center>) circle (<radius>)
。
箭头是作为装饰添加的(第 21 章“装饰路径”和第 30 章“装饰库”)。具体来说,我们在给定位置添加箭头形式的标记。位置在 [0,1] 范围内,0 表示路径的起点,1 表示路径的终点。圆总是从最右边的点开始和结束,并逆时针移动。
由于标记装饰在没有先绘制路径的情况下用指定路径替换路径,所以我们需要先正常绘制圆圈,然后再添加装饰postaction
(作用于路径的副本)。