
Ist es möglich, den Linienstil in einer Tikz-Figur mit demselben \draw
Befehl zu ändern?
Ich suche so etwas wie:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[style1] (0,0) -- ++(1,0) **CHANGE STYLE** -- ++(1,0);
\end{tikzpicture}
\end{document}
Die Hauptmotivation besteht darin, dass ich die relativen Koordinaten nicht verlieren möchte, wenn ich mit einem langen \draw
Befehl fortfahre.
Antwort1
Sie können nicht mehrere Linienstile innerhalb desselben Pfads haben. Sie können praktisch überall auf einem Pfad eckige Klammern einfügen, um Optionen zu ändern, aber die meisten davon wirken sich dann auf den gesamten Pfad aus.
Ein Ausweg besteht darin, die edge
Operation zu verwenden, die einem Knoten darin ähnelt, dass es sich tatsächlich um einen separaten Pfad handelt:
\draw[style1] (0,0) -- ++(1,0) edge[style2] ++(1,0);
Dies funktioniert gut für gerade Linien und einfache Kurven (versuchen Sie bend left
und in angle
als out angle
Optionen in style2
).
Ergänzend zu Jens Polz‘ Antwort würde ich vorschlagen, die coordinate
Operation anstelle von zu verwenden node
: Wenn Sie sie verwenden, müssen Sie keine leeren Knoteninhalte angeben und Sie erhalten auch keine Lücken in Ihrem Pfad:
\draw[style1] (0,0) -- ++( 1,0) coordinate (x);
\draw[style2] (x) -- ++( 0,1) coordinate (x);
\draw[style3] (x) -- ++(-1,0);
Es ist möglich, den gleichen Namen für diese temporäre Koordinate wiederzuverwenden.
Antwort2
Ich bin mir nicht ganz sicher, ob man den Stil innerhalb eines Plotbefehls ändern kann, daher würde mich eine Antwort auf deine Frage interessieren. Um die relativen Koordinaten jedoch nicht zu verlieren, kannst du Folgendes tun. Indem du einen Knoten an der letzten Koordinate deines Plotbefehls platzierst und benennst, kannst du ihn im nächsten aufrufen, ohne deine relativen Koordinaten zu verlieren:
\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}