我想绘制几幅复杂的图画,并将它们放在一幅更大的 TikZ 图画中。我该怎么做?
到目前为止,这是我所做的:
\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}
问题:
我希望整个(rectifier)
盒子及其所有内容都可以从顶层扩展,如下所示:
\node (rectifier) at (0,0) {
\begin{tikzpicture}[scale=0.5]
...
...
...
但它只缩放盒子,而不缩放正弦曲线图。
扩大:
TikZ 中是否存在“面向对象”范例,我可以在其中声明对象类并在更大的图形中简单地实例化它们?
答案1
首先,您要将图片放在节点内。虽然这种方法有效,而且在很多时候这是必须做的,但在必须应用转换时,这种方法就比较棘手了。
第二项,从概念上讲,您的图表似乎是同一“级别”上的事物,只是在不同的地方。范围环境更适合您的需求。
第三件事是肯定的,tikz 中有一个面向对象的结构。我不使用它(并且根据本网站上的大多数答案判断,大多数人都不使用它)。您可以在手册中找到信息。
使用范围的代码版本是:
\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}