2016년 2월 19일 금요일

LaTeX로 논문 쓰기 - 입문편

대학원을 가시는 대부분의 분들은 아마 논문을 써야하실 것입니다. 논문쓰기.. 참 쉽지 않죠? 물론 논문을 쓰기위해 서베이하고, 아이디어 내고, 실험하는 과정 모두 쉽지 않겠지만, 그 못지않게 논문을 잘 쓰는 것 역시 쉬운 일이 아닐 것입니다. 그런데 더 우릴 좌절하게 하는건 바로 "LaTeX"라는 생소한 문서편집 언어이죠.
"LaTeX로 쓰라고요? 그냥 Word로 쓰면 안되나요...?ㅠ"
구글에 이미지를 검색해보고 깜놀하고 말았다. 흠.. 역시 LaTeX는 좋은거다.

물론 써도 되겠지요. 하지만 진정 학자의 길을 걸으시려 한다면 (그리고 논문을 한두편 내실 것이 아니라면) LaTeX를 연습하시는 것이 좋을 것입니다. 그런 막막한 분들을 위해 준비했습니다. LaTeX로 논문 쓰기 입문편입니다.

LaTeX 설치하기

일단 "LaTeX"란 단어를 쓰고 읽을 줄부터 알아야겠죠? latex, Latex, LaTex 아니고 LaTeX라고 쓴다는거 일단 알아두시고요. 읽는건 "레이~텍" 또는 그냥 ""이라고 읽으시면 됩니다. 이것은 기기와 상관없이 똑같은 결과물을 얻고자 만들어진 (그래서 확장자가 device independent format인 .dvi인) TeX에 이를 쉽게쓰기 위한 매크로가 얹어진 형태를 말하지요.

이걸 쓰시려면 우선 설치부터 해야할텐데요, 한글을 쓰시려는 분들은 한글 TeX 사용자 그룹의 자료를 참고하시면 좋을 것 같습니다. (한글을 위한 portable TeX인 TnXTeX가 개발되어 있네요. 역시 세상엔 짱짱맨들이 많음!)

보통은 영문 논문을 쓰신다고 믿고 말씀드리자면, 보통은 컴파일을 위한 프로그램인 MikTeX 또는 TeX Live를 설치하고 코딩을 하기위한 에디팅 환경인 Texmaker 또는 TeXworks를 설치하는 것이 보통입니다.
저는 MikTeX과 Texmaker의 조합을 사용했었죠. 그것을 설치하면 아래와 같은 문서작성 환경을 얻으실 수 있습니다. 중간 창에 코딩(?)을 하고 그것을 빌드하면 오른쪽의 문서로 결과물이 나오지요. 세상에는 정말 다양한 TeX 에디터가 있으니 자세한 내용은 위키를 참고하세요.

Texmaker의 모습

그.런.데...! 저 요즘에 이거 사용 안합니다 ㅎㅎ 클라우드에서 협업하는 구글 다큐멘트가 생겼듯 텍에서도 공동 작업을 할 수 있는 클라우드 환경이 생겼기 때문이죠! 특히 논문을 내는 과정에서 여러분들이 공동 저자들과 문서를 주고받아야 할 일이 많다는 것을 상기하신다면 온라인 LaTeX은 더없이 편리하답니다.

또다른 온라인 LaTeX의 장점은 많은 패키지가 이미 인스톨 되어 있다는거죠. 사실 텍을 설치해서 쓰다보면 새로운 패키지(예를 들면 더 다양한 수식을 사용하고 싶다거나, 더 다양한 글꼴을 사용하고 싶다거나)를 쓸 일이 많은데요, 이 때마다 컴퓨터에 이 패키지를 설치해야하죠. 여러 컴퓨터에서 작업을 하고 있다면 여러 컴퓨터 각각에 설치를 다 해야하니... 기분이 썩 깔끔하진 않죠. 그런데 온라인 LaTeX는 이미 대중적인 패키지들이 모두 설치되어 있기때문에 그저 "Compile"버튼 한번만 눌러주시면 된답니다.

이 외에도 다양한 템플릿을 제공한다거나, 매뉴얼이 잘 나와있다거나 하는 등의 장점들이 있는데요, 암튼 온라인 LaTeX를 쓰기 시작한 이후엔 제 컴퓨터의 Texmaker를 켤 일이 거의 없어졌답니다.

온라인 LaTeX 에디터로는 대표적으로 ShareLaTeXOverleaf가 있습니다. 둘이 거의 비슷하다고 하는데요, 약간 ShareLaTeX가 약간 더 낫다는 평이 있어 저는 ShareLaTeX로 텍을 쓰고 있습니다. 참 좋더군요.


