(La)Tex 사용법 정리


논문 작성 필수 도구이다.

the art of programming의 저자이자 튜링상(CS의 노벨상) 수상자인 Donald Knuth 교수가 처음으로 Tex이라는 언어를 만들었다.

알고리즘이라는 학문을 수립한 CS 분야 최고 대가 중 한명이다.


스탠포드에서 가장많은 튜링상 수상자 보유 기관이라는 타이틀을 얻기위해서 Donald Knuth 교수님을 모셔왔다.

지금은 스탠포드 명예교수로 재직중이시다.



Tex의 표준 배포판의 종류


Latex Packages의 종류


MikTex

사람들이 많이 사용하는 버전이다.

한글을 지원하기 위해서는 추가적인 노력이 필요하다.


TexLive

2013 버전이후로는 추가적인 설정없이 한글을 사용 가능하다.


ko TeXLive

이것은 KTUG 표준 한글텍환경 프로젝트팀이 KTS의 지원을 받아서 제작하여 배포한 윈도우즈용 설치파일이다.

2014년부터는 ko.Tex이 TexLive에 정식으로 들어갔으므로 이제는 더이상 나오지 않는다.

가장 최신버전이 2013 이다.

다운로드


TnTex

Window에서 동작하는 간이 텍 환경이다.

휴대용으로 usb에 넣어서 portable하게 사용 할 수 있다.

TnTex은 LiveTex 기반으로 만들어 졌다.

관련사이트


사실 ShareLatex과 같은 web기반 tex이 있는 상황이라, 정말 Network도 구축 안된 환경에서 작업할 것이 아니라면

의미 없는것 같다.




Tex에서 한글 사용법


ko.tex live 2013을 설치한다. 또는 texlive 2014 버전 이상을 설치한다.

\usepackage{kotex}





LaTex Compiler의 종류



Complier를 어떤걸 선택 하느냐에 따라서, 그림 삽입 등을 할때 선택 사항이 달라 진다.


LaTex

dvi file을 생성 해야할 경우 latex을 반드시 써야 한다. (tex4ht를 사용 해야 하므로), 왜냐하면, dvips를 이용해서 pdf로 변활 하지 않으면, 품질 하락이 있다고 주장 한다. 다음 Post를 읽어보면, pdfLaTex을 쓰지 말라고 한다. Click

journal에서 postscirpt figure를 요할 경우 latex을 써야한다.


pdfLaTex

pdf image 사용가능

png image 사용 가능

eps 도 당연히 사용 가능



LaTex 문서 편집 관련



Latex에서의 공백 처리 방식

빈칸, 탭 모든 것은 동일한 스페이스로 취급된다. 따라서 여러개의 공백문자들도 하나로 취급 된다. 개행 문자 역시 하나의 공백일 뿐이다.


즉, 두 줄사이에 빈 한줄을 넣으면, 문단의 바꿈을 의미한다. 여러줄을 넣어도 그냥 문단의 변경일 뿐이다.


강제로 줄을 바꾸는 명령어: \\ or \newline

줄 바꾸면서, 쪽 나눔이 일어 나지 않도록: \\*

새쪽 시작: \newpage


행간 조절 방법

\linespread{factor}: 문서 전체에 영향이감

\setlength{\baselineskip}{1.5\baselineskip}: 한문단에 영향을 줌

setspace package도 유용함


문단 모양

\indent

\noindent


수평간격

Latex은 단어와 문장 사이의 관격을 자동으로 설정 한다. 하지만 간혹 너무 수평 간격이 넓을 때가 존재한다.

\hspace{length}


수직 간격

\vspace{length }

\vspace{-0.1cm}


Font Effects

\textit{words in italics}     // words in italics

\textbf{words in bold}     // words in bold

\textsf{sans serif words}  // sans serif words ( for source code)


\emph{text} // 평소에는 이탤릭체를 나타내지만, 앞뒤 문맥에 따라서 다르게 동작 한다.


\bf // bold font


상호 참조

\label{maker} 


\ref{maker}

\pageref{maker}






LaTex에 그림 넣기



그림을 삽입하는 방법은 여러가지가 있다.


eps포맷은 latex 컴파일러를 써야 한다. 왜냐하면, dvips -> pdf 로 변환 과정을 거치기 때문이다.

jpg, png, pdf포맷은 latexpdf를 통해서만 컴파일 할 수 있다.


\usepackage{graphicx}


이명령어를 맨위에 적어라 그러면, 두 컴파일러에서 모두 \includegraphics를 동작 가능하게 할 수 있다.


어떤 graphics package는 Latex 컴파일러 종류에 다라 동작하게 되므로 그래프 삽입시 문제가 발생 할 수도 있다.


이식성을 높이려면, pdf나 eps를 사용하자. 퀄리티도 올라감.

pdf vs eps의 싸움은 아래 링크를 보면, pdf가 승리 한것 같다.

Which figure type to use: pdf or eps?


pdf가 표준이며, pdflatex 을 사용했을 때 어떠한 변환 없이 컴파일이 가능 하기 때문이다.



\begin{figure}[!h]

\centering

\includegraphics[width=0.9\columnwidth]{Figure1}

\caption{With Caption Below, be sure to have a good resolution image

(see item D within the preparation instructions).}

\label{fig:figure1}

\end{figure}



1\begin{figure}
2\centering
3\epsfig{file=figure2.eps, width=7cm}
4\caption{Ratio of residence-time in frequently visited place for all users.}
5\label{fig:stay_in_place}
6\end{figure}



subfigure의 고찰


단순히 이미지를 나란히 배치하고 싶은거라면 아래의 코드를 이용한다.

\begin{figure}%

\centering

\parbox{1.2in}{%

...figure code...

\caption{First.}%

\label{fig:2figsA}}%

\qquad

\begin{minipage}{1.2in}%

...figure code...

\caption{Second.}%

\label{fig:2figsB}%

\end{minipage}%

\end{figure}%




\usepackage[options]{subfigure}



\subfiglabelskip=-12pt

\begin{figure*}[t]

\centering

\subfigure[][]{\label{figure4:first}\includegraphics[width=.32\textwidth]{./Figures/CPU_Util_CDF}}\hfill

\subfigure[][]{\label{figure4:second}\includegraphics[width=.32\textwidth]{./Figures/Traffic_CDF}}\hfill

\subfigure[][]{\label{figure4:thrid}\includegraphics[width=.32\textwidth]{./Figures/Power_CDF}}

\caption{resource usage}

\label{fig:figure4}

\end{figure*}


// subfiglabelskip는 subfigure의 caption을 조정하기 위해서 사용 함.

// subfigure의 caption은 무시한 경우이다. 넣고 싶으면, []에다가 무언가를 추가 하면 된다.


//인용의 경우

\ref

\subref

두 가지를 사용 한다.

\subref의 경우 main figure number를 보여주지 않는다.


각 with들의 차이점


\hsize: is the main parameter that TeX uses when typesetting: whenever it finishes a paragraph it looks at the current value of \hsize for breaking it into horizontal boxes. 


LaTex은 많은 간접적인 방법으로 width를 관리 한다.

\textwidth: text의 영역의 global을 말한다. 

\columnwidth는 컬럼의 width를 말한다. 즉 두개 이상의 컬럼이 존재 할때, textwidth와의 차이가 발생 한다.


\linewidth: List 환경에서의 라인의 길이를 포함하는 것이다. 

즉, list를 만들때 사용하는 것이 적합하다. 리스트를 만들때는 컴파일 타임에는 그 길이를 알 수 없기 때문에 textwidth 또는 columnwidth는 사용 할 수 없다. 


height = 0.1\textheight: 높이를 설정한다.


\includegraphics[height = 0.1\textheight, width=0.5\columnwidth, keepaspectratio=true]

keepaspectratio=false로 설정하면 자동 비율 설정을 막을 수 있다.



Click



크기 조절 방법

\includegraphics[height = 0.1\textheight, width=0.5\columnwidth, keepaspectratio=true]




LaTex에 표 만들기



\begin{table}[t]

\centering

\begin{tabular}{|c|l|}

\hline Rank (Fraction) & Exception \\

\hline 

\hline 1 (51.2\%) 21 & 1 \\

\hline 2 (14.6\%) 21 & 2 \\  

\hline 3 (12.2\%) 21 & 3 \\  

\hline 4 (9.8\%) 21 & 4 \\  

\hline 5 (2.4\%) 21 & 5 \\  

\hline 5 (2.4\%) 21 & 6 \\

\hline 5 (2.4\%) 21 & 7 \\

\hline 5 (2.4\%) 21 & 8 \\

\hline 5 (2.4\%) 21 & 9 \\    

\hline 

\end{tabular}

\caption{Table captions should be placed below the table.}

\label{tab:table1} 

\end{table}


{|c|l|} -> c는 가운데 정렬, l은 왼쪽 정렬, |의 의미는 vertical의 선 여부를 의미함.

& -> column 을 의미한다.

\\ -> row를 의미한다.

\hline은 아래쪽 선을 의미한다.


\documentclass[a4paper]{article}
\pagestyle{empty}
\begin{document}
\begin{table}[h]
{\renewcommand\arraystretch{1.25}
\begin{tabular}{|l|l|l|} \hline
Use Case Navn:& \multicolumn{2}{l|}{Opret Server} \\ \hline\hline
Scenarie:& \multicolumn{2}{p{4cm}|}{\raggedright At oprette en server med bestemte regler som tillader folk at spille sammen. More Text more text More Text} \\ \hline
\end{tabular}}
\end{table} 

\end{document}






Latex Image표


\begin{table}[t]

\centering

\caption{Chunk Data Structure.}

\includegraphics[width=1\columnwidth]{Figures/TCE/table1}

\label{ch02:table1}

\end{table}






캡션 (Caption) 조작하는 방법


caption package를 이용해서 표와 그림 등등에 있는 label들을 조작할 수 있다.


\usepackage[hoptionsi]{caption} %전체에 적용하는 방법

\captionsetup[hfloat typei]{hoptionsi} % 각각에 적용하는 방법, 즉 \caption전에만 위치 시키면 된다.


Figure -> Fig. 로 변경
\captionsetup{name=Fig.}

굵은 글씨로하고
Figure: -> Figure. 으로 변경
\usepackage[labelfont=bf, labelsep=period]{caption}



수식 표현 방법



The well known Pythagorean theorem \(x^2 + y^2 = z^2\) was 

proved to be invalid for other exponents. 

Meaning the next equation has no integer solutions:

 

\[ x^n + y^n = z^n \]



The mass-energy equivalence is described by the famous equation

 

$$E=mc^2$$

discovered in 1905 by Albert Einstein. 

In natural units ($c$ = 1), the formula expresses the identity


\begin{equation}

E=m

\end{equation}







알고리즘 표현 하기


수학이나 물리쪽에서는 수식을 표현하기 위해서 LaTex을 사용하지만,

Computer Science에서는 Algorithm을 표현하는 것이 중요하다.


LaTex에서 알고리즘을 표현하기 위해서는 다양한 package가 있다. 

필자는 algorithm2e.sty을 사용 한다.


\begin{document} 코멘트 이전에 아래의 코드를 이용해서 pacakge를 include 한다.

\usepackage[options]{algorithm2e} 


사용가능한 유용한 option


Lines numbers

linesnumbered: lines of the algorithms are numbered except for comments and input/output (KwInput and KwInOut). You must use \nllabel{label} to label those lines.


ruled: to have algorithms with a line at the top and the bottom. Note that the caption is not centered under the algorithm anymore but is set at the beginning of the algorithm.


반복문 사이에 라인을 넣는 옵션들

lined: 일자 라인

vlined: L 자 라인을 말함

noline: 아무것도 없다.



How to adjust line numbers of algorithm2e package

참고사이트: click


즉, 줄번호가 사가형 밖으로 나왔을 경우에 조절하는 방법이다.

통상 발생하지 않으나, 논문 작성 폼에 따라 문제가 간혹 발생한다. 이럴때 수작업으로 조절이 가능 하다.



해결 방법:

\IncMargin{1.5em}

\begin{algorithm}

/* 알고리즘 본문 */

\end{algorithm}

\DecMargin{1.5em}




아래와 같이 하면 특정 코드는 들여쓰기를 막을 수 있다.

\Indm  

\KwIn{List $L$ of n activities }

\KwOut{List $G$ of no sequence activities}

\Indp





문자열 크기


Command             10pt    11pt    12pt

\tiny               5       6       6

\scriptsize         7       8       8

\footnotesize       8       9       10

\small              9       10      10.95

\normalsize         10      10.95   12

\large              12      12      14.4

\Large              14.4    14.4    17.28

\LARGE              17.28   17.28   20.74

\huge               20.74   20.74   24.88

\Huge               24.88   24.88   24.88




줄간격


\linespread{value}


1.0 single spacing

1.3 one and a half spacing

1.6 double spacing 





줄 번호 삽입 (리뷰용)


https://texblog.org/2012/02/08/adding-line-numbers-to-documents/ 


\usepackage[pagewise,modulo]{lineno}


시작하려는 위치에서: \linenumbers


유용한 옵션들

  • [left]: Line numbers in left margin (default)
  • [right]: Line numbers in right margin
  • [switch]: Line number in outer margin (left for even, right for odd pages)
  • [switch*]: Line numbers in inner margin
  • [pagewise]: Restart numbering on every page
  • [running]: Continuously number lines (default)
  • [modulo]: Print only multiples of five
  • [displaymath, mathlines]: Line numbers for math environments (both needed)



algorithm2e 사용이 문제될 경우 (예: IEEE Access에서 linenumber 문제 발생)

algorithm2e 처럼 loop 범위에 line을 삽입하기 위해서 아래와 같이 custom definition을 넣어 준다.


% two packages are used

\usepackage{algorithm}

\usepackage{algpseudocode}


%custom command 

\makeatletter

% This is the vertical rule that is inserted

\def\therule{\makebox[\algorithmicindent][l]{\hspace*{.5em}\vrule height .75\baselineskip depth .25\baselineskip}}%


\newtoks\therules% Contains rules

\therules={}% Start with empty token list

\def\appendto#1#2{\expandafter#1\expandafter{\the#1#2}}% Append to token list

\def\gobblefirst#1{% Remove (first) from token list

  #1\expandafter\expandafter\expandafter{\expandafter\@gobble\the#1}}%

\def\LState{\State\unskip\the\therules}% New line-state

\def\pushindent{\appendto\therules\therule}%

\def\popindent{\gobblefirst\therules}%

\def\printindent{\unskip\the\therules}%

\def\printandpush{\printindent\pushindent}%

\def\popandprint{\popindent\printindent}%


%      ***      DECLARED LOOPS      ***

% (from algpseudocode.sty)

\algdef{SE}[WHILE]{While}{EndWhile}[1]

  {\printandpush\algorithmicwhile\ #1\ \algorithmicdo}

  {\popandprint\algorithmicend\ \algorithmicwhile}%

\algdef{SE}[FOR]{For}{EndFor}[1]

  {\printandpush\algorithmicfor\ #1\ \algorithmicdo}

  {\popandprint\algorithmicend\ \algorithmicfor}%

\algdef{S}[FOR]{ForAll}[1]

  {\printindent\algorithmicforall\ #1\ \algorithmicdo}%

\algdef{SE}[LOOP]{Loop}{EndLoop}

  {\printandpush\algorithmicloop}

  {\popandprint\algorithmicend\ \algorithmicloop}%

\algdef{SE}[REPEAT]{Repeat}{Until}

  {\printandpush\algorithmicrepeat}[1]

  {\popandprint\algorithmicuntil\ #1}%

\algdef{SE}[IF]{If}{EndIf}[1]

  {\printandpush\algorithmicif\ #1\ \algorithmicthen}

  {\popandprint\algorithmicend\ \algorithmicif}%

\algdef{C}[IF]{IF}{ElsIf}[1]

  {\popandprint\pushindent\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}%

\algdef{Ce}[ELSE]{IF}{Else}{EndIf}

  {\popandprint\pushindent\algorithmicelse}%

\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}[2]

   {\printandpush\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%

   {\popandprint\algorithmicend\ \algorithmicprocedure}%

\algdef{SE}[FUNCTION]{Function}{EndFunction}[2]

   {\printandpush\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%

   {\popandprint\algorithmicend\ \algorithmicfunction}%

\makeatother



% algorithm 


\begin{algorithm}

  \caption{Euclid’s algorithm}\label{euclid}

  \begin{algorithmic}[1]

    \Procedure{Euclid}{$a,b$}\Comment{The g.c.d.\ of a and b}

      \LState $r\gets a\bmod b$

      \While{$r\not=0$}\Comment{We have the answer if r is 0}

        \LState $a\gets b$

        \LState $b\gets r$

        \LState $r\gets a\bmod b$

      \EndWhile\label{euclidendwhile}

      \LState \Return $b$\Comment{The gcd is b}

    \EndProcedure

  \end{algorithmic}

\end{algorithm}





참고문헌 넣기


참고문헌을 만드는 방법은 크게 두가지로 수동, 자동이 있다.


□ 수동의 경우

LaTeX에서thebibliography 환경을 이용하는 것으로  \bibitem[label]{marker}를 매번 타이핑 해주는 방식이다.



□ 자동의경우

Texmaker (LaTex Editor)


myBib.bib 만들기

File -> new File -> save as -> [파일이름].bib


[파일 이름].bib 내용 채우기

Texmaker를 이용한 직접 채우기: Bibliography -> Bibtex -> 적당한 형식 고르기.

Google scholar 에서 직접 다운

EndNote에서 File -> Export -> output Style -> Select another output style -> BibTex 


본문 인용 방법

\bibliographystyle{acm-sigchi}

\bibliography{myBib}

\end{document}


acm-sigchi.bst 는 학회에서 제공하는 output style 이다. .bst 확장자를 가진다.
myBib.bib 는 BibTex 이다.

본문에서 bracket으로 인용되는 것은 아래와 같이 하면 된다.
~\cite{acrobat}

컴파일 방법본문 인용 방법

아래와 같이 하지 않으면 [?] 상태로 나타내게 되며, Reference 항목에 업데이트가 되지 않는다.


1) pdfLatex

일단 문서를 한번 컴파일 한다.

이렇게 해야 aux 파일이 생성 된다.

2) BibTex

BibTex을 한번 컴파일 해준다 현재 문서에서 

그러면 aux 파일을 읽어서 해당 문서에서 사용한 citation들을 찾아서 bibTex과 연관을 지어 준다.

3) PdfLaTex

   Latex 문서내의 모든 citation을 정확히 반영 한다.

4) PdfLaTex

   reference List에 내용을 반영 한다.

5) 결과 확인


이것을 Quick Build를 수정해서 [F1] 키만 누르면 자동으로 할 수 있게 한다.




참고자료

Bibliography in Texmaker 

Bibliography menu of TeXmaker

Step-by-step guide to using EndNote with LaTeX and BibTeX

BibTex in Latex with WinEdt (한글)

LaTeX 문서와 참고문헌 인용




□ 참고 문헌 인용시 package의 역할


그냥 인용을 해도 되지만, package를 이용하면 편리한 기능을 자동으로 수행해 준다.


number-only . . . as shown in [34] . . . \usepackage{cite

author-date . . . as shown in (Maier 2003) . . . \usepackage{natbib

short-title as shown in Maier, Final Theory . . . \usepackage{jurabib


\usepackage[...]{cite


Before

Tex: see \cite{wbl1, book3, meier3}

Result: see [2,1,3] 

-> 순서가 자동 정렬 되지 않는다.


After

see [1-3]

 

Options

space, nospace: default는 space가 있는것

nocompress: [1-4]

nosort: switch off sorting of entries

nobreak: default: strongly discouraged, but not forbidden

superscript: 인용이 윗 첨자로 들어가는 형태 see^1-3


다른 package들은 Computer science에서 일반적이지 않으므로 생략




What is the best Tex editor for LaTex



TexEditor 선호도 투표

웹기반 Tex Editor

http://www.sharelatex.com

http://www.scribtex.com

http://docs.latexlab.org (works with Google Drive)



설치형 Editor

Texmaker

멀티 윈도우를 지원 한다.


TexStudio

문법 체크를 지원 한다.


WinEdt: 과거에는 많이 썻지만 요즘은 사용하지 않는다. (상업용이다.)

하지만, http://www.sumatrapdfreader.org/free-pdf-reader.html

즉, sumatra PDF와 연동하면, Real-time으로 PDF 변화를 알 수 있다.

LaTex은 자유 소프트웨어이다. 그런대 Editor는 상업용을 쓴다는게 말이 안된다. 따라서 많은 오픈 프로젝트들이

활성화 되었다 WinEdt에 대항하기 위해서


TexnicCenter : 안좋음

http://www.lyx.org/ : 초보자용



여기서 어떤 Editor가 가장 많이 사용 되는지 투표하고 있다.

그 결과 TexStudio인것 같다. 무료이고, 기능도 막강하여 가장 많은 사람들이 사용 하는것 같다.

http://www.researchgate.net/post/What_is_the_best_TeX_editor_for_LaTeX1



Texmaker 단축키 모음집

click



TexStudio

단축키

F7: 현재 작업하고 있는 영역을 보여 준다.



너무 많은 TexEditor가 있어서 그것을 비교하는, Wikipedia도 있다.

http://en.wikipedia.org/wiki/Comparison_of_TeX_editors


또한, tex.stackexchange에서 엄청나게 비교를 했다.

http://tex.stackexchange.com/questions/339/latex-editors-ides





LaTex 소소한 Tip



Why should I put a ~ before \ref or \cite?

~는 단순한 공백처리가 아니다. 

Table~\ref{mytable}과 같은 형식으로 할경우 두 단어는 하나로 묶어준다. breaking 되는것을 막아준다.

그리고 가독성을 향상 시키는 효과를 가져온다. 


참고자료

click



두 단에 걸치는 그림, 표, 수식


Figure나 table 같은 floating object들은 별표붙인 환경으로 두 단에 걸칠 수 있다.

특정 자리에 멈추게 하고 샆다면. !h를 사용하라


예제코드

\begin{figure*}

~~

\end{figure*}





TexStudio에 Git 연결하기


아직 지원하지 않음

커멘드를 수정 해야할것 같다.








Troubleshooting 


문제: 컴파일시 Misplaced alignment tab character & 발생


해결방법


BibTex에 &의 사용이 있었다. 일단 이것을 제거한다음

.bbl 파일을 제거 했다. 

그다음 다시 컴파일 하니 성공









'논문 작성 > LaTex' 카테고리의 다른 글

Latex 줄 번호 삽입  (0) 2016.12.23
TextStudio 문법 검사 기능 사용  (0) 2016.06.29
TexLive 2016 설치법  (0) 2016.06.15
Latex 에 하이퍼링크 추가방법  (0) 2016.05.30
citation 번호 합치기  (0) 2016.04.22

+ Recent posts