
Quiero dibujar varios dibujos complejos y juntarlos todos en un dibujo TikZ más grande. ¿Cómo puedo hacer eso?
Hasta ahora, esto es lo que he hecho:
\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:
Quiero que todo el (rectifier)
cuadro y todo su contenido sean escalables desde el nivel superior, así:
\node (rectifier) at (0,0) {
\begin{tikzpicture}[scale=0.5]
...
...
...
Pero escala sólo la caja, y no los dibujos sinusoide.
Extensión:
¿Existe un paradigma "orientado a objetos" en TikZ, donde pueda declarar clases de objetos y simplemente crear instancias de ellos en un dibujo más grande?
Respuesta1
En primer lugar, coloca imágenes dentro de los nodos. Si bien esto funciona y en muchas ocasiones es lo que se debe hacer, es delicado de utilizar cuando se deben aplicar transformaciones.
Segundo elemento, conceptualmente su diagrama parece ser cosas en el mismo "nivel", solo que en diferentes lugares. El entorno de alcance se adapta mejor a lo que desea.
La tercera cosa es que sí, hay una estructura orientada a objetos en tikz. No lo uso (y, a juzgar por la mayoría de las respuestas en este sitio, la mayoría de la gente no lo usa). Puedes encontrar información en el manual.
Una versión de su código que usa alcance es:
\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}