[결론] 귀찮게 컴퓨터, 노트북에 텍 설치하지 마시고 그냥 온라인 텍 쓰시면 편리한 것 같아요. 만약에 공유해야할 공동저자들이 많다면 Overleaf를 쓰시고요 (ShareLaTeX는 공동저자 1명까지만 무료) 그게 아니라 그냥 지도교수님과만 공동작업을 하면 된다면 ShareLaTeX를 쓰시지요. (유료버전을 쓰신다면 가격은 Overleaf가 더 싸긴 하네요.)

LaTeX 시작하기

ShareLaTex에선 다양한 템플릿들을 제공합니다. 학회 템플릿도 있고, 참고문헌 템플릿도 있고, 책 템플릿도 있고, 이력서 템플릿도 있고... 이 중에 제가 IEEE 학회 템플릿으로 한번 시작을 해봤는데요, ICRA나 IROS가 요구하는 템플릿과는 맞지 않더군요. (각 학회마다 요구하는 템플릿이 약간씩 다를 수 있으니까요.) 그러니 시작은 Blank Template으로 하시고 class 파일을 학회 홈페이지에서 다운받으시면 되겠습니다.
가장 간단하게 일단 ieeeconf.zip에 포함되어 있는 root.tex와 ieeeconf.cls파일을 업로드 해볼까요? 이것을 업로드하시고 오른쪽 위에있는 Compile 버튼을 누르면 (또는 Ctrl+Enter를 누르면) 여러분의 첫번째 LaTeX 문서가 짜잔~하고 완성됩니다. 



이제 가장 간단하게 논문을 작성하시는 방법 중 하나는 여기에 있는 텍스트들을 여러분이 쓰고싶은 텍스트로 바꾸시면 되겠지요. 타이틀(\title)에 원하는 것 쓰시고, 저자(\author)에 원하는 것 쓰시고, 초록(\abstract)에 원하는 글 쓰시고.. 등등... 이렇게 텍스트를 채워나가시면 어느정도 그럴싸한 논문을 얻으실 수 있으실 것입니다.

LaTeX 기본 사용법 알아보기 

텍을 쓰시다보면 그림은 어떻게 그려 넣는지, 수식은 어떻게 깔끔하게 표현하는지 등 점점 알고 싶은게 많아지는데요, 이러한 것을 University of South Florida의 권창현 교수님께서 잘 정리해주신 자료가 있습니다. (영어)
이 예제는 다양한 LaTeX 문법이 pdf로 어떻게 표현되는지 잘 설명되어 있는데, 하나하나 따라가 읽어보며 필요한 것들을 자신의 논문에 복사해서 쓰시면 좋을 것 같습니다. 여기선 그 중 몇가지만 짚어보도록 하죠.


0. 필요한 패키지를 앞쪽에 선언해야한다.


TeX에서는 다양한 기능을 가진 패키지들을 이용할 수 있습니다. 예를 들면 pdf로부터 그림을 넣어준다든지, 아니면 다양한 수식들이 정의되어 있다든지 하는 등등의 것들 말이죠. 기본적으로 쓰셔야 할 것은 이미 IEEE 예제의 root.tex에 포함되어 있을 것입니다. 대표적인 패키지들로는 다음의 것들이 있습니다.
\usepackage{amsmath}, \usepackage{amssymb} : 수식을 쓸 수 있게 해 줌
\usepackage{epsfig} : eps 포맷의 그림을 넣을 수 있게 해줌
\usepackage{cite} : BibTeX으로부터 citation을 가능하게 해줌
이 외에도 유용한 패키지들이 많이 있죠.
\hyperref : 문서 내에 하이퍼링크를 활성화 시킴
\natbib : 다양한 형태의 citation 가능
\subfigure : subplot 할 때 유용
\tikz : 다이어그램 그릴 때
TeX의 매력은 하나하나 패키지를 써가는 재미에 있는 것이니 직접 탐색해보시고 써보시고 하는 것도 재밌으실 거에요. 단, 논문을 제출하실 때엔 해당 학회에서 패키지들은 지원안할 경우들이 있으니 고전적인 패키지들만 써서 논문을 작성하시는게 안전할 듯 합니다.


1. 문단 구분은 한 줄을 띄운다.


문단을 구분하실 땐 Tex에서 한 줄을 띄우고 쓰시면 됩니다. 그러면 다음 문단은 자동으로 들여쓰기가 되지요.  만약 줄바꿈만 하신다면 다음 문장의 첫 글자는 들여쓰기 없이 맨 앞에 붙어서 나오게 됩니다. 들여쓰기가 없는 경우는 수식 뒤에 "where A represents..." 이런 것에 쓸 때 주로 쓰지요.


