Как сделать так, чтобы масштабирование влияло на TikZ-pics внутри tikzpicture?

Как сделать так, чтобы масштабирование влияло на TikZ-pics внутри tikzpicture?

Я хочу иметь «глобальное масштабирование» в изображении 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}

Связанный контент