디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

라텍스처럼 말랑말랑한 레이텍 그림그리기(tikz)편

d(59.22) 2021.09.16 17:56:41
조회 1878 추천 3 댓글 2
														

레이텍에서 그림 그릴려면 tikz 패키지를 설치해야 된다. 다 알겠지만 이게 떡상한 패키지라 안 쓸 수가 없음.

물론 eps, jpg, gif 넣어서 할 수도 있겠지 근데 레이텍 쓰다보면 결국 그림도 코드로 그리게 됨 ㅋㅋ


전처리부에서는 반드시 geometric이랑 positioning 라이브러리 쓴다고 명시해줘야됨. 그래야 상대적인 위치를 쓸 수 있음(나중에 설명)


% tikz & circuitikz
\usepackage{circuitikz}
% tikz libraries
% for relative positioning
\usetikzlibrary{shapes.geometric, positioning, calc}


그리고 스타일인데 비유하면 HTML의 CSS랑 유사하다. CSS에서 class나 id 지정하고 HTML 코드에서 이걸 부르듯 \tikzset을 전처리부에 쳐넣고 이걸 tikzpicture에서 인자로 부르는 식인데, general이니 circuit이니 하는 스타일은 다 내가 쓸려고 지정한거고 디폴트 값은 아니야. CSS처럼 스타일을 지정할 수 있는데 자세한 건 메뉴얼을 봐야 되고 여기선 기본적인 것 몇 개만 적어둠.


thin, thick, ultra thick: 그림 그릴때 선의 굵기 지정하는거. 밑에 line width처럼 구체적인 수치를 지정할 수도 있음

>=latex: 화살표 대가리를 새끈한 라텍스 형식으로 하겠다는 말임 ㅇㅇ 걍 이거써라 딴 화살표들은 다 구림


즉 바로 아래의 스타일은 general 스타일은 굵은 선에 화살표 대가리는 레이텍을 쓰겠단 말이고 circuit 스타일은 구체적으로 선의 굵기를 지정까지 한 거임. 왜 지정했냐면 전기회로는 선을 더 굵게 할려고 ㅇㅇ


% [general] setting for tikz and ctikz drawing
\tikzset{
    general/.style={
        thick,
        >=latex
    },
    circuit/.style={
        line width=1.6pt,
        >=latex
    }
}


그리고 이 general 스타일을 불러올려면 밑에처럼 general을 []안에 써 주면 됨. Fblock이니 Fcicrcle이니 하는 것들도 다 스타일임 ㅇㅇ


\begin{tikzpicture}[general,  
    Fblock/.style={
        draw,
        text width=3em,
        align=flush center,
        outer sep=0},
    Fcircle/.style={
        draw,
        circle,
        outer sep=0}
    ]

    % First block
    \node[Fblock] (input) {기준입\\[-0.5em]력신호};
    % circle block
    \node[Fcircle, right=5em of input] (iocircle) { };
    % and blocks
    \node[Fblock, right=6em of iocircle] (control1) {조절부};
    \node[Fblock, right=2em of control1] (control2) {조작부};
    \node[Fblock, below right=2.5em and -1em of control1] (detect) {검출부};
    \node[Fblock, right=4em of control2] (ctarget) {제어\\[-0.5em]대상};
    % Arrows
    \draw[->] (input.west)++(-1.5,0) -- (input.west)
        node[pos=0.40, above]{목표값};
    \draw[->] (input.east) -- (iocircle.west)
        node[midway, above]{기준입력};
    \draw[->] (iocircle.east) -- (control1.west)
        node[pos=0.45, above]{동작신호};
    \draw[->] (control1.east) -- (control2.west);
    \draw[->] (control2.east) -- (ctarget.west);
    \draw[->] (ctarget.east) -- ++(1.5,0)
        node[midway](output){}
        node[midway, above]{제어량};
    \draw[->] (output.center) |- (detect.east);
    \draw[->] (detect.west) -| (iocircle.south);
    \draw[->] (ctarget.north)++(0,0.5) -- (ctarget.north)
        node[at start, above]{외란};
    % Boxes
    \draw[ultra thick, crimson, dotted] ($(input.north west)+(-0.3,1em)$) rectangle ($(ctarget.south west)+(-0.3,-4.5em)$);
    \draw[ultra thick, bnb, dotted] ($(control1.north west)+(-0.3,0.3)$) rectangle ($(control2.south east)+(0.3,-0.3)$);
