\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\node[draw, circle, minimum size=2cm] (c) at (0, 0){};
\draw[->] (-1, 2)--(1, 2);
\end{tikzpicture}
\end{document}
我将箭头置于圆圈上方作为中心,这样我可以轻松“计算”坐标。是否可以按照以下方式制作相同的箭头:绘制一条“x cm”线,箭头位于“c”上方?
我尝试了pic
一种方法,但它过于复杂,而且相对于 的功能有限node
(例如相对于 放置标签pic
)。我认为另一种方法可能是将带有箭头的线定义为预定义形状(我仍然不擅长)。还有其他直接的方法吗?
答案1
还有一个版本:
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\MyCenterArrow[4][]{%[pass to \draw]{node}{above}{length}
\draw[->,#1]($(#2)+(-#4/2,#3)$) -- +(#4,0);
}
\begin{document}
\begin{tikzpicture}
\node[draw,circle,minimum size=2cm](a){A};
\MyCenterArrow{a}{2cm}{1cm}
\node[draw,minimum size=2cm](b) at (3,0) {B};
\MyCenterArrow{b}{2cm}{3cm}
\MyCenterArrow[red]{b}{-2cm}{2cm}
\MyCenterArrow[green,-latex]{$(a)!0.5!(b)$}{-1.5cm}{2cm}
\end{tikzpicture}
\end{document}
答案2
一个简单的shift
就可以完成这个工作:
\draw[->] ([shift={(-`half length`,`separation`)}]c.north)--++(0:`total length`);
一些例子:
\documentclass[tikz, border=1cm]{standalone}
%\input{preamble}
\begin{document}
\begin{tikzpicture}
\node[draw, circle, minimum size=2cm] (c) at (0, 0){};
\draw[->] ([shift={(-1cm,1.5cm)}]c.north)--++(0:2cm);
\draw[->] ([shift={(-1.5cm,1.2cm)}]c.north)--++(0:3cm);
\draw[->] ([shift={(-.5cm,.5cm)}]c.north)--++(0:1cm);
\end{tikzpicture}
\end{document}
答案3
您可以使用calc
库tikz
并使用(c.west)
它获取节点的左侧和(c.east)
右侧。结果是相同的。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node[draw, circle, minimum size=2cm] (c) at (0, 0){};
\draw[->] ($(c.west)+(0,2)$)--($(c.east)+(0,2)$);
\end{tikzpicture}
\end{document}
答案4
该宏在上面绘制一个圆圈和一个箭头。
\documentclass[tikz, border = 1cm]{standalone}
\begin{document}
% #1 x of circle.
% #2 y of circle.
% #3 Radius of circle.
\newcommand{\allyourstuff}[3]{%
\draw (#1, #2) circle (#3);
\draw[->] (#1 - #3, #2 + #3 + 2ex) -- ++(2 * #3, 0);
}
\begin{tikzpicture}
\allyourstuff{1cm}{0cm}{0.5cm}
\allyourstuff{12mm}{-20mm}{10mm}
\end{tikzpicture}
\end{document}