我在 TikZ 图中有一个椭圆,我想用箭头指示方向,但不想画出通向箭头的路径。
我目前有
\draw[->] (0,2) arc (90:45:1 and 2);
\draw (0,0) ellipse (1 and 2);
但我希望通向箭头的弧线是不可见的(因此它不会在椭圆上重新绘制),这样就只显示头部。
实现这一目标的最佳方法是什么?
答案1
您可以使用路径装饰:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[decoration={
markings,
mark=at position 0.2 with {\arrow{<}}}
]
\draw[postaction={decorate}] (0,0) ellipse (1 and 2);
\end{tikzpicture}
\end{document}
答案2
(使用 TikZ 3.0.1a 测试)
您可以使用tips
键来配置箭头的绘制。tips
键的初始值为on draw
,因此最初,只有在绘制路径本身时才会绘制箭头。但您可以将键设置tips
为,true
以便即使对于未绘制的路径也绘制箭头。
\path[tips, ->] (0,2) arc (90:45:1 and 2);
\draw (0,0) ellipse (1 and 2);
请参阅第 16.2 章(箭头放置的位置和时间)。TikZ 和 PGF 手册。
答案3
使用 TikZ 3.0 测试:
- 加载
arrows.meta
库而不是arrows
draw opacity=0
作为选项添加到\draw
,但不添加到箭头,例如>={LaTeX[]}
尾部将完全不透明,即不会显示,只有头部可见。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw[->,>={LaTeX[]},draw opacity=0] (0,2) arc (90:45:1 and 2);
%\draw (0,0) ellipse (1 and 2);% commented out to see only the tip
\end{tikzpicture}
\end{document}
答案4
你可以用很简单的方法来做元帖子。该arrowhead
宏以任意路径作为参数,并返回给定路径末尾箭头的路径。
使用适当的subpath
命令,您可以将箭头放置在路径上的任意位置。标准arrowhead
箭头看起来相当坚固,因此您可能更喜欢下面包含的开放或弯曲版本。
prologues := 3;
outputtemplate := "%j%c.eps";
vardef open_arrowhead expr p =
save q,e; path q; pair e;
e = point length p of p;
q = gobble(p shifted -e cutafter makepath(pencircle scaled 2ahlength))
cuttings;
(q rotated .5ahangle & reverse q rotated -.5ahangle) shifted e
enddef;
vardef curly_arrowhead expr p =
save q,e; path q, q'; pair e;
e = point length p of p;
q = gobble(p shifted -e cutafter makepath(pencircle scaled 2ahlength))
cuttings;
q' = q rotatedabout(point 1/2 of q,90);
(point 0 of q' { direction 0 of q' }
..
{ direction infinity of q } point infinity of q { - direction infinity of q }
..
{ direction infinity of q' } point infinity of q'
) shifted e
enddef;
beginfig(1);
path ellipse;
ellipse = fullcircle xscaled 2cm yscaled 4cm;
draw ellipse withcolor .63 red;
ahlength := 3;
filldraw arrowhead subpath (2,3) of ellipse;
draw open_arrowhead subpath (2,1) of ellipse;
draw curly_arrowhead subpath (1,2) of ellipse;
endfig;
end.
请注意,您需要draw
我的开放式箭头,而标准箭头则需要filldraw
。还请注意如何使用整齐地获取反向路径subpath
。