Desenhe uma forma “dentro” de outra

Desenhe uma forma “dentro” de outra

Eu gostaria de desenhar uma forma (apenas com ângulos retos) dentro de outra (apenas com ângulos retos). As bordas devem ficar o mais próximas possível, sem sobreposição.

Posso fazer algo manualmente, como segue:

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

que produz

insira a descrição da imagem aqui

mas é claro que isso não é muito robusto (o "deslocamento" de 0,02 deve ser recalculado se a largura mudar) nem portátil. Existe uma maneira melhor?

Responder1

Experimente o seguinte:

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

insira a descrição da imagem aqui

Você pode desenhar linhas pretas da mesma maneira que eu desenho uma vermelha (usando -|coordenadas ortogonais que encurtam significativamente o código).

informação relacionada