The Not So Short Introduction to L A TEX 2ε Chapter 4 5 특별한기능 수학관련그림그리기 KINS 2013 년 1 월 1 일
제 4 장 특별한기능
외부그림넣기 외부그림을처리하기위해서는 graphicx 패키지를사용한다. 즉, \usepackage[pdftex]{color, graphicx} 명령을전처리부에넣으면된다.
외부그림넣기 패키지를로드한후, 그림을넣기원하는곳에다음명령어를쓴다. \includegraphics[ key=value,... ]{ file name } 이때, key인자는다음과같다. key인자설명 width=# 삽입될그림의폭을 # 으로지정. 그림의높이 (height) 를명시하지않으면가로 : 세로비율을유지함. height=# 삽입될그림의높이를 # 으로지정. 그림의폭 (width) 를명시하지않으면가로 : 세로비율을유지함. angle=# 그림의각도를 # 만큼반시계방향으로회전. 단위는도 ( ). scale=# 그림을전체적으로 # 배늘이거나줄임.
외부그림넣기 \includegraphics[ key=value,... ]{ file name } pdfl A TEX 에서처리할수있는그림은.pdf,.jpg,.png 형식이다. file name은넣고자하는그림의파일명이며파일은현재작업중인폴더에있어야한다. 그림을떠다니는객체로만들고자한다면위명령을 \begin{figure} 와 \end{figure} 사이에위치시킨다.
외부그림넣기 \includegraphics[width=0.2\textwidth]{ein.jpg} \includegraphics[width=0.2\textwidth, height=0.1\textwidth]{ein.jpg} \includegraphics[scale=0.1]{ein.jpg} \includegraphics[scale=0.2]{ein.jpg} \includegraphics[scale=0.2, angle=45]{ein.jpg}
제 5 장 수학관련그림그리기
picture 환경 picture환경은 L A TEX 에내장된환경이고, 텍프로그램안에서그림을그리게해준다. 따라서 picture환경으로그린그림은텍으로작성한문서의다른부분과완벽하게호환된다.
picture 환경 picture 환경은다음두가지형식으로선언한다 : \begin{picture}(x,y)... \end{picture} \begin{picture}(x,y)(x,y ) 또는,... \end{picture} x, y인자는그림이그려질영역의크기를지정하는데단위는 \unitlength ( 기본값 1pt) 이다. x, y 인자는영역의왼쪽아래의좌표값을설정해준다. \unitlength는 picture환경밖에서 \setlength{\unitlength}{ length } 명령을쓰면언제든바꿀수있다.
picture 환경 picture환경내에서어떤위치에 object를두려면다음명령을쓴다 : \put(x,y){ object } 또는, \put(x,y)(x,y ){ n }{ object } object는보통 \line(x,y){ length }, \vector(x,y){ length } 등의코드나문자열이된다.
picture 환경 - 선분그리기 선분은 \put(a,b){\line(x,y){ length }} 명령을사용한다. (a, b) 인자는선분의시작점의좌표를나타낸다. (x, y) 인자는선분의방향벡터를나타내는데, x와 y는서로소이며각각 6과 6사이의값을가진다. length인자는수평또는수직방향길이를나타낸다. \unitlength 에비례한다.
예시 \setlength{\unitlength}{\textwidth} \begin{picture}(1,1) \put(0,0.5){\line(1,0){1}} \put(0,0.5){\line(1,1){0.3}} \put(0,0.5){\line(1,2){0.3}} \put(0,0.5){\line(1,-1){0.5}} \end{picture}
picture 환경 - 화살표또는벡터그리기 벡터는 \put(a,b){\vector(x,y){ length }} 명령을사용한다. (a, b) 인자는벡터의시작점의좌표를나타낸다. (x, y) 인자는벡터의방향벡터를나타내는데, x와 y는서로소이며각각 4과 4사이의값을가진다. length인자는수평또는수직방향길이를나타낸다. \unitlength 에비례한다.
예시 \setlength{\unitlength}{\textwidth} \begin{picture}(1,1) \put(0,0.5){\vector(1,0){1}} \put(0,0.5){\vector(1,1){0.3}} \put(0,0.5){\vector(1,2){0.3}} \put(0,0.5){\vector(1,-1){0.5}} \end{picture}
picture 환경 - 원그리기 원은 \put(a,b){\circle{ length }} 명령을사용한다. (a, b) 인자는원의중심의좌표를나타낸다. length인자는원의지름을나타낸다. 단위는 \unitlength이다. \put(a,b){\circle*{ length }} 명령은내부가꽉찬원을그린다.
예시 \setlength{\unitlength}{\textwidth} \begin{picture}(1,1) \put(.5,.5){\circle{0.2}} \put(.5,.5){\circle{0.3}} \put(.5,.5){\circle*{0.1}} \put(.1,.1){\circle{0.1}} \end{picture} 4
picture 환경 - 텍스트와수식 텍스트와수식은 \put(a,b){ text } 명령을사용한다. (a, b) 인자는텍스트가입력될위치를나타낸다. \put명령안에서는일반적인텍스트, 수식입력방식에따라입력하면된다. \put(a,b){$\displaystyle...$} 명령은입력된수식을 display 스타일로보여준다.
예시 \setlength{\unitlength}{\textwidth} \begin{picture}(1,1) \put(0,.2){\vector(1,0){0.5}} \put(0,.2){\vector(1,1){0.5}} \put(0.5,.2){\vector(1,1){0.5}} \put(.5,.7){\vector(1,0){0.5}} B \put(0,.2){\vector(2,1){1}} \put(.2,.1){$\vec{a}$} C = A + B \put(.2,.5){$\vec{b}$} A CM = + B \put(.4,.4){$\vec{c}=\vec{a}+\vec{b}$} 2 A \put(.8,.2){$\displaystyle \vec{cm}=\frac{\vec{a}+\vec{b}}{2}$} \end{picture}
picture 환경 - 알모양곡선그리기 알모양곡선은 \put(a,b){\oval(w,h)[part]} 명령을사용한다. (a, b) 인자는곡선의중심이다. (w, h) 인자는각각곡선의장축과단축을지정한다. part인자는곡선이그려질부분을지정하며 t( 위 ), b( 아래 ), l( 왼쪽 ), r( 오른쪽 ) 을인자로취한다.
예시 \setlength{\unitlength}{\textwidth} \begin{picture}(1,1) \put(.5,.5){\oval(.1,.1)} \put(.5,.5){\oval(.2,.1)} \put(.5,.5){\oval(.3,.2)[t]} \put(.1,.1){\oval(.2,.1)[tr]} \end{picture}
연습문제 1. 다음그림을그려라. 2 m M 연습문제 2. 다음그림을그려라. P(z + dz) dz P(z) g
TikZ 환경 picture환경보다직관적이고강력한그림그리기환경이바로 TikZ 이다. 이는다음과같이 package형태로불러들여야한다. \usepackage{tikz} 또한 TikZ 그림은다음과같은환경 \begin{tikzpicture}...contents... \end{tikzpicture} 또는명령어 \tikz{...contents... } 안에서이루어진다.
TikZ 환경 - 기본사항 TikZ의기본단위는 cm이다. 단위없이쓰인모든양은 cm를단위로취한다. TikZ의기본명령은 \draw[ option ] object ; 이다. 이명령이시전되면 L A TEX 은투명한도화지한장 (Layer) 과 option이라는속성을가진연필한자루를받게된다. 그리고 draw명령과세미콜론 (;) 사이에오는 object의지시에따라그림을그리게된다. 세미콜론을빼먹으면곤란하다. object는점 (point) 과경로 (path) 로이루어져있는데, 여기서경로란연필의움직임을 L A TEX 에게알려주는명령이라고생각하면된다.
TikZ 환경 - 기본사항 점을지정하는방법은크게두가지가있다 : 직교좌표계형태로지정하기 : (a,b). 극좌표계형태로지정하기 : (θ: r). \path (a,b) coordinate (P) 명령어를사용해 (P) 에특정좌표 (a,b) 를지정하기. 이렇게지정하면, (a,b) 자리에 (P) 를쓸수있다. 이때, a,b는단위를명시하지않아도되지만 r은단위를명시해야한다. TikZ은상대적좌표를사용하므로원점을어떻게잡느냐는중요하지않다. 경로 (path) 는연필이현재위치에서어떻게움직여야하며최종적으로어느위치에멈춰야하는지에대한정보를모두가지고있다.
TikZ 환경 - 가장간단한예제 \begin{tikzpicture} \draw (0,0) -- (1,0) ; \draw (0,0) -- (2,1) -- (0,1)--(0,0); \end{tikzpicture} \begin{tikzpicture} \draw (0,0) circle (2em) ; \draw[->,color=blue] (0,0) -- (20:3em); \draw[color=red] (-3em,0) -- (3em,0); \draw[color=green] (0,-3em) -- (0,3em); \end{tikzpicture}
TikZ 환경 TikZ으로무엇을그릴수있는가? 우선기본도형으로는.. (a,b) : 아무것도그리지않으며, 연필을 (a,b) 위치에둔다. initial - - final: initial 과 final을잇는선분을그린후, 연필을 final 위치에둠. ld rectangle ru : ld와 ru을양끝대각선으로하는직사각형을그린후, 연필을 ru위치에둠. c circle (r): 중심이 c이고반지름이 r인원을그린후연필을 c 위치에둠. r은단위를명시해야함. c arc (θ 1 : θ 2 : r): 중심이 c이고반지름이 r이며양끝각도가 θ 1, θ 2 인호를그린후연필을 c위치에둠. r은단위를명시해야함. c ellipse (r1 and r2) 두축의길이가 r1, r2이고중심이 c인타원을그린후연필을 c위치에둠. r1, r2는단위를명시해야함.
TikZ 환경 좀더복잡한도형으로는... plot(\x,f(\x) ) : f(x) 의그래프를찍어준다. \draw명령의 option 인자로정의역을 domain=a:b 형태로명시해야한다. node[position]{}: 현재연필이놓인자리를기준으로 position 위치에 {} 안의객체를식자한다. position인자로는 right, left, above, below, below(above) left, below(above) right 가쓰인다. 이를명시하지않으면현재연필의위치위에식자한다. ld grid ru ld과 ru을양끝대각선으로하는직사각형격자를그림. draw의옵션인자 step=# 으로격자사이의간격을지정할수있다.
TikZ 환경 다음은 draw[option] 에서 option 인자로올수있는것들이다. option 설명 color=# 선의색을지정. # 에는 red, blue, gray, green, orange, cyan, brown, lime등 xcolor 패키지에서미리정의된색상이름이온다. ->, ->>, <-> 각각한쪽화살표, 한쪽이중화살표, 양끝화살표가있는경로를그린다. line width=# 선의굵기를결정한다. line width=# 대신 thin, very thin, ultra thin, thick, very thick, ultra thick 등의인자를써도된다.
TikZ 환경 option 설명 dash patter=# 점선형태를결정하는데, - off - on - off -on.. 형태로입력한다. 예컨대, 1pt off 2pt on 3pt off 2pt로쓰면, 1pt짜리선을긋고, 2pt를비우고다시 3pt 선을긋고 2pt를비우는것을반복하라는뜻이다. dotted 점선을긋는다. dashed 대쉬라인으로선을긋는다. >=# 화살표의팁모양을 # 으로바꾼다. # 에 latex 이라는글자를쓰면 L A TEX 표준화살표팁을사용할수있다.
TikZ 환경 어떤도형의내부를채우려면 \draw 대신 \fill[option] ; 명령어를쓰면된다. 이명령의사용법은 draw와동일하고, option 인자에들어가는색상은채우기색상으로처리된다. 도형의외곽선색과채움색을다르게하려면 \filldraw[fill=#1, draw=#2,...] ; 명령을쓴다. 이때, # 1 은채우기색, # 2는외곽선색을나타낸다. 채우기를하기위해서는매끄러운닫힌곡선이필요한데, 이는 object 마지막에 -- cycle 을추가하면된다.
TikZ 환경 어떤도형을특정규칙에따라반복해서그리고자한다면, draw(fill, filldraw) 명령앞에 \foreach \t in { variable } 를추가하면된다. 이때, draw 명령안에있는 \t 가각각의 variable로치환되어수행된다. t는임의의다른문자를써도되고, variable은 t가취할수있는것 ( 숫자, 문자, etc) 을나타낸다. 원소나열법으로써도좋고, 정수인경우 {a,...,b} 이라고쓰면 a,b사이의정수로이해한다.
TikZ 환경 tikzpicture환경내에서다음 scope환경을사용하면환경안에서특정옵션을어떤값으로유지할수있다. \begin{scope}[option=#]... \draw[->]...;... \end{scope} 이때, scope환경안에있는모든 option은따로지정하지않아도 # 이라는값을가지게된다.
TikZ 환경 \begin{tikzpicture} \draw[->, very thick] (-2, 0)--(2,0) node[below]{$x$}; \draw[->, very thick] (0, -2)--(0,2) node[above]{$y$}; \draw[color=gray, step=1] (-1.9,-1.9) grid (1.9, 1.9); \draw[color=red, domain=-1.2:1.2] plot(\x,\x^3) node[right] {$y=x^3$}; \end{tikzpicture} y y = x 3 X
TikZ 환경 \begin{tikzpicture} \draw[thin, color=gray, step=1cm] (-1.9,-1.9) grid (1.9,1.9); \foreach \t in {-1,...,1} \draw[color=blue] (-2, -0.176*2+\t) --(2, 0.176*2+\t); \foreach \y in {-1,0,1} \draw[color=blue](-0.176*2+\y,-2) --(0.176*2+\y,2); \draw[->, thick] (-2,0)--(2,0) node[below] {$x$}; \draw[->, thick] (0,-2)--(0,2) node[left] {$t$}; \draw[->, color=red, very thick] (10:-2cm) --(10:2cm) node[right] {$x $}; \draw[->, color=red, very thick] (80:-2cm) --(80:2cm) node[above] {$t $}; \draw[color=yellow] (-2,-2)--(2,2) node[right] {light}; \end{tikzpicture} t t x light x
연습문제 3. 다음을그려라. y r 2 =1cm C(1, 2) r 1 =2cm x 연습문제 4. draw 명령어가나오는순서가중요할까? draw 명령어가나오는순서에유의해다음을그려보라.
ipe 의사용 이모든작업을 L A TEX 안에서하기엔너무힘들다... 따라서, 비록완벽한호환성을얻진못하지만차선책으로 ipe 라는 툴을쓸수있다.
ipe 의사용 ipe의설치 : http://ipe7.sourceforge.net/ ipe는 vector graphic tool이고 picture환경의 L A TEX 그림과결과물의모양이매우흡사하다. L A TEX 코드를그림에직접삽입할수있다..eps또는.pdf형식을지원한다.
XY-pic 의사용 XY-pic 은수학의다이어그램을쉽게그릴수있게해주는패키지이며, 다음과같이로드한다. \usepackage[all]{xy} option 인자로 all 을사용해서 XY-pic 의모든명령어를불러오는것이 좋다.
XY-pic 의사용 XY 를사용한다이어그램은기본적으로 XY-matrix 위에그려지며 XY-matrix 는수학모드에서다음과같이선언한다. \[ \xymatrix{ & P &\\ M & N & 0 } \] P M N 0
XY-pic 의사용 여기에화살표를그리려면화살표가시작하는셀에 \ar[] 명령을 쓴다. [] 안의인자는화살표의방향을나타내며 u,d,r,l 를쓸수있다. \[ \xymatrix{ & P\ar[d]\ar[dl] &\\ M\ar[r] & N\ar[r] & 0 } \] P M N 0
XY-pic 의사용 때로는화살표에글씨나기호를넣고싶을때가있다. 이경우첨자명령어 ^, _ 와수직선 를사용한다. 위첨자는화살표진행방향왼쪽에, 아래첨자는화살표진행방향오른쪽, 수직선은화살표위에기호를넣는다. \[ \xymatrix{ & P\ar[d]^{f}\ar[dl]_{F} &\\ M\ar[r] {\varphi} & N\ar[r] & 0 } \] F P M ϕ N 0 f
XY-pic 의사용 화살표의모양을바꾸려면 \ar 뒤에모양을지정하는 @{...} 을 사용하면된다. \[ \xymatrix{ & P\ar[d]^{f}\ar@/_/@{-->}[dl]_{F} M\ar[r] {\varphi} & N\ar[r] & 0 } \] &\\ P F f M ϕ N 0 주로사용되는모양은 @{.>}, @{~}, @{-->}, @{^{(}->}, @{=>} 등이 있다. 또한, @/.../ 를사용하면화살표가그려지는모양을정할수있다.
연습문제 5. 다음을그리시오. G ϕ K π G/ ker ϕ 연습문제 6. 다음을그리시오. ϕ e q γ e + q
연습문제 7. 다음을그리시오. a p r c q qr + s ps ps + qr = b (HINT. \ar@{}[...] 는 투명한 화살표를그려준다.)