%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setcounter{chapter}{4}
\newcommand{\graphicscompanion}{\emph{The \LaTeX{} Graphics Companion}~\cite{graphicscompanion}}
\newcommand{\hobby}{\emph{A User's Manual for \MP{}}~\cite{metapost}}
\newcommand{\hoenig}{\emph{\TeX{} Unbound}~\cite{unbound}}
\newcommand{\graphicsinlatex}{\emph{Graphics in \LaTeXe{}}~\cite{ursoswald}}

%\chapter{Producing Mathematical Graphics}
\chapter{수학적 그래프 그리기}
\label{chap:graphics}

\begin{intro}
%Most people use \LaTeX\ for typesetting their text. And since the structure oriented approach to authoring is so convenient, \LaTeX\ also offers a,
%if somewhat restricted, means for producing graphical output from textual
%descriptions. Furthermore, quite a number of \LaTeX\ extensions have been created
%in order to overcome these restrictions. In this section, you will learn about a
%few of them.
대부분의 사람들은 텍스트를 조판하기 위해 \LaTeX 을 사용한다. 한편, 구조 중심적인 방법으로 저작하는 것은 상당히 편리하기에 \LaTeX 은, 다소 제한적이기는 하나, 텍스트로부터 시각적인 결과물인 그래프를 그릴 수 있는 몇 가지 수단을 제공한다. 더 나아가 이런 제약들을 해결하기 위한 상당수의 \LaTeX{} 확장판들이 만들어졌다. 이 장에서는 이 중 일부를 배우기로 한다.
\end{intro}

%\section{Overview}
\section{개요}

%Creating graphical output with \LaTeX{} has a long tradition. It started out
%with the \ei{picture} environment which allows you to create graphics by
%cleverly placing predefined elements onto the canvas. A complete
%description can be found in the \manual. The \ei{picture} environment of
%\LaTeXe\ brings with it the \ci{qbezier} command, ``\texttt{q}'' meaning
%``quadratic''.  Many frequently used curves such as circles, ellipses, or
%catenaries can be satisfactorily approximated by quadratic B\'ezier curves,
%although this may require some mathematical toil. If, in addition, a
%programming language is used to generate \ci{qbezier} blocks of \LaTeX\
%input files, the \ei{picture} environment becomes quite powerful.

\LaTeX 을 이용하여 시각적 결과물을 만들어내는 일은 꽤 오래된 전통이다. 우선은 캔버스에 지정된 요소들을 교묘히 짜넣는 것으로 그래프를 그려낼 수 있는 \ei{picture} 환경으로 시작했다. \manual 에서 이에 대한 종합적인 설명을 찾아볼 수 있다. \LaTeXe 의 \ei{picture} 환경에서 \ci{qbezier} 명령을 쓸 수 있는데, ``\texttt{q}''는 ``quadratic''을 의미한다. 수학적인 소양을 어느 정도 요구할 수 있지만 원, 타원, 혹은 현수선 등 자주 쓰이는 곡선들의 경우 이차 베지어 곡선을 통해 만족스러운 근사치를 얻을 수 있다. 이에 더하여 만약 프로그래밍 언어를 이용해 \LaTeX{} 입력 파일에서 \ci{qbezier} 블록들을 그려낼 수 있다면 \ei{picture} 환경은 강력한 도구가 될 수 있다.

%Although programming pictures directly in \LaTeX\ is severely restricted,
%and often rather tiresome, there are still reasons for doing so. The documents
%thus produced are ``small'' with respect to bytes, and there are no additional
%graphics files to be dragged along.

\LaTeX 에서 직접 그림들을 프로그래밍하는 것은 상당히 제한적이고 피곤한 작업이지만, 여전히 그리 할 유인은 있다. 이런 식으로 작성된 문서는 용량의 측면에서 상대적으로 ``작으며,'' 별도의 그림 파일을 질질 끌고 다닐 필요가 없다는 이점이 있다.

%This has been the state of things until a few years ago when Till Tantau of
%\pai{beamer} fame came up with the Portable Graphics Format \pai{pgf} and its
%companion package TikZ (\pai{tikz}). This system lets you create high
%quality vector graphics with all current \TeX{} systems including full
%support for pdf.

그림 그리기에서 \LaTeX 이 매우 제한적인 기능만을 제공했던 이러한 상황은 몇 년 전 \pai{beamer}로 명성이 자자했던 Till Tantau가 Portable Graphics Format \pai{pgf}와 함께 TikZ (\pai{tikz}) 패키지를 세상에 내놓으며 완전히 달라졌다. 이 시스템은 완전한 \pai{pdf} 지원을 포함하여 사용자가 현존하는 모든 \TeX{} 시스템에서 고품질의 벡터 그래프들을 그리는 것을 가능하게 했다.

%Building on these basics, numerous packages have been written for specific
%purposes. A wide variety of these packages is described in detail in
%\graphicscompanion{}.

이것을 기반으로 하여 각기 특정한 목적 가진 수많은 패키지들이 탄생했다. \graphicscompanion 에는 이런 류의 다양한 패키지들이 상세하게 기술되어 있다.

%Perhaps the most advanced graphical tool related with \LaTeX\ is \MP. It is a stand-alone application
%based on Donald E. Knuth's \MF. \MP{} has the very powerful and
%mathematically sophisticated programming language of \MF{} but contrary to \MF,
%it generates encapsulated \PSi{} files,
%which can be imported in \LaTeX{} and even pdf\LaTeX{}. For an introduction, see \hobby, or the tutorial on \cite{ursoswald}.

\LaTeX{} 관련 그래픽 툴 중에서 가장 앞서가는 것은 아마도 \MP 일 것이다. 이것은 Donald E.~Knuth의 \MF 에 기반을 두고 있는 독립적인 응용프로그램이다. \MP 는 \MF 의 강력하면서도 수학적으로 섬세한 프로그래밍 언어를 사용하지만 \MF 와는 다르게 캡슐화된(encapsulated) \PSi{} 파일을 생성해내며 그 코드는 \LaTeX, 심지어는 \hologo{pdfLaTeX} 문서에 포함될 수 있다. 이에 대한 소개는 \hobby 혹은 \cite{ursoswald}의 튜토리얼에서 볼 수 있다.

%A very thorough discussion of \LaTeX{} and \TeX{} strategies for graphics (and fonts) can
%be found in \hoenig.

\LaTeX 과 \TeX 에서의 그래프(그리고 폰트)에 대해 사용자가 사용할 수 있는 전략들을 심도 있게 다루는 토론은 \hoenig 에서 찾아 볼 수 있다.

%\section{The \texttt{picture} Environment}
\section{\texttt{picture} 환경}
\secby{Urs Oswald}{osurs@bluewin.ch}

%As mentioned above the picture environment is part of standard \LaTeX{} and it is great for simple tasks and also if you want
%to control the exact positioning of individual elements on a page. But if you are about to do any serious graphics work, you should
%look at TikZ as presented in section \ref{sec:tikz} on page \pageref{sec:tikz}.

앞서 언급했던 \ei{picture} 환경은 표준 \LaTeX 의 일부이며 간단한 작업을 할 때나 사용자가 특정 요소를 페이지의 특정한 위치에 정밀하게 배치하고 싶을 때 유용하게 사용될 수 있다. 하지만 이 이상의 심도 있는 그래프 작업을 위해서는 \pageref{sec:tikz}페이지의 \ref{sec:tikz}절에 소개되는 TikZ를 찾아보는 편이 좋다.\trfnote{이는 권장이라기보다 필수 사항이라고 보는 것이 옳다. \LaTeX 의 전통적인 \ei{picture} 환경은 너무나 제약이 많고 그 결과물도 아름답지 않기 때문에 좋은 대안이 나와 있는 현재에는 사용할 필요가 없다. 따라서 이 절은 전통을 살펴보는 정도에 의미를 두고, 실제로 그림을 그린다면 본문의 제안대로 TikZ 또는 다른 그림 그리기 패키지를 배울 필요가 있다.}

%\subsection{Basic Commands}
\subsection{기초 명령들}


%A \ei{picture} environment\footnote{Believe it or not, the picture environment works out of the
%box, with standard \LaTeXe{} no package loading necessary.} is created with one of the two commands

\ei{picture} 환경\footnote{믿거나 말거나, \ei{picture} 환경은, 표준 \LaTeXe 에서 다른 패키지를 불러들일 필요없이 바로 작동한다.}은 아래의 둘 중 하나의 방법으로 사용한다.
\begin{lscommand}
\ci{begin}\verb|{picture}(|$x,y$\verb|)|\ldots\ci{end}\verb|{picture}|
\end{lscommand}
%\noindent or
\noindent 또는
\begin{lscommand}
\ci{begin}\verb|{picture}(|$x,y$\verb|)(|$x_0,y_0$\verb|)|\ldots\ci{end}\verb|{picture}|
\end{lscommand}
%The numbers $x,\,y,\,x_0,\,y_0$ refer to \ci{unitlength}, which can be reset any time
%(but not within a \ei{picture} environment) with a command such as
\noindent
숫자 $x,\,y,\,x_0,\,y_0$는 \ci{unitlength}를 참조한다. 이는 아래의 명령과 같은 방법으로 언제든 재지정이 가능하지만 \ei{picture} 환경 내부에서는 조정이 불가능하다.
\begin{lscommand}
\ci{setlength}\verb|{|\ci{unitlength}\verb|}{1.2cm}|
\end{lscommand}
%The default value of \ci{unitlength} is \texttt{1pt}. The first pair, $(x,y)$, effects
%the reservation, within the document, of rectangular space for the picture. The optional
%second pair, $(x_0,y_0)$, assigns arbitrary coordinates to the bottom left corner of the
%reserved rectangle.
\noindent
\ci{unitlength}의 기본값은 \texttt{1pt}이다. 첫 순서쌍인 $(x,y)$는 문서 내부에 그림이 들어갈 사각형의 공간을 지정한다. 두번째 쌍$(x_0,y_0)$은 옵션으로, 지정한 공간의 왼쪽 하단에 임의의 좌표를 배정한다.

%Most drawing commands have one of the two forms
대부분의 드로잉 명령어는 다음 둘 중 하나의 형태를 띤다.
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\emph{object}\verb|}|
\end{lscommand}
%\noindent or
\noindent 또는
\begin{lscommand}
\ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{object}\verb|}|\end{lscommand}
%B\'ezier curves are an exception. They are drawn with the command
베지어 곡선은 예외이다. 베지어 곡선은 다음의 명령어로 그린다.
\begin{lscommand}
\ci{qbezier}\verb|(|$x_1,y_1$\verb|)(|$x_2,y_2$\verb|)(|$x_3,y_3$\verb|)|
\end{lscommand}