위에 보시면 "Finally," 할 때는 위의 줄에 공백이 있었던 것이고요, "where"할 때는 위의 줄 공백 없이 equation 바로 다음에 줄바꿈만 한 결과입니다.


2. 일반 수식들과 문장 안의 수식 표현

일반 수식은 \begin{equation} 으로 시작해 \end{equation}으로 끝납니다. 그리고 보통 훗날 수식 번호를 문장 속에서 쓰기 위해 \label{}을 붙여놓죠


문장 속에서도 수식을 쓸 때가 많은데요, 이럴 땐 달러표시 사이에 씁니다. 아래와 같이요.


여기에서 몇 가지 remark 해야할 점이 있네요.

일단, TeX은 이미 많은 수학기호들이 내부 명령어로 저장되어 있습니다. 예를 들자면 "exp"로 쓰는 것보단 "\exp"라고 쓰셔야 하고, "log" 대신 "\log", "det" 대신 "\det"를 써야하죠. 왜냐고요? 그게 더 모양이 예쁘게 나와요 ㅎㅎ

그리고 차원을 표시할 때도 무심코 "R^3" 이런식으로 표시할 수도 있는데, 그것이 아니라 "\Re^3"이 올바른 표현이죠. 그리고 마지막으로 수식 중에 택스트를 써야할 때는 꼭 "\text{}"를 이용해주세요. 그렇지 않으면 글자들이 기울어져서 표현되어 마치 변수들이 곱해진 것처럼 보인답니다.


2. 벡터와 매트릭스 표현 

일단, scalar와 vector와 matrix를 표현하는데 어떤 글자체가 좋은 표현법이냐에 대해선 참 말들이 많습니다. 전 그냥 보통 \mathbf{R}를 쓰는데, 어떤 분들은 \usepackage{bm}를 이용해서 \bm{}을 이용하기도 하죠.  어떤게 예쁜지는 각자의 판단에 맡깁니다 ㅎㅎ

벡터와 행렬의 원소 표현에 대해선 bmatrix를 이용하시면 됩니다. 위의 권창현님의 파일에서 예제를 가져와보도록 하죠.


위에서 \mat{} 은 따로 매크로를 설정한 것인데, 저것 대신 \mathbf{A}를 쓰시면 에러없이 매트릭스가 잘 만들어질 것입니다.

죄송합니다... 핵노잼으로 흐르고 있어서..ㅠ (사진출처)

3. 그림 삽입

이것도 정말 많은 팁들이 있는데요, 무난한 방법은 eps 또는 pdf로 그림을 저장하신 다음에 이것을 불러들이는 방법입니다. 주의하실 점은 이미지는 jpg나 png 같은 비트맵 이미지가 아니라, 크기가 변해도 품질이 떨어지지 않는 벡터이미지여야 좋다는 점입니다. 왜냐하면 TeX 내부에서 이것을 늘리고 줄이고 하기 때문이지요. 벡터이미지는 일러스트를 쓰실 수 있으시면 가장 좋고, 아니면 파워포인트, 아니면 Inkscape란 무료 프로그램을 이용하셔도 좋습니다.


\begin{figure} 다음에는 [!t] 와 같이 그림의 위치를 지정해줄 수 있는데요, h는 이 자리에, t는 가장 위에, b는 가장 아래, p는 이 시점으로부터 아무데나 적절한 위치를 나타내죠. 예를 들어 [ht]를 쓴다면 "이곳에 넣거나 그게 안된다면 다음페이지의 top에 넣어라"란 뜻이 되고요, "!"는 "강제로"란 의미인데 "[!t]"라고 하면 닥치고 무조건 맨 위에 넣으란 뜻이 되죠.

그림의 크기는 위에 보이시는 것처럼 \textwidth에 대한 비율로도 지정해줄 수도 있고 [scale=0.5]처럼 원본에 대한 비율로 지정해주실 수도 있습니다. 그리고 만약 그림을 잘라야 할 필요가 있다면 [trim={1cm 2cm 3cm, 4cm},clip,scale=0.55] 처럼 이용할 수도 있죠.  이것은 "왼쪽 1cm, 아래 2cm, 오른쪽 3cm, 위쪽 4cm 잘라라"란 뜻입니다.

그리고 다단을 무시하는 그림을 만들고 싶을 땐 \begin{figure} \end{figure} 대신  \begin{figure*} \end{figure*} 을 이용하시면 됩니다. 표도 마찬가지겠죠?


4. 표 삽입