\end{tikzpicture}


복잡한건 메뉴얼이나 stack 구글링하고 기본적인 것만 보겠음


\node[Fblock] (input) {기준입\\[-0.5em]력신호};

\node[Fcircle, right=5em of input] (iocircle) { };


\node[style](node name){text name}; 이런 식으로 씀

노드는 경로인데 벡터 프로그램의 그 경로 맞음. 나 이제 경로 지정함! 이뜻임
스타일은 아까 본 general처럼 해당 노드를 지정하면서 쓰는 스타일.
(node name)는 원래는 노드가 찍히는 좌표 들어가는데 예를 들면 \node (0,0)은 원점 (0,0)에 노드를 찍겠다는 말임.
근데 이렇게 하는 거는 수학 좌표할때나 쓰는거고 그림 그릴때에는 상대적인 좌표로 그릴 수 있다.
즉 기준되는 좌표를 input이라 이름을 붙인거임.
{text name}은 해당 노드에 붙여진 레이블이라 보면 됨. 비어둘 수도 있고 텍스트를 표시할 수도 있음.

이제 상대적인 좌표 뜻을 간단하게 설명하면 밑에 있는 right=5em of input요놈이 상대적인 좌표임.

말하자면 기준되는 input 좌표의 오른쪽으로 5em 떨어진 데 노드(점)를 그리고 그것의 노드를 iocircle이라 하겠다는 말임.

이런 식으로 모든 노드를 설정할 수 있음. A 노드의 북서쪽으로 얼마 떨어진 데 B 노드를 찍는다... 뭐 그정도의 의미임.


이렇게 노드 찍기가 끝나면 그림 그리기 시간임.


\draw[->] (iocircle.east) -- (control1.west)
        node[pos=0.45, above]{동작신호};


\draw[화살표 그릴래?] (좌표나 노드 이름) -- (도착하는 좌표나 노드 이름) node[노드 스타일]{text name};쯤 되려나

\draw는 뭘 그리겠단 말이고 기본적으로는 선임. 사각형 원 등등 그리는 명령어도 있지만 그건 메뉴얼 찾아보라고

[화살표 그릴래?]는 끝부분에 화살표 넣을래 말래 결정하는것. [<-], [<->]도 가능하겠지? 아까 스타일 지정할 때 >=latex의 >가 화살표 대가리 설정이란거 기억함? 그게 여기서 써지는거임

(좌표나 노드 이름)은 시작하는 점의 좌표나 노드를 쓰면 됨. 근데 여기서 (iocircle.east)는 아까 지정한 iocircle 노드의 동쪽에서 시작하겠단 말임. 여기서 east니 west니 north east니 하는 건 해당 노드의 이름을 박스라 봤을 때 그 박스의 동쪽 서쪽 북동쪽 등을 가리키는 것임. 즉 위의 코드는 iocircle이란 노드의 동쪽에서 출발해서 control1 노드의 west에 도착할게 뭐 그쯤 되려나

뒤의 node는 두 노드를 잇는 선의 노드를 지정한다는 말이고, pos는 그 노드의 위치, above는 노드 이름을 아래에 둔다는 것이고 {동작신호}는 노드의 이름이 되시겠음.


잘 모르겠지? 그게 정상임 ㅇㅇ 한데 쓰다보면 익숙해지니까. 어쨌든 이렇게 해서 새끈한 라텍스 컴파일하면 이렇게 벡터로 그림을 문서 안에서 그려준다고!


