Ich möchte eine Form (mit ausschließlich rechten Winkeln) in eine andere (mit ausschließlich rechten Winkeln) zeichnen. Die Kanten sollten möglichst nah beieinander liegen, ohne sich zu überlappen.
Ich kann etwas manuell erledigen, und zwar folgendermaßen:
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw [] (0, 0) -- (1, 0) -- (1, 1) -- (3, 1) -- (3, 2) -- (0, 2) -- (0, 0);
\draw [color=red] (0.02, 0.02) -- (0.98, 0.02) -- (0.98, 1.02) -- (2.98, 1.02) -- (2.98, 1.98) -- (0.5, 1.98) --
(0.5, 1) -- (0.02, 1) -- % Part that diverges
(0.02, 0.02);
\end{tikzpicture}
\end{document}
das produziert
aber natürlich ist das weder sehr robust (die „Verschiebung“ von 0,02 muss neu berechnet werden, wenn sich die Breite ändert) noch portierbar. Gibt es einen besseren Weg?
Antwort1
Versuche Folgendes:
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\begin{tikzpicture}[
u/.style = {yshift=#1\pgflinewidth},
s/.style = {xshift=#1\pgflinewidth}
]
\draw (0, 0) -- (1, 0) -- (1, 1) -- (3, 1) -- (3, 2) -- (0, 2) -- cycle;
\draw[color=red]
([u,s] 0,0) -| ([u,s=-] 1,1) -| ([u=-,s=-] 3,2)
-| ([u=-] 0.5,1) -| cycle;
\end{tikzpicture}
\end{document}
Sie können schwarze Linien auf die gleiche Weise zeichnen, wie ich rote zeichne (indem Sie -|
orthogonale Koordinaten verwenden, die den Code erheblich verkürzen).