Wie kann ich die Skalierung auf TikZ-Bilder innerhalb eines Tikz-Bildes auswirken?

Wie kann ich die Skalierung auf TikZ-Bilder innerhalb eines Tikz-Bildes auswirken?

Ich möchte in einem TikZ-Bild eine „globale Skalierung“ haben, die sich auch auf alle innerhalb einer tikzpictureUmgebung definierten Bilder auswirkt. MWE:

\documentclass[tikz, border=2mm]{standalone}
\begin{document}
    \begin{tikzpicture}[scale=0.5]    
        \draw [green] (0,0) rectangle (10,10);
        \tikzset{square/.pic={\draw [red] (0,0) rectangle (10,10);}}
        \draw (0,0) pic {square};
    \end{tikzpicture}
\end{document}

Warum passt das in definierte rote Quadrat squarenicht in das darin gezeichnete grüne Quadrat tikzpicture? Wie kann ich die Skalierung global machen, sodass sie sich auf alle darin definierten Bilder auswirkt? Ich möchte vermeiden, jedes picMal manuell zu skalieren.

Bildbeschreibung hier eingeben

Antwort1

transform shapeist dein Freund. Normalerweise werden Dinge wie Knoten (und natürlich Bilder) nicht skaliert. Mit transform shapekannst du das erzwingen. Beachte, dass dadurch auch Text skaliert wird.

\documentclass[tikz, border=2mm]{standalone}
\begin{document}
    \begin{tikzpicture}[scale=0.5, transform shape] % <--- Here!  
        \draw [green] (0,0) rectangle (10,10);
        \tikzset{square/.pic={\draw [red] (0,0) rectangle node[midway, transform shape = false] { Foo } (10,10);}} % note the inserted, not transformed text node
        \draw (0,0) pic {square};
    \end{tikzpicture}
\end{document}

verwandte Informationen