
Quiero tener una "escala global" en una imagen de TikZ, que también afecta a todas las imágenes definidas dentro de un tikzpicture
entorno. 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}
¿Por qué el cuadrado rojo definido en square
no encaja con el cuadrado verde dibujado dentro de tikzpicture
? ¿Cómo puedo hacer que la escala sea global y afecte a todas las fotografías definidas dentro de ella? Me gustaría evitar escalar cada pic
mano.
Respuesta1
transform shape
es tu amigo. Por lo general, elementos como los nodos (y obviamente las fotografías) no están escalados. Con transform shape
, puedes hacer cumplir esto. Tenga en cuenta que esto también escala el texto.
\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}