Zeichnen Sie eine Form „in einer anderen“

Zeichnen Sie eine Form „in einer anderen“

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

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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).

verwandte Informationen