
Quero ter "escala global" em uma imagem TikZ, que também afeta todas as fotos definidas em um tikzpicture
ambiente. 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 que o quadrado vermelho definido em square
não cabe no quadrado verde desenhado dentro de tikzpicture
? Como posso tornar o dimensionamento global, afetando todas as fotos definidas nele? Eu gostaria de evitar dimensionar tudo pic
manualmente.
Responder1
transform shape
é seu amigo. Normalmente, coisas como nós (e obviamente fotos) não são dimensionadas. Com transform shape
, você pode impor isso. Observe que isso também dimensiona o 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}