Como aninhar subdesenhos em um desenho maior no TikZ?

Como aninhar subdesenhos em um desenho maior no TikZ?

Quero desenhar vários desenhos complexos e juntá-los em um desenho maior do TikZ. Como faço isso?

Até agora, isso é o que eu fiz:

\documentclass[preview]{standalone}

\begin{document}
\begin{tikzpicture}
  \draw[help lines] (0,0) grid (10, 10);

  \node (rectifier) at (0,0) {
    \begin{tikzpicture}
      \node (sine) at (1.25,3) {
        \begin{tikzpicture}[scale=0.4]
          \draw (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0);
        \end{tikzpicture}
      };
      \node (rect) at (2.75,1) {
        \begin{tikzpicture}[scale=0.4]
          \draw (0,2) sin ++(1,1) cos (2,2) sin (3,3) cos (4,2) ;
        \end{tikzpicture}
      };
      \draw (0,0) rectangle (4,4) -- (0,0);
    \end{tikzpicture}
  };
\end{tikzpicture}
\end{document}

Problema:
Quero que toda a (rectifier)caixa e todo o seu conteúdo sejam escaláveis ​​a partir do nível superior, assim:

\node (rectifier) at (0,0) {
  \begin{tikzpicture}[scale=0.5]
  ...
  ...
  ...

Mas dimensiona apenas a caixa, e não os desenhos sinusóides.

Extensão:
Existe um paradigma "orientado a objetos" no TikZ, onde posso declarar classes de objetos e simplesmente instanciá-los em um desenho maior?

Responder1

Primeiro de tudo, você está colocando imagens dentro de nós. Embora funcione e muitas vezes seja o que deve ser feito, é delicado de usar quando transformações devem ser aplicadas.

Segundo item, conceitualmente seu diagrama parece ser coisas no mesmo “nível”, apenas em lugares diferentes. O ambiente de escopo é mais adequado para o que você deseja.

A terceira coisa é sim, existe uma estrutura orientada a objetos no tikz. Eu não uso (e a julgar pela maioria das respostas neste site, a maioria das pessoas não usa). Você pode encontrar informações no manual.

Uma versão do seu código usando escopo é:

\documentclass[preview]{standalone}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\draw[help lines] (0,0) grid (10, 10);

\begin{scope}[scale=0.5]

\draw[green,shift={(1.25,3)}] (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0);  
\draw[blue,shift={(2.75,1)}] (0,2) sin ++(1,1) cos (2,2) sin (3,3) cos (4,2) ;

\draw (0,0) rectangle (4,4) -- (0,0);

\end{scope}

%The same stuff, but shifted, to show you can shift a whole picture 
\begin{scope}[scale=0.5,shift={(5,5)}]

\draw[green,shift={(1.25,3)}] (0,0) sin (1,1) cos (2,0) sin (3,-1) cos (4,0);  
\draw[blue,shift={(2.75,1)}] (0,2) sin ++(1,1) cos (2,2) sin (3,3) cos (4,2) ;

\draw (0,0) rectangle (4,4) -- (0,0);

\end{scope}

\end{tikzpicture}
\end{document}

informação relacionada