39b4db3cf5db3be87eb1d19528d5270378c6efc71540


아아 이것이 [틀딱]의 갬성이다...


유사한 방식으로 수학 그래프, 회로도 해결 가능임.

추천 비추천

3

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 경제관념 부족해서 돈 막 쓸 것 같은 스타는? 운영자 24/05/13 - -
80 에디터 뭐씀? LaTeX(211.203) 05.13 6 0
79 아니 레이텍겔러리가있네 LaTeX(211.203) 05.13 7 0
78 생각해보니 이런 변두리에 사람이 찾아올리가 없잖아 안심역갤로그로 이동합니다. 04.09 12 0
77 LaTeX쓰다보면 궁금한 점 있는데 안심역갤로그로 이동합니다. 04.04 10 0
76 라텍스 Beer갤로그로 이동합니다. 23.12.21 51 0
75 학부생 살려줘 L갤러(223.62) 23.12.03 27 0
74 출산혐오갤 놀러오세요 ㅇㅇ(118.235) 23.05.11 52 0
73 갤망함? oversheaf갤로그로 이동합니다. 23.04.20 45 0
72 minted 사용중인데 100HA1AAN갤로그로 이동합니다. 23.04.05 47 0
71 overleaf에서 vsc로 넘어온 소감 ㅇㅇ(125.185) 23.02.14 159 0
69 텍 뉴비인데 왜 좌우가 다르게 되는건가요? 왼쪽을 원합니다 [2] ㅇㅇ(116.127) 23.01.22 116 0
68 줄바꾸기때매 열받았었다 [1] 따라닝갤로그로 이동합니다. 23.01.20 44 0
67 143분간 익히는 LaTeX2e 이거 어떰 [1] ㅇㅇ(58.127) 23.01.17 109 1
64 Overleaf 맛 갔냐? [1] eunsoo03(211.244) 22.08.25 153 0
63 괄호 포함된 긴 수식 줄바꾸려면 어떻게함? [2] 도사(14.32) 22.04.21 237 0
라텍스처럼 말랑말랑한 레이텍 그림그리기(tikz)편 [2] d(59.22) 21.09.16 1878 3
59 레이텍은 틀딱용 워드가 맞는거 같음 [2] d(59.22) 21.08.27 419 1
58 텍 이쁘게 치고 싶은데 머 좋은 자료 없냐 [1] ㅇㅇ(39.121) 21.08.11 162 0
57 라텍스 설치하는데 컴 망가질수 있다느니 [1] ㅇㅇ(61.73) 21.07.21 215 0
55 노무현 전 대통령 LaTeX [1] 깨시민갤로그로 이동합니다. 20.12.09 481 5
54 Latex 이거 쓰긴 함? [2] ㅇㅇ(175.116) 20.09.08 476 0
40 이런 갤도 있네 [1] ShoyuVanilla갤로그로 이동합니다. 20.04.17 209 0
39 생각나서 들어와봤더니 글이 많아서 괜히 설렜네 [3] 0_-(60.34) 20.04.14 508 0
37 2차시-여백, 줄간격 조절 [1] 루킨이갤로그로 이동합니다. 20.03.24 3254 1
35 1차시. PDF 여백 줄이기 [1] 루킨이갤로그로 이동합니다. 20.03.20 669 4
34 0차시. LaTeX의 설치 및 한글 문서작성 [1] 루킨이갤로그로 이동합니다. 20.03.20 363 3
9 여기 3D latex도 괜찮지? ㅇㅇ(106.101) 20.03.04 272 0
6 LaTeX 윈도우에서 환경구축 [1] 0_-(133.11) 20.01.14 475 1
5 틀딱,,쉐리덜,,, [2] +갤로그로 이동합니다. 19.11.15 334 0
3 오ㅑ 아무도 업누 ㅇㅇ(112.156) 19.10.16 142 0
2 LaTex갤 흥해라 Calli갤로그로 이동합니다. 19.09.18 229 1
1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2