글이 노잼으로 흐르고 있으므로 이 내용도 역시 권창현님 자료의 예제로 갈음합니다.



5. 수식, 그림, 표 레퍼런스 하기


논문을 쓰다보면 본문에서 수식이나 그림, 표를 언급할 일이 당연히 생깁니다. 이 때 절대로 "Eq. (1)", "Fig. 1." 등을 타이핑하지 마시고 꼭 label을 이용해 레퍼런스 하시기 바랍니다. 수식이나 그림을 작성하실 때 \label{}이라고 썼던 부분 기억나시죠? 이 이름들을 본문에서 \ref{}로 불러서 사용하는 것이죠. 이렇게 되면 예를 들어 그림 1이 그림 2로 밀리더라도 자동으로 본문 속 번호들도 함께 바뀌게 되어 편리합니다.


학회마다 수식과 그림 등을 인용하는 표기들이 다릅니다. 어떤 곳은 Equation 2.라고 쓰라고 하고 어떤 곳은 그냥 (2) 만 쓰라고 하고, 어떤 곳은 Eq. 2.라고 쓰라고 하고... 이런 규칙들에 대해선 꼭 학회의 표기 방식을 따르시길 바랍니다. IEEE 학회의 경우에는 수식은 그냥 괄호와 숫자만으로 이루어지게 (2) 과 같이 표시하고, 그림은 Fig. 2. 와 같이 표기합니다.

참고문헌 작성하기

마지막 내용은 참고문헌 작성하기입니다. 정말 짜증나는 작업이죠ㅠ 처음 IEEE 템플릿을 받아보시면 아마 수작업으로 모두 작성되어 있을 겁니다.


이 형식에 맞춰서 하나하나 참고문헌을 타이핑하려면 오타도 나고 참 거시기 하죠. 그래서 나온 것이 바로 BiBTeX 입니다. 구글스칼라로 보면 아마 BiBTeX란 것을 보실 수 있으실텐데요... (이렇게 말하면 또 모르실 수도 있으니... 보여드릴게요)




여기에 있는 BiBTeX 들을 긁어서 .bib 파일을 만들어 놓으시면 \userpackage{cite}를 이용해 본문에서 \cite{}로 레퍼런스 할 수도 있고, 자동으로 마지막 레퍼런스 목록에 추가도 된답니다.

방법은 다음과 같습니다. 일단 먼저 .bib 파일을 만듭니다.


그리고 IEEE 패키지에 들어있던 IEEEtran.bst, IEEEabrv.bib (학회용) 가 같은 폴더 내에 있는지 다시 한번 확인하시고요, (그러니까 현재 논문 폴더에는 tex 파일, bib 파일과 함께  ieeeconf.cls, IEEEtran.bst 이 있어야합니다.) 이제 본문에 \userpackage{cite}를 선언합니다.

그리고 마지막에 (\end{doucument} 전에) 다음과 같이 선언해 주면 되죠.
\bibliographystyle{IEEEtran}
\bibliography{IEEEabrv, myBiB}
윗줄은 IEEEtran의 스타일로 Reference 섹션에 참고문헌들을 작성한다는 얘기고요, 밑에 것은 본인이 사용할 bib 파일들입니다. IEEEabrv는 IEEE 논문들에서 사용하는 약어식 참고문헌 표기법이지요. myBiB에는 본인의 BiB파일 이름을 대신 적어주시면 되겠습니다.

이것만 하면 앞으로는 TeX 내에서 \cite{} 명령어를 통해 자유롭게 레퍼런스 하실 수 있습니다. 예제를 보여드리자면 다음과 같죠.


자, 이제 엄청 간단해졌죠?
  1. 구글스칼라에서 BiBTeX를 긁어다가 자기의 bib파일에 붙인다.
  2. \cite{} 를 이용해 인용한다.
  3. 마지막에 선언을 통해 자동으로 리스트를 작성한다.
끝~ 참고로 Texmaker 등으로 오프라인 컴파일을 하시는 분들은 pdfLaTeX 컴파일, BiBTeX 컴파일, pdfLaTeX 컴파일, pdfLaTeX 컴파일 순으로 컴파일을 해주셔야 [?]가 사라진다는 것 참고해주세요. ShareLaTeX를 이용하신다면 이런 걱정은 안하셔도 되고요~

이 정도 익히셨으면 여러분은 이제 논문을 쓸 준비가 되신 것입니다 ^^ 끝까지 노잼 글 읽어주셔서 감사하고요, 여러분의 학문적 앞 날이 창창하시길 바라겠습니다! 화이팅...! ^^


[rss] http://t-robotics.blogspot.kr/feeds/posts/default