Tikz:是否可以在同一個 \draw 指令中更改線條樣式?

Tikz:是否可以在同一個 \draw 指令中更改線條樣式?

是否可以在同一命令中更改 tikz 圖中的線條樣式\draw

我正在尋找類似的東西:

\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}

相關內容