
Ich möchte in einem TikZ-Bild eine „globale Skalierung“ haben, die sich auch auf alle innerhalb einer tikzpicture
Umgebung 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 square
nicht 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 pic
Mal manuell zu skalieren.
Antwort1
transform shape
ist dein Freund. Normalerweise werden Dinge wie Knoten (und natürlich Bilder) nicht skaliert. Mit transform shape
kannst 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}