Tikz:是否可以在同一个 \draw 命令中更改线条样式?

Tikz:是否可以在同一个 \draw 命令中更改线条样式?

是否可以使用同一个\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 leftin angleout 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}

相关内容