我想要在 TikZ 图片中进行“全局缩放”,这也会影响tikzpicture
环境中定义的所有图片。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}
为什么 中定义的红色方块与square
中绘制的绿色方块不相配tikzpicture
?如何使缩放成为全局的,影响其中定义的所有图片?我想避免手动缩放每一个pic
。
答案1
transform shape
是你的朋友。通常,节点(当然还有图片)之类的东西不会缩放。使用transform shape
,你可以强制执行这一点。请注意,这也会缩放文本。
\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}