%\subsection{Line Segments}
\subsection{선분}
\begin{example}
\setlength{\unitlength}{5cm}
\begin{picture}(1,1)
  \put(0,0){\line(0,1){1}}
  \put(0,0){\line(1,0){1}}
  \put(0,0){\line(1,1){1}}
  \put(0,0){\line(1,2){.5}}
  \put(0,0){\line(1,3){.3333}}
  \put(0,0){\line(1,4){.25}}
  \put(0,0){\line(1,5){.2}}
  \put(0,0){\line(1,6){.1667}}
  \put(0,0){\line(2,1){1}}
  \put(0,0){\line(2,3){.6667}}
  \put(0,0){\line(2,5){.4}}
  \put(0,0){\line(3,1){1}}
  \put(0,0){\line(3,2){1}}
  \put(0,0){\line(3,4){.75}}
  \put(0,0){\line(3,5){.6}}
  \put(0,0){\line(4,1){1}}
  \put(0,0){\line(4,3){1}}
  \put(0,0){\line(4,5){.8}}
  \put(0,0){\line(5,1){1}}
  \put(0,0){\line(5,2){1}}
  \put(0,0){\line(5,3){1}}
  \put(0,0){\line(5,4){1}}
  \put(0,0){\line(5,6){.8333}}
  \put(0,0){\line(6,1){1}}
  \put(0,0){\line(6,5){1}}
