是否可以使用同一个\draw
命令来更改 tikz 图形中的线条样式?
我正在寻找类似的东西:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[style1] (0,0) -- ++(1,0) **CHANGE STYLE** -- ++(1,0);
\end{tikzpicture}
\end{document}
主要动机是我不想在执行长\draw
命令时丢失相对坐标。
答案1
同一路径中不能有多种线条样式。您可以在路径的任意位置插入方括号来更改选项,但大多数选项都会影响整个路径。
一种解决方法是使用edge
操作,它类似于节点,因为它实际上是一条单独的路径:
\draw[style1] (0,0) -- ++(1,0) edge[style2] ++(1,0);
这对于直线和基本曲线非常有效(尝试bend left
、in angle
和out angle
作为 中的选项style2
)。
除了 Jens Polz 的回答之外,我建议使用操作coordinate
而不是node
:使用它,您不需要提供空节点内容,也不会在路径中出现间隙:
\draw[style1] (0,0) -- ++( 1,0) coordinate (x);
\draw[style2] (x) -- ++( 0,1) coordinate (x);
\draw[style3] (x) -- ++(-1,0);
可以对该临时坐标重新使用相同的名称。
答案2
我不太确定您是否可以在绘图命令中更改样式,所以我自己也对您的问题的答案感兴趣。但是,为了不丢失相对坐标,您可以执行以下操作。通过在绘图命令的最后一个坐标处放置和命名节点,您可以在下一个命令中调用它,而不会丢失相对坐标:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[thick] (0,1) -- ++ (1,0) -- ++ (4,2) -- ++ (1,1) node(A)[inner sep=0]{};
\draw[thick, dashed] (A) -- ++ (-2,0) -- ++ (0,-2) node(B)[inner sep=0]{};
\draw[thick] (B) -- ++ (2,0);
\end{tikzpicture}
\end{document}