
Ich möchte mehrere komplexe Zeichnungen anfertigen und sie alle zu einer größeren TikZ-Zeichnung zusammenfügen. Wie mache ich das?
Folgendes habe ich bisher getan:
\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}
Problem:
Ich möchte, dass die gesamte (rectifier)
Box und ihr gesamter Inhalt von der obersten Ebene aus skalierbar sind, und zwar etwa so:
\node (rectifier) at (0,0) {
\begin{tikzpicture}[scale=0.5]
...
...
...
Es skaliert jedoch nur die Box und nicht die Sinuszeichnungen.
Verlängerung:
Gibt es in TikZ ein „objektorientiertes“ Paradigma, bei dem ich Objektklassen deklarieren und sie einfach in einer größeren Zeichnung instanziieren kann?
Antwort1
Zunächst platzieren Sie Bilder innerhalb von Knoten. Dies funktioniert zwar und ist in vielen Fällen auch erforderlich, ist jedoch schwierig anzuwenden, wenn Transformationen angewendet werden müssen.
Zweiter Punkt: Konzeptionell scheint Ihr Diagramm Dinge auf derselben „Ebene“ darzustellen, nur an unterschiedlichen Orten. Die Scope-Umgebung ist für das, was Sie wollen, besser geeignet.
Drittens: Ja, es gibt eine objektorientierte Struktur in Tikz. Ich verwende sie nicht (und den meisten Antworten auf dieser Site zufolge verwenden sie die meisten Leute auch nicht). Informationen dazu finden Sie im Handbuch.
Eine Version Ihres Codes mit Gültigkeitsbereich ist:
\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}