在这个问题OP 需要用一行代码绘制一系列箭头和标记节点。
让我们假设必须绘制一条从(0,0)
到 的均匀线;虚线箭头必须放置在 位置,另一种箭头位于线的右端。这是为了实现带有垂直虚线的坐标轴(10,0)
-|
(2,0)
(7,0)
->
x
仅在指定的横坐标点。
\documentclass[tikz,border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {};
\node (b) at (2,0) {};
\node (c) at (7,0) {};
\node (d) at (10,0) {};
\draw [-|] (a) edge (b) (b) edge (c) (c) edge (d);
\end{tikzpicture}
\end{document}
这是链接问题提供的解决方案:线路在每个节点处停止,并留有空格。
甚至在考虑结束箭头之前,->
如果我尝试
\draw [-|] (0,0) edge (2,0) edge (7,0) edge (10,0);
在线的开头之前出现了一个破折号(放大才能看到),这是不受欢迎的。
如何实现-|
在指定位置绘制一条连续的线,以 结尾->
,并可能以 结尾代码行?(如果即使没有定义节点也有解决方案,那么就可以:这里并不严格需要它们)。
答案1
如果你使用\coordinate
而不是\node
,你将不会得到间隙。你可以为不同的edge
s 设置不同的箭头提示,因此请尝试
\draw (a) edge[-|] (b) edge[-|] (c) edge[->] (d);
我markings
也添加了一个版本,以供参考。
\documentclass[tikz,border=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (2,0);
\coordinate (c) at (7,0);
\coordinate (d) at (10,0);
\draw (a) edge[-|] (b) edge[-|] (c) edge[->] (d);
\end{tikzpicture}
\begin{tikzpicture}[
decoration={markings,
mark=at position 0.2 with \arrow{|},
mark=at position 0.7 with \arrow{|}}
]
\coordinate (a) at (0,0);
\coordinate (d) at (10,0);
\draw [->,postaction={decorate}] (0,0) -- (10,0);
\end{tikzpicture}
\end{document}
答案2
有一个特点元帖子可以让你做到这一点,但(据我所知)TikZ 中没有这样的东西。构造subpath (a,b) of p
为你提供了一条从a
路径上的“时间”到路径上的p
时间的路径。时间(或多或少)等于沿路径的距离,就用于定义它的点数而言。因此,单个路径段的一端有点 0,另一端有点 1。你可以像这样使用它:b
p
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path a;
a = origin -- (10cm, 0);
draw a withcolor 3/4 white;
drawarrow subpath (.15, .25) of a;
drawarrow subpath (.65, .75) of a;
drawarrow subpath (.9, 1) of a;
endfig;
\end{mplibcode}
\end{document}
(lualatex
使用普通 MP 进行编译或调整)。这将产生:
(我只画了灰线来给你指示路径……)
这样做的好处是它可以适用于任意路径。因此,如果您想要一条有点波浪形的路径,您可以像这样重新定义路径:
a = origin {dir 15} .. {dir 15} (10cm, 0);
然后你会得到相同的箭头,但现在沿着弯曲的路径:
你可以根据需要把箭头设置得尽可能长,甚至可以设置成连续的:
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path a;
a = origin {dir 15} .. {dir 15} (10cm, 0);
drawarrow subpath (0, .2) of a;
drawarrow subpath (.2, .7) of a;
drawarrow subpath (.7, 1) of a;
endfig;
\end{mplibcode}
\end{document}
答案3
\documentclass[border=6pt]{standalone}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm]\
clip(-3,-10) rectangle (12,12);
\draw [->,line width=2pt] (0,0) -- (2,0);\draw [->,line width=2pt] (2,0) -- (4,0);
\draw [->,line width=2pt] (4,0) -- (6,0);
\end{tikzpicture}
\end{document}