
여러 개의 복잡한 그림을 그려서 모두 함께 더 큰 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}