\end{picture}
\end{example}
%Line segments are drawn with the command
선분은 다음의 명령을 사용하여 그린다.
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\ci{line}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}|
\end{lscommand}
%The \ci{line} command has two arguments:
%\begin{enumerate}
%  \item a direction vector,
%  \item a length.
%\end{enumerate}
명령 \ci{line}은 두 인자를 가진다:
\begin{enumerate} \firmlist
  \item 방향 벡터(direction vector),
  \item 길이(length).
\end{enumerate}

%The components of the direction vector are restricted to the integers
방향 벡터의 성분은 다음 정수로만 제한된다.
\[
  -6,\,-5,\,\ldots,\,5,\,6,
\]
%and they have to be coprime (no common divisor except 1). The figure illustrates all
%25 possible slope values in the first quadrant. The length is relative to \ci{unitlength}.
%The length argument is the vertical coordinate in the case of a vertical line segment, the
%horizontal coordinate in all other cases.

\noindent 그리고 두 성분은 서로소(1 이외의 공약수가 없는 수들)이어야 한다. 제시된 그림은 제1 사분면에서 가능한 25가지의 모든 기울기값을 보여준다.%
\trfnote{%
  앞선 역자주에서 \ei{picture} 환경을 그저 살펴보는 용도로만 사용하라고 권고하였지만
  선분의 기울기 제약은 일찍부터 문제가 되었던 터라 이를 해결한 \pai{pict2e} 패키지가 있음을
  지적해둔다. 이 패키지를 이용하면 선분의 기울기 문제를 비롯한 많은 제약을 해결할 수 있다.
}
길이(length) 인자는 \ci{unitlength}에 비례한다. 이는 수직선의 경우에는 수직 좌표, 나머지 경우에는 수평 좌표를 의미한다.

%\subsection{Arrows}
\subsection{화살표}

\begin{example}
\setlength{\unitlength}{0.75mm}
\begin{picture}(60,40)
  \put(30,20){\vector(1,0){30}}
  \put(30,20){\vector(4,1){20}}
  \put(30,20){\vector(3,1){25}}
  \put(30,20){\vector(2,1){30}}
  \put(30,20){\vector(1,2){10}}
  \thicklines
  \put(30,20){\vector(-4,1){30}}
  \put(30,20){\vector(-1,4){5}}
  \thinlines
  \put(30,20){\vector(-1,-1){5}}
  \put(30,20){\vector(-1,-4){5}}
\end{picture}
\end{example}
%Arrows are drawn with the command
화살표는 다음 명령을 사용하여 그린다.
\begin{lscommand}
\ci{put}\verb|(|$x,y$\verb|){|\ci{vector}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}|
\end{lscommand}
%For arrows, the components of the direction vector are even more narrowly restricted than
%for line segments, namely to the integers

화살표의 경우, 방향 벡터의 성분이 선분의 경우에 비해 더욱 제한되어 다음의 정수만을 사용할 수 있다.
\[
  -4,\,-3,\,\ldots,\,3,\,4.
\]
%Components also have to be coprime (no common divisor except 1). Notice the effect of the
%\ci{thicklines} command on the two arrows pointing to the upper left.
\noindent
이 성분들 또한 서로소(1 이외의 공약수가 없는 수들)이어야 한다. 좌상향으로 뻗은 두 화살표에서 \ci{thicklines} 명령의 효과를 볼 수 있다.

%\subsection{Circles}
\subsection{원}

다음 명령은 중심이 $(x,y)$이며 (반지름이 아니라) 지름이 \emph{diameter}인 원을 그린다. 
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{circle}\verb|{|\emph{diameter}\verb|}}|
\end{lscommand}

\noindent \ei{picture} 환경은 지름이 14\,mm 정도까지만 허용하며, 이 값 이하라고 해서 모든 수치를 허용하지도 않는다. 
\ci{circle*} 명령은 disk(내부가 차있는 원)를 만든다.


\begin{example}
\setlength{\unitlength}{1mm}
\begin{picture}(60, 40)
  \put(20,30){\circle{1}}
  \put(20,30){\circle{2}}
  \put(20,30){\circle{4}}
  \put(20,30){\circle{8}}
  \put(20,30){\circle{16}}
  \put(20,30){\circle{32}}

  \put(40,30){\circle{1}}
  \put(40,30){\circle{2}}
  \put(40,30){\circle{3}}
  \put(40,30){\circle{4}}
  \put(40,30){\circle{5}}
  \put(40,30){\circle{6}}
  \put(40,30){\circle{7}}
  \put(40,30){\circle{8}}
  \put(40,30){\circle{9}}
  \put(40,30){\circle{10}}
  \put(40,30){\circle{11}}
  \put(40,30){\circle{12}}
  \put(40,30){\circle{13}}
  \put(40,30){\circle{14}}

  \put(15,10){\circle*{1}}
  \put(20,10){\circle*{2}}
  \put(25,10){\circle*{3}}
  \put(30,10){\circle*{4}}
  \put(35,10){\circle*{5}}
\end{picture}
\end{example}
%The command
%\noindent draws a circle with center $(x,y)$ and diameter (not radius) \emph{diameter}.
%The \ei{picture} environment only admits diameters up to approximately 14\,mm,
%and even below this limit, not all diameters are possible. The \ci{circle*}
%command produces disks (filled circles).

%As in the case of line segments, one may have to resort to additional packages,
%such as \pai{eepic} or \pai{pstricks}.
%For a thorough description of these packages, see \graphicscompanion.

선분의 경우와 마찬가지로 사용자는 \pai{eepic}이나 \pai{pstricks}같은 패키지로 눈을 돌려야 하는 상황도 있을 수 있다. 이 패키지들에 대한 자세한 설명은 \graphicscompanion 를 보라.

%There is also a possibility within the
%\ei{picture} environment. If one is not afraid of doing the necessary calculations
%(or leaving them to a program), arbitrary circles and ellipses can be patched
%together from quadratic B\'ezier curves.
%See \graphicsinlatex\ for examples and Java source files.

\ei{picture} 환경내에서 자체적으로 해결하는 방법도 있다. 사용자가 필요한 계산(이를 프로그램에 맡길 수도 있지만)을 하는 데 불편함이 없다면 베지어 곡선을 패치하여 임의의 원과 타원을 그려내는 것이 가능하다. \graphicsinlatex 에 예제와 Java 소스 파일들이 있다.


\newpage

%\subsection{Text and Formulas}
\subsection{텍스트와 수식}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,5)
  \thicklines
  \put(1,0.5){\line(2,1){3}}
  \put(4,2){\line(-2,1){2}}
  \put(2,3){\line(-2,-5){1}}
  \put(0.7,0.3){$A$}
  \put(4.05,1.9){$B$}
  \put(1.7,2.95){$C$}
  \put(3.1,2.5){$a$}
  \put(1.3,1.7){$b$}
  \put(2.5,1.05){$c$}
  \put(0.3,4){$F=
    \sqrt{s(s-a)(s-b)(s-c)}$}
  \put(3.5,0.4){$\displaystyle
    s:=\frac{a+b+c}{2}$}
\end{picture}
\end{example}
%As this example shows, text and formulas can be written into a \ei{picture} environment with
%the \ci{put} command in the usual way.
이 예가 보여주듯 텍스트와 수식은 평범하게 \ci{put} 명령을 사용하여 \ei{picture} 환경에 써넣을 수 있다.

%\subsection{\ci{multiput} and \ci{linethickness}}
\subsection{\ci{multiput}과 \ci{linethickness}}

\begin{example}
\setlength{\unitlength}{2mm}
\begin{picture}(30,20)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){26}%
    {\line(0,1){20}}
  \multiput(0,0)(0,1){21}%
    {\line(1,0){25}}
  \linethickness{0.15mm}
  \multiput(0,0)(5,0){6}%
    {\line(0,1){20}}
  \multiput(0,0)(0,5){5}%
    {\line(1,0){25}}
  \linethickness{0.3mm}
  \multiput(5,0)(10,0){2}%
    {\line(0,1){20}}
  \multiput(0,5)(0,10){2}%
    {\line(1,0){25}}
\end{picture}
\end{example}
%The command
\ci{mulitput} 명령은 네개의 인자를 갖는다.
\begin{lscommand}
  \ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{object}\verb|}|
\end{lscommand}
%\noindent has 4 arguments: the starting point, the translation vector from one object to the next,
%the number of objects, and the object to be drawn. The \ci{linethickness} command applies to
%horizontal and vertical line segments, but neither to oblique line segments, nor to circles.
%It does, however, apply to quadratic B\'ezier curves!
\noindent 네 인자는 시작점, 그래픽 객체가 다음 위치로 가는 이동 벡터(translation vector), 객체의 수, 그리고자 하는 객체(object)이다.
\ci{linethickness} 명령은 수직선이나 수평선에 적용되지만 경사 선분과 원에는 적용되지 않는다. 그런 한편 이차 베지어 곡선에는 적용된다!

%\subsection{Ovals}
\subsection{타원형 곡선}

\begin{example}
\setlength{\unitlength}{0.75cm}
\begin{picture}(6,4)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){7}%
    {\line(0,1){4}}
  \multiput(0,0)(0,1){5}%
    {\line(1,0){6}}
  \thicklines
  \put(2,3){\oval(3,1.8)}
  \thinlines
  \put(3,2){\oval(3,1.8)}
  \thicklines
  \put(2,1){\oval(3,1.8)[tl]}
  \put(4,1){\oval(3,1.8)[b]}
  \put(4,3){\oval(3,1.8)[r]}
  \put(3,1.5){\oval(1.8,0.4)}
\end{picture}
\end{example}
%The command
다음 두 명령 중 하나로 중심 $(x,y)$, 너비 $w$, 높이 $h$를 가지는 타원형 곡선(oval)을 그린다.
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)}|
\end{lscommand}
%\noindent or
\noindent 또는
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)[|\emph{position}\verb|]}|
\end{lscommand}
%\noindent produces an oval centered at $(x,y)$ and having width $w$ and height $h$. The optional
%\emph{position} arguments \texttt{b}, \texttt{t}, \texttt{l}, \texttt{r} refer to
%``top'', ``bottom'', ``left'', ``right'', and can be combined, as the example illustrates.
\noindent 위치를 나타내는 옵션 인자 \texttt{t}, \texttt{b}, \texttt{l}, \texttt{r}은 각각 ``top'', ``bottom'', ``left'', ``right''를 나타내며, 예에서 보는 바와 같이 조합하여 쓸 수도 있다.

%Line thickness can be controlled by two kinds of commands: \\
%\ci{linethickness}\verb|{|\emph{length}\verb|}|
%on the one hand, \ci{thinlines} and \ci{thicklines} on the other. While \ci{linethickness}\verb|{|\emph{length}\verb|}|
%applies only to horizontal and vertical lines (and quadratic B\'ezier curves), \ci{thinlines} and \ci{thicklines}
%apply to oblique line segments as well as to circles and ovals.

선의 두께는 두 종류의 명령으로 조정할 수 있다: \\
\ci{linethickness}\verb|{|\emph{length}\verb|}|를 사용하는 것이 그 하나이며 다른 방법으로는 \ci{thinlines}와 \ci{thicklines}를 사용한다. \ci{linethickness}\verb|{|\emph{length}\verb|}|는 수직선과 수평선, 그리고 이차 베지어 곡선에만 적용되는 한편, \ci{thinlines}와 \ci{thicklines}는 경사 선분, 원과 타원에 적용된다.


\newpage 

%\subsection{Multiple Use of Predefined Picture Boxes}
\subsection{그림 박스의 지정과 반복 사용}

\begin{example}
\setlength{\unitlength}{0.5mm}
\begin{picture}(120,168)
\newsavebox{\foldera}
\savebox{\foldera}
  (40,32)[bl]{% definition
  \multiput(0,0)(0,28){2}
    {\line(1,0){40}}
  \multiput(0,0)(40,0){2}
    {\line(0,1){28}}
  \put(1,28){\oval(2,2)[tl]}
  \put(1,29){\line(1,0){5}}
  \put(9,29){\oval(6,6)[tl]}
  \put(9,32){\line(1,0){8}}
  \put(17,29){\oval(6,6)[tr]}
  \put(20,29){\line(1,0){19}}
  \put(39,28){\oval(2,2)[tr]}
}
\newsavebox{\folderb}
\savebox{\folderb}
  (40,32)[l]{%         definition
  \put(0,14){\line(1,0){8}}
  \put(8,0){\usebox{\foldera}}
}
\put(34,26){\line(0,1){102}}
\put(14,128){\usebox{\foldera}}
\multiput(34,86)(0,-37){3}
  {\usebox{\folderb}}
\end{picture}
\end{example}
%A picture box can be \emph{declared} by the command
그림 박스(picture box)는 다음 명령으로 선언(\emph{declare}) 하며
\begin{lscommand}
  \ci{newsavebox}\verb|{|\emph{name}\verb|}|
\end{lscommand}
%\noindent then \emph{defined} by
\noindent 다음 명령으로 정의(\emph{define})하고
\begin{lscommand}
  \ci{savebox}\verb|{|\emph{name}\verb|}(|\emph{width,height}\verb|)[|\emph{position}\verb|]{|\emph{content}\verb|}|
\end{lscommand}
%\noindent and finally arbitrarily often be \emph{drawn} by
\noindent 마지막으로 다음의 명령으로 임의의 위치에 그리는 것이 흔히 쓰는 방법이다.
\begin{lscommand}
  \ci{put}\verb|(|$x,y$\verb|){|\ci{usebox}\verb|{|\emph{name}\verb|}}|
\end{lscommand}

%The optional \emph{position} parameter has the effect of defining the
%`anchor point' of the savebox. In the example it is set to \texttt{bl} which
%puts the anchor point into the bottom left corner of the savebox. The other
%position specifiers are \texttt{t}op and \texttt{r}ight.

옵션 파라미터 \emph{position}은 저장된 박스가 위치할 `고정점(anchor point)'을 정의한다. 위의 예에서는 \texttt{bl}로 설정되었고 이는 박스의 왼쪽 하단을 의미한다. 다른 위치 지정자로는 \texttt{top}과 \texttt{right}가 있다.

%The \emph{name} argument refers to a \LaTeX{} storage bin and therefore is
%of a command nature (which accounts for the backslashes in the current
%example). Boxed pictures can be nested: In this example, \ci{foldera} is
%used within the definition of \ci{folderb}.

인자 \emph{name}은 \LaTeX 의 저장소(storage bin)를 참조하며 따라서 이는 명령어로서의 성질을 가진다(이 때문에 위의 예에서와 같이 백슬래시(\textbackslash)가 필요하다). 박스 내부 그림 안에 또 다른 박스의 그림을 넣을(nested) 수도 있다: 위의 예에서는 \ci{folderb}의 정의 내부에 \ci{foldera}가 사용되었다.

%The \ci{oval} command had to be used as the \ci{line} command does not work if the segment length is less than
%about 3\,mm.

\ci{line} 명령은 선분의 길이가 대략 3\,mm 이하면 작동하지 않기에 \ci{oval} 명령을 사용했다.

%\subsection{Quadratic B\'ezier Curves}
\subsection{이차 베지어 곡선}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)
  \linethickness{0.075mm}
  \multiput(0,0)(1,0){7}
    {\line(0,1){4}}
  \multiput(0,0)(0,1){5}
    {\line(1,0){6}}
  \thicklines
  \put(0.5,0.5){\line(1,5){0.5}}
  \put(1,3){\line(4,1){2}}
  \qbezier(0.5,0.5)(1,3)(3,3.5)
  \thinlines
  \put(2.5,2){\line(2,-1){3}}
  \put(5.5,0.5){\line(-1,5){0.5}}
  \linethickness{1mm}
  \qbezier(2.5,2)(5.5,0.5)(5,3)
  \thinlines
  \qbezier(4,2)(4,3)(3,3)
  \qbezier(3,3)(2,3)(2,2)
  \qbezier(2,2)(2,1)(3,1)
  \qbezier(3,1)(4,1)(4,2)
\end{picture}
\end{example}
%As this example illustrates, splitting up a circle into 4 quadratic B\'ezier curves
%is not satisfactory. At least 8 are needed. The figure again shows the effect of
%the \ci{linethickness} command on horizontal or vertical lines, and of the
%\ci{thinlines} and the \ci{thicklines} commands on oblique line segments. It also
%shows that both kinds of commands affect quadratic B\'ezier curves, each command
%overriding all previous ones.

위의 예에서 볼 수 있듯이 하나의 원을 네 개의 이차 베지어 곡선(quadratic B\'ezier curve)으로 분할하는 것은 만족스럽지 않다. 적어도 여덟 개가 필요하다. 위의 그림은 \ci{linethickness}가 수직선과 수평선에 주는 효과와 \ci{thinlines}와 \ci{thicklines}가 경사 선분에 주는 효과를 보여주기도 한다. 또한 위의 그림은 두 가지의 명령 모두 이차 베지어 곡선에 영향을 준다는 것을 보이는데, 나중에 적용된 명령이 이전의 명령을 덮어쓴다.

%Let $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$ denote the end points, and $m_1,\,m_2$ the
%respective slopes, of a quadratic B\'ezier curve. The intermediate control point
%$S=(x,\,y)$ is then given by the equations

한 이차 베지어 곡선에서 $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$가 끝점을, $m_1,\,m_2$가 각각의 기울기를 나타낸다고 하자. 중간조정점(intermediate control point) $S=(x,\,y)$는 다음의 식에 의해 주어진다.
\begin{equation} \label{zwischenpunkt}
  \left\{
    \begin{aligned}%{rcl}
      x & = & \displaystyle \frac{m_2 x_2-m_1x_1-(y_2-y_1)}{m_2-m_1}, \\
      y & = & y_i+m_i(x-x_i)\qquad (i=1,\,2).
    \end{aligned}
  \right.
\end{equation}
%\noindent See \graphicsinlatex\ for a Java program which generates
%the necessary \ci{qbezier} command line.
\noindent \graphicsinlatex 에서 필요한 \ci{qbezier} 명령문을 도출하는 Java 프로그램을 볼 수 있다.


\newpage 

%\subsection{Catenary}
\subsection{현수선}

\begin{example}
\setlength{\unitlength}{1cm}
\begin{picture}(4.3,3.6)(-2.5,-0.25)
\put(-2,0){\vector(1,0){4.4}}
\put(2.45,-.05){$x$}
\put(0,0){\vector(0,1){3.2}}
\put(0,3.35){\makebox(0,0){$y$}}
\qbezier(0.0,0.0)(1.2384,0.0)
  (2.0,2.7622)
\qbezier(0.0,0.0)(-1.2384,0.0)
  (-2.0,2.7622)
\linethickness{.075mm}
\multiput(-2,0)(1,0){5}
  {\line(0,1){3}}
\multiput(-2,0)(0,1){4}
  {\line(1,0){4}}
\linethickness{.2mm}
\put( .3,.12763){\line(1,0){.4}}
\put(.5,-.07237){\line(0,1){.4}}
\put(-.7,.12763){\line(1,0){.4}}
\put(-.5,-.07237){\line(0,1){.4}}
\put(.8,.54308){\line(1,0){.4}}
\put(1,.34308){\line(0,1){.4}}
\put(-1.2,.54308){\line(1,0){.4}}
\put(-1,.34308){\line(0,1){.4}}
\put(1.3,1.35241){\line(1,0){.4}}
\put(1.5,1.15241){\line(0,1){.4}}
\put(-1.7,1.35241){\line(1,0){.4}}
\put(-1.5,1.15241){\line(0,1){.4}}
\put(-2.5,-0.25){\circle*{0.2}}
\end{picture}
\end{example}

%In this figure, each symmetric half of the catenary $y=\cosh x -1$ is approximated by a quadratic
%B\'ezier curve. The right half of the curve ends in the point \((2,\,2.7622)\), the slope there having the value
%\(m=3.6269\). Using again equation (\ref{zwischenpunkt}), we can
%calculate the intermediate control points. They turn out to be $(1.2384,\,0)$ and $(-1.2384,\,0)$.
%The crosses indicate points of the \emph{real} catenary. The error is barely noticeable, being less
%than one percent.

위의 예에서 현수선 $y=\cosh x -1$의 대칭적인 반쪽을 각각 이차 베지어 곡선으로 근사시켰다. 오른쪽 반은 \((2,\,2.7622)\)에서 끝나고 기울기는 \(m=3.6269\)이다. 식~(\ref{zwischenpunkt})\을 다시 이용하면 중간조정점을 계산해낼 수 있다. 이는 $(1.2384,\,0)$과 $(-1.2384,\,0)$이다. 십자 표시는 실제 현수선의 점들을 나타낸다. 오차는 1퍼센트보다 작아 거의 알아채기 힘들 정도이다. 

%This example points out the use of the optional argument of the \\
%\verb|\begin{picture}| command.
이 예는 \verb|\begin{picture}|의 옵션 인자가 사용되는 방식을 보여준다. 

%The picture is defined in convenient ``mathematical'' coordinates, whereas by the command
그림(picture)은 편리한 ``수학적'' 좌표로 정의되는데, 다음과 같이 표현하면 
\begin{lscommand}
  \ci{begin}\verb|{picture}(4.3,3.6)(-2.5,-0.25)|
\end{lscommand}
%\noindent its lower left corner (marked by the black disk) is assigned the coordinates $(-2.5,-0.25)$.

\noindent 그림의 왼쪽 아래에 $(-2.5,-0.25)$의 좌표를 지정한다는 것을 의미한다(이는 위 그림에서 검은 원으로 표시되어 나타나 있다).


\newpage 

%\subsection{Rapidity in the Special Theory of Relativity}
\subsection{특수상대성이론의 속도}

\begin{example}
\setlength{\unitlength}{0.8cm}
\begin{picture}(6,4)(-3,-2)
  \put(-2.5,0){\vector(1,0){5}}
  \put(2.7,-0.1){$\chi$}
  \put(0,-1.5){\vector(0,1){3}}
  \multiput(-2.5,1)(0.4,0){13}
    {\line(1,0){0.2}}
  \multiput(-2.5,-1)(0.4,0){13}
    {\line(1,0){0.2}}
  \put(0.2,1.4)
    {$\beta=v/c=\tanh\chi$}
  \qbezier(0,0)(0.8853,0.8853)
    (2,0.9640)
  \qbezier(0,0)(-0.8853,-0.8853)
    (-2,-0.9640)
  \put(-3,-2){\circle*{0.2}}
\end{picture}
\end{example}
%The control points of the two B\'ezier curves were calculated with formulas (\ref{zwischenpunkt}).
%The positive branch is determined by $P_1=(0,\,0),\,m_1=1$ and $P_2=(2,\,\tanh 2),\,m_2=1/\cosh^2 2$.
%Again, the picture is defined in mathematically convenient coordinates, and the lower left corner
%is assigned the mathematical coordinates $(-3,-2)$ (black disk).

식~(\ref{zwischenpunkt})\를 사용하여 두 베지어 곡선의 조정점들을 계산했다. 양의 방향 가지(positive branch)는 $P_1=(0,\,0),\,m_1=1$ 그리고 $P_2=(2,\,\tanh 2),\,m_2=1/\cosh^2 2$에 의해 결정된다. 또 다시 그림은 수학적으로 편리한 좌표로 정의되었는데,  좌표 $(-3,-2)$가 왼쪽 아래의 끝점(검은 점)에 배정되었다.

% \pagebreak[4]

%\section{The PGF and TikZ Graphics Packages}
\section{PGF와 TikZ 그래픽 패키지}
\label{sec:tikz}

%Today every \LaTeX{} output generation system can create nice vector graphics,
%it's just the interfaces that are rather diverse. The \pai{pgf} package provides an
%abstraction layer over these interface. The
%\pai{pgf} package comes with a large manual/tutorial of its own
%\cite{pgfplot}. So we are only going to scratch the surface of the package with this little
%section.

오늘날 모든 \LaTeX{} 결과물 생성 시스템은 질 좋은 벡터 그래픽을 그려낼 수 있으며, 다만 그 인터페이스들이 다양할 뿐이다. \pai{pgf} 패키지는 이 인터페이스들 위에 추상적인 레이어를 제공한다. \pai{pgf} 패키지는 자체적으로 방대한 매뉴얼과 튜토리얼을 담고 있다. 따라서 이 작디 작은 절에서 우리는 그 패키지가 할 수 있는 일의 일부만을 볼 수 있을 뿐이다.

%The \pai{pgf} package comes with a high level access language provided by the  \pai{tikz} package.
%TikZ provides highly efficient commands to
%draw graphics right from inside your document. Use the \ei{tikzpicture}
%environment to wrap your TikZ commands.

\pai{pgf} 패키지는 \pai{tikz} 패키지를 통해 하이 레벨 랭기지를 함께 제공한다.
\pai{pgf}는 도형을 그리는 엔진이고 TikZ는 그 엔진에 대한 사용자 인터페이스를 제공하는 고수준 언어라고 생각할 수 있다.
TikZ는 사용자의 문서 내부에서 바로 그래프를 그려낼 수 있는 매우 효율적인 명령들을 제공한다. 사용자는 TikZ 명령들을 \ei{tikzpicture} 환경 내에서 사용하면 된다.

%As mentioned above, there is an excellent manual for \pai{pgf} and friends. So
%instead of actually explaining how it works, I will just show you a few examples
%so that you can get a first impression of how this tool works.

위에서 언급했듯 \pai{pgf}와 그 ``친구들''을 다루기 위한 훌륭한 매뉴얼이 존재한다. 따라서 이들의 원리를 직접 설명하기보다는, 사용자에게 첫 인상을 심어주기 위해 이들이 어떤 결과물을 내놓는지를 몇 가지 살펴보기로 한다.

%First a simple nonsense diagram.
우선 간단한 nonsense diagram부터 보자.

\begin{example}
\begin{tikzpicture}[scale=3]
  \clip (-0.1,-0.2)
     rectangle (1.8,1.2);
  \draw[step=.25cm,gray,very thin]
       (-1.4,-1.4) grid (3.4,3.4);
  \draw (-1.5,0) -- (2.5,0);
  \draw (0,-1.5) -- (0,1.5);
  \draw (0,0) circle (1cm);
  \filldraw[fill=green!20!white,
            draw=green!50!black]
    (0,0) -- (3mm,0mm)
         arc (0:30:3mm) -- cycle;
\end{tikzpicture}
\end{example}
%Note the semicolon (\texttt{;}) character. It separates the individual commands.
세미콜론(\texttt{;})을 주목하라. 이것이 개별 명령들을 구분짓는다.

%A simple Venn diagram.
다음은 간단한 \wi{벤 다이어그램}을 그리는 예이다.
\begin{example}
\begin{tikzpicture}
  \node[circle,draw,
        minimum size=3cm,
        label=120:{economics}]
         at (0,0) {};
  \node[circle,draw,
        minimum size=3cm,
        label=60:{psychology}]
         at (1,0) {};
  \node (i) at (0.5,-1) {};
  \node at (0.6,-2.5)
    {behavioral economics}
    edge[->,thick,
         out=60,in=-60] (i);
\end{tikzpicture}
\end{example}

%Note the foreach loops in the next example.
% \pagebreak[4]

다음 예에서는 \ei{foreach} 반복문을 주목하라.

\begin{example}
\begin{tikzpicture}[scale=0.8]
  \tikzstyle{v}=[circle,
     minimum size=2mm,inner sep=0pt,draw]
  \foreach \i in {1,...,8}
    \foreach \j in {1,...,3}
      \node[v](G-\i-\j) at (\i,\j) {};
  \foreach \i in {1,...,8}
    \foreach \j/\o in {1/2,2/3}
      \draw[->]
        (G-\i-\j) -- (G-\i-\o);
  \foreach \i/\n in
    {1/2,2/3,3/4,4/5,5/6,6/7,7/8}
    \foreach \j/\o in {1/2,2/3} {
       \draw[->] (G-\i-\j) -- (G-\n-\o);
       \draw[->] (G-\n-\j) -- (G-\i-\o);
    }
\end{tikzpicture}
\end{example}

%With the \ci{usetikzlibrary}
%command in the preamble you can enable a wide variety of additional
%features for drawing special shapes, like this box which is slightly bent.

문서의 전처리부(preamble)에서 \ci{usetikzlibrary}로 새로운 기능을 제공하는 라이브러리(library)를 불러오면, 다음의 살짝 휜 박스와 같은 특별한 도형들을 그릴 때 필요한 다양한 기능을 추가할 수 있다.
\begin{example}
\usetikzlibrary{%
  decorations.pathmorphing}
\begin{tikzpicture}[
     decoration={bent,aspect=.3}]
 \draw [decorate,fill=lightgray]
        (0,0) rectangle (5.5,4);
 \node[circle,draw]
        (A) at (.5,.5) {A};
 \node[circle,draw]
        (B) at (5,3.5) {B};
 \draw[->,decorate] (A) -- (B);
 \draw[->,decorate] (B) -- (A);
\end{tikzpicture}
\end{example}

\vspace{-.5\onelineskip}

\begin{example}
\usetikzlibrary{positioning}
\begin{tikzpicture}[xscale=6,
     yscale=8,>=stealth]
  \tikzstyle{v}=[circle,
     minimum size=1mm,draw,thick]
  \node[v] (a) {$1$};
  \node[v] (b) [right=of a] {$2$};
  \node[v] (c) [below=of a] {$2$};
  \node[v] (d) [below=of b] {$1$};
  \draw[thick,->]
        (a) to node {} (c);
  \draw[thick,->]
        (a) to node {} (d);
  \draw[thick,->]
        (b) to node {} (d);
\end{tikzpicture}
\end{example}

%You can even draw syntax diagrams that look as if they came straight from a book on
%Pascal programming. The code is a bit more daunting than the example above,
%so I will just show you the result. If you have a look at the \pai{pgf} documentation
%you will find a detailed tutorial on drawing this exact diagram.

사용자는 파스칼 프로그래밍 책에서 바로 뛰쳐나온 것 같은 syntax \wi{다이어그램}조차 그릴 수 있다. 다만 그 코딩이 위의 예시에 비해 다소 무시무시하기 때문에 그 결과물만을 보기로 하자. \pai{pgf} 문서를 찾아보면 이것과 동일한 다이어그램을 그리는 과정에 대한 세세한 설명을 찾을 수 있다.

\begin{center}
\begin{tikzpicture}[point/.style={coordinate},thick,draw=black!50,>=stealth',
                    tip/.style={->,shorten >=1pt},every join/.style={rounded corners},
                    skip loop/.style={to path={-- ++(0,#1) -| (\tikztotarget)}},
                    hv path/.style={to path={-| (\tikztotarget)}},
                    vh path/.style={to path={|- (\tikztotarget)}},
                 terminal/.style={
            rounded rectangle,
            minimum size=6mm,
            thick,draw=black!50,
            top color=white,bottom color=black!20,
            font=\ttfamily\tiny},
                nonterminal/.style={
                       rectangle,
                       minimum size=6mm,
                       thick,
                       draw=red!50!black!50,         % 50% red and 50% black,
                       top color=white,              % a shading that is white at the top...
                       bottom color=red!50!black!20, % and something else at the bottom
                       font=\itshape\tiny}]
\matrix[column sep=4mm] {
  % First row:
  & & & & & & & & & & & \node (plus) [terminal] {+};\\
  % Second row:
  \node (p1) [point] {}; &     \node (ui1)    [nonterminal] {unsigned integer}; &
  \node (p2) [point] {}; &     \node (dot)    [terminal]    {.};                &
  \node (p3) [point] {}; &     \node (digit) [terminal]     {digit};            &
  \node (p4) [point] {}; &     \node (p5)     [point] {};                       &
  \node (p6) [point] {}; &     \node (e)      [terminal]    {E};                &
  \node (p7) [point] {}; &                                                      &
  \node (p8) [point] {}; &     \node (ui2)    [nonterminal] {unsigned integer}; &
  \node (p9) [point] {}; &     \node (p10)    [point]       {};\\
  % Third row:
  & & & & & & & & & & & \node (minus)[terminal] {-};\\
};
{ [start chain]
  \chainin (p1);
  \chainin (ui1)   [join=by tip];
  \chainin (p2)    [join];
  \chainin (dot)   [join=by tip];
  \chainin (p3)    [join];
  \chainin (digit) [join=by tip];
  \chainin (p4)    [join];
  { [start branch=digit loop]
    \chainin (p3) [join=by {skip loop=-6mm,tip}];
  }
  \chainin (p5)    [join,join=with p2 by {skip loop=6mm,tip}];
  \chainin (p6)    [join];
  \chainin (e)     [join=by tip];
  \chainin (p7)    [join];
  { [start branch=plus]
    \chainin (plus) [join=by {vh path,tip}];
    \chainin (p8)    [join=by {hv path,tip}];
  }
  { [start branch=minus]
    \chainin (minus) [join=by {vh path,tip}];
    \chainin (p8)    [join=by {hv path,tip}];
  }
  \chainin (p8)    [join];
  \chainin (ui2)   [join=by tip];
  \chainin (p9)    [join,join=with p6 by {skip loop=-11mm,tip}];
  \chainin (p10)   [join=by tip];
}
\end{tikzpicture}
\end{center}

%And there is more, if you have to draw plots of numerical data or
%functions, you should have a closer look at the  \pai{pgfplot}
%package. It provides everything you need to draw plots. It can even
%call the external \texttt{gnuplot} command to evaluate actual
%functions you wrote into the graph.

이게 끝이 아니다. 만약 사용자가 데이터를 플롯하거나 함수의 그래프를 그려야 한다면 \pai{pgfplot} 패키지를 파고들어보면 좋다. 이 패키지는 플롯을 위해 필요한 모든 것을 제공하고 있으며, 더 나아가 외부 명령 \texttt{gnuplot}을 사용하면 함수를 직접 사용해 그래프를 그릴 수도 있다.

사실 \ei{pgfplot} 패키지를 로드하지 않아도, 웬만한 함수를 플롯할 수 있다. 그 한 예를 들자면 다음과 같다.\trfnote{이 한 문단은 역자의 보충이다.}

%\documentclass{standalone}
%\usepackage{tikz}
%\begin{document}
\begin{example}
\begin{tikzpicture}
\draw plot [domain=0:6.28,samples=500]
  (\x,{sin(\x r)});
\end{tikzpicture}
\end{example}
%\end{document}

\medskip

%For more inspiration make sure to visit Kjell Magne Fauske's excellent
%\url{http://www.texample.net/tikz/}. it contains an ever expanding store of
%beautiful graphs and other \LaTeX{} code. On \TeX{}ample.net you will also
%find a
% \href{http://www.texample.net/tikz/resources/#tools-that-generate-pgftikz-code}{list
% of tools to work with PGF/TikZ} so that you do not have to write all that
% code by hand.

더 많은 영감을 얻고자 한다면 Kjell Magne Fauske의 \url{http://www.texample.net/tikz/}에 방문해보기를 권한다. 이 사이트는 수많은 아름다운 그래프와 다른 \LaTeX{} 코드들을 담고 있는 창고와 같으면서 이 순간에도 커지고 있다. \TeX{}ample.net의 \href{http://www.texample.net/tikz/resources/#tools-that-generate-pgftikz-code}{list
 of tools to work with PGF/TikZ}에서는 PGF/TikZ를 다룰 때 쓸 수 있는 도구들이 다수 수록되어 있기 때문에 모든 것을 직접 만들어내지 않아도 사용할 수 있다.

%%% Local Variables:
%%% TeX-master: "lshort.tex"
%%% mode: flyspell
%%% TeX-PDF-mode: t
%%% End:
