Markdown으로 작성한 문서를 PDF로 변환하기

Markdown문법은 꽤나 편리한 인터페이스를 제공하고 있다고 생각한다. 무엇보다 간단한 문법으로 미려한 문서를 만들 수 있을 뿐 아니라 필요에 따라 여러 기법을 사용할 수 있는 장점을 제공하기 때문이다.

하지만 몇가지 단점중에 하나는 이런 문서를 PDF로 만들기가 꽤나 번거롭다는 것이다. 물론 웹 브라우저를 이용해 PDF로 출력하는게 가능하지만 레이아웃을 HTML을 기반으로부터 변환이 되기 때문에 그다지 좋지 않은 결과물이 나오게 된다.

이런 단점을 보완하는 중요한 툴이 Pandoc이다. 이 툴은 Markdown으로 만들어진 문서를 어떠한 포맷의 문서로든지 변환을 해주는 굉장한 기능을 제공하고 있고, 최근에 knitr와 통합이 되어 편리하게 사용이 가능하다.

문제는 Markdown으로 만들어진 문서를 pdf로 생성하는 것인데, 이를 위해 Latex환경을 갖출 필요가 있다는 것이다. 이 부분에 대해서는 R 시스템에 Latex와 knitr를 통합해 환경을 구성하는 필자의 문서를 참고하기 바란다.

이렇게 준비가 되면 Pandoc 설치문서를 참고해 각 운영체제에 맞게 설정을 해주고 사용은 knitr의 명령어 두가지를 이용해 간단히 만들어 내면 된다.

가장 먼저 아래와 같은 내용의 baysian.op파일을 Markdown파일이 생성될 디렉토리에 함께 넣어준다. 이 파일은 Latex의 헤더에 들어갈 내용이다. 물론 다른 옵션이나 패키지 설정도 해주면 된다.

\usepackage[utf8]{inputenc}
\usepackage[cjk,hangul]{kotex}

그리고 inputs변수와 같은 R Markdown파일을 만들어 준다.

library(knitr)

inputs <- "
<!--pandoc

t: latex
latex-engine: pdflatex
include-in-header: baysian.op
s:

-->

#### 베이지언 룰 

* $p(\\theta|y) =\\dfrac{p(y|\\theta)\\pi(\\theta)}{p(y)}$
  * $p(y)=\\sum\\limits_{i=1}^n p(y|\\theta=i)\\pi(\\theta=i)$

##### 설명 
1. 베이지언 룰은 250년동안 몰래 사용되어 왔다.
"

#R markdown 파일을 markdown파일로 만든다.
knit(text=inputs, output='out.md')
## 
  |                                                                       
  |                                                                 |   0%
  |                                                                       
  |.................................................................| 100%
##   ordinary text without R code
## [1] "out.md"
#pandoc을 이용해 markdown파일을 pdf로 만든다. 
pandoc(input="out.md",format='latex')
## [1] "out.pdf"

이렇게 생성된 문서의 결과는 여기서 확인할 수 있다.

이럴바에야 아래한글이나 MS워드를 쓰는게 낫지 않겠느냐 하겠으나, 필자는 개인적으로 바이너리 포맷의 문서 파일을 좋아하지 않는다. 이유는 모두 나열할 수 없을 정도로 많지만 그중 가장 큰 이유는 문서 이력을 관리하기 힘들다는 것이다. 바이너리 포맷으로는 언제 몇시에 글의 어느 부분을 수정하고 보완했다는 흔적을 남기기가 쉽지 않다는 것이다.

CC BY-NC 4.0 Markdown으로 작성한 문서를 PDF로 변환하기 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.