\(\LaTeX\) 들어가며

Author
Affiliation

1 \(\LaTeX\) 구조

\(\LaTeX\) 프로젝트 구조는 다음과 같다.

2 PDF 파일 1

PDF는 이동 가능 문서형식으로 번역되며 Portable Document Format의 약자기도 하지만 파일명이기도 하다. PDF 파일에는 일반 문서 및 문자, 도형, 그림, 글꼴이 포함된다. 아도브(Adobe)에서 1993년에 개발한 전자 문서 형식이자 국제 표준(ISO) 문서 형식(ISO 19005)으로 어느 환경에서나 동일한 결과물을 보여주기 위해 개발되어 사실상 문서를 주고 받을 때 사용하는 표준으로 자리잡았다. 좀더 쉽게 PDF는 컴퓨터 환경에 관계없이 같은 표현을 하기 위한 목적으로 개발되었고, 장치 독립성 및 해상도 독립성을 가진다라고 이해할 수 있다. pdf는 어디까지나 출력해서 얻는 ’인쇄물’이라 이를 편집하기 위해서는 전용 소프트웨어가 따로 필요하다. 윈도우에서는 PDF Writer Distiller, 리눅스에서는 PDF Studio가 대표적이다.

.pdf가 사실상의 표준이 되기 이전 팩스기에서 나온 TIFF 파일, 아도브 자사 포스트스크립트(.ps), AT&T 연구소에서 도서관의 도서나 각종 문서보관을 위햇 개발된 DuVu 프로젝트에서 나온 .djv, .djvu 등이 있었지만 결국 .pdf 파일로 정리되었다.

3 팩키지 관리자 2

\(\TeX\) 엔진을 보좌하는 다양한 팩키지가 존재한다. \(\LaTeX\) 저작을 할 때 당연히 기본 \(\LaTeX\) 기능외에도 제3자가 개발한 팩키지를 활용하여 \(\LaTeX\) 저작물을 더욱 읽기 쉽고 가독성 높게 작성할 수 있다.

\(\LaTeX\)에서 많이 사용되는 팩키지 관리자는 \(\TeX\) 라이브 매니저 즉, tlmgr 이다. 텍라이브 팩키지 관리자는 운영체제와 독립적으로 이용되며 팩키지와 폰트 꾸러미를 설치 삭제하는데 큰 도움을 준다. 리눅스 package manager 나 R CRAN 혹은 파이썬 PIP 혹은 GitHub 저장소를 통해 동일한 개념을 활용하여 생태계 각각을 풍성하게 하고 영향력을 높여나가고 있다.

한글 폰트 설치 사례를 들어, 과거 폰트꾸러미를 설치하는 것과 팩키지 관리자 사용하는 것을 비교해보자.

고수의 영역 팩키지 관리자: tlmgr
  1. 폰트 꾸러미 설치
  2. updmap.cfg 에 해당 map 파일 기록
  3. udpmap-sys 실행
  1. tlmgr install nanumttf

3.1 tlmgr 팩키지 관리자

tlmgr info geometry 명령어를 통해서 이미 설치된 \(\LaTeX\) geometry 팩키지에 대한 정보를 확인할 수 있다.

$ tlmgr info geometry

package:     geometry
category:    Package
shortdesc:   Flexible and complete interface to document dimensions
longdesc:    The package provides an easy and flexible user interface to customize page layout, implementing auto-centering and auto-balancing mechanisms so that the users have only to give the least description for the page layout. For example, if you want to set each margin 2cm without header space, what you need is just \usepackage[margin=2cm,nohead]{geometry}. The package knows about all the standard paper sizes, so that the user need not know what the nominal 'real' dimensions of the paper are, just its standard name (such as a4, letter, etc.). An important feature is the package's ability to communicate the paper size it's set up to the output (whether via DVI \specials or via direct interaction with pdf(La)TeX).
installed:   Yes
revision:    54080
sizes:       src: 325k, doc: 921k, run: 45k
relocatable: No
cat-version: 5.9
cat-license: lppl1.3c
cat-topics:  geometry
cat-related: vmargin typearea geometry-de
cat-contact-bugs: https://github.com/davidcarlisle/geometry/issues
cat-contact-repository: https://github.com/davidcarlisle/geometry
collection:  collection-latex

이외에도 tlmgr 다양한 명령어를 통해 다양한 팩키지 관련 작업을 수행할 수 있다. 자세한 내용은 Basic Usage of tlmgr, the TEX Live Manager 을 참조한다. 기본 사용법은 쉘에서 다음 방식을 사용한다. 즉, 팩키지에 대한 정보를 확인하고 팩키지를 검색하고 팩키지를 설치하고 시간이 지나 최신 팩키지를 갱신하고 팩키지를 삭제하는 작업 등이 포함된다.

tlmgr [global options ] action [action-specific options] [operands]

  • info
  • search
  • install
  • update
  • remove
  • option
  • path
Code
knitr::include_graphics("data/tlmgr.pdf")

3.2 한글 사설 저장소

tex live를 설치하게 되면 기본 주 저장소로 http://mirror.ctan.org/systems/texlive/tlnet 이 설정된다. 하지만 모든 팩키지가 기본 저장소에 등록된 것이 아니라서 한글의 경우 사설 저장소를 등록해서 필요한 팩키지를 설치해야 저작물 작성에 활용할 수 있다.

$ tlmgr repository list
List of repositories (with tags if set):
        http://mirror.ctan.org/systems/texlive/tlnet (main)

한글 lipsum 을 위해서 lipsum 팩키지 설치를 해야 되는 경우가 대표적인 사례다.

jiwonlipsum 팩키지는 KTUG Private Repository에 저장되어 있어 이를 설치한 후 한글 lipsum을 사용할 수 있다. jiwonlipsum 팩키지를 저장된 KTUG Private Repository 저장소 안내글을 참고하여 설치한다. 사설 저장소를 등록시키고 사설 저장소에 등록된 팩키지를 사용하는 작업흐름은 대략 다음과 같다.

  1. 사설 저장소를 등록한다.
    • $ <sudo> tlmgr repository add http://ftp.ktug.org/KTUG/texlive/tlnet/ ktug
  2. 사설 저장소 등록이 완료되면 tex live 팩키지 관리자가 신규 저장소를 파악해야 되는데 이 과정을 pinning이라고 한다.
    • $ <sudo> tlmgr pinning add ktug "*"
  3. 사설 저장소에 등록된 예를 들어 jiwonlipsum 등 필요한 팩키지를 설치한다.
    • $ <sudo> tlmgr install jiwonlipsum
  4. 시간이 오래 지난 후에, 저장소 등록 팩키지 업데이트 명령어는 다음과 같다.
    • $ <sudo> tlmgr update --all --self

3.3 팩키지 꿀팁

tex live를 용량이나 네트워크 등 다양한 이유로 인해서 전체 설치하지 않고 일부만 설치할 경우 특정 팩키지가 빠져 컴파일 과정에서 오류가 발생되는 경우가 종종 발생된다. 이런 문제는 다음과 같은 방식으로 문제를 해결한다.

xy.sty 파일이 정상적으로 설치된 경우 다음과 같이 확인되지만 없는 경우 package xy not present in repoistory와 같은 오류가 발생된다.

$ tlmgr search --global --file xy.sty

tlmgr: package repositories
    main = http://mirror.ctan.org/systems/texlive/tlnet (not verified: gpg unavailable)
    ktug = http://ftp.ktug.org/KTUG/texlive/tlnet/ (not verified: gpg unavailable)
For more about verification, see https://texlive.info/verification.html.
lwarp:
    texmf-dist/tex/latex/lwarp/lwarp-xy.sty
pb-diagram:
    texmf-dist/tex/latex/pb-diagram/pb-xy.sty
xypic:
    texmf-dist/tex/generic/xypic/xy.sty

이를 고치는 방식은 xypic 팩키지에 xy.sty 파일이 있는 것이 확인되기 때문에 xypic 팩키지를 설치한다.

$ tlmgr install xypic

kpsewhich xy.sty 명령어로 설치된 위치를 확인할 수 있다.

$ kpsewhich xy.sty
/usr/local/texlive/2020/texmf-dist/tex/generic/xypic/xy.sty

4 PDF 파일크기 3

4.1 distiller

파워포인트 파일 크기가 370 메가바이트로매우 크지만 이를 “다른 이름 저장”을 통해 PDF로 변환시키게 되면 크기를 다소 줄일 수 있지만, PDF Writer distiller로 변환시킬 경우 크기를 획기적으로 줄일 수 있다.

레이저 프린터로 고화질 출력을 할 경우 포스트스크립트(Postscript)를 사용해서 레이저 프린터로 출력할 수 있다. 이를 다시 PDF Writer Distiller를 사용해서 PDF 파일을 제작할 수 있고 현재는 기술이 많이 발달해서 워드, 아래한글 등 다양한 문서 저작 편집기를 사용해서 바로 PDF 파일을 제작할 수 있다.

4.2 pdfsizeopt

또다른 방식으로 pdfsizeopt는 시각적 품질을 저하시키거나 대화형 기능(예: 하이퍼링크)을 제거하지 않고 대용량 PDF 파일을 작은 파일로 변환하는 프로그램이다. pdfsizeopt는 Linux, Windows, macOS, Unix 환경에서 동작하고, TeXLaTeX 문서에서 생성된 PDF를 중심으로 PDF 파일 크기를 최적화하는 모범 사례를 모아둔 패키지다. pdfsizeopt는 Python으로 작성되어 속도가 약간 느리지만, 무거운 작업의 일부를 더 빠른 종속성(C, C++ 및 Java)으로 구현했다.

4.3 tools

R tools 패키지 compactPDF() 명령어로 PDF 파일 크기를 줄일 수 있다.

Code
tools::compactPDF()

4.4 Adobe 웹사이트

Adobe Acrobat Compress PDF size 웹사이트에 PDF를 끌어다 놓아 PDF 압축기로 파일 크기를 줄이는 것도 가능하다.

5 종이 크기 4

종이 크기(Standard Paper Size)는 수많은 표준이 있으며 나라와 시기에 따라 다르다. 오늘날 쓰이는 크기에는 대한민국에서 활용하는 국제 표준인 ISO A형(A4 등 A 계열)과 북아메리카(North American) 미국 종이 크기가 있다. 국제 종이 크기 표준은 ISO 216이며 이를 따라 제작한 종이를 흔히 ISO A형이라고도 한다. A형 전지는 A0로 표기하며 이를 접어서 절단할 때마다 숫자를 늘린다. A1은 한번 접어서 자른 크기이며, 흔히 사용하는 A4는 A0를 네 번 접어서 자른 종이 크기이다. 가장 많이 사용되고 있는 A4는 가로 x 세로 \(210 mm \times 297 mm\) 크기를 갖는다.

5.1 레이아웃 팩키지 5

geometry가 문서 레이아웃을 자유로이 지정하는 대표적인 팩키지다. 이외에도 국내에서 많이 사용되는 memoir, oblivoir 팩키지를 사용할 수 있다.

  • geometry 팩키지: 판형과 판면을 설정하는 대표적인 팩키지. showcropshowframe 옵션을 주어 재단선을 그려준다.
  • memoir, oblivoir 클래스: 클래스 옵션으로 showtrmis를 주고 \trimLmarks, \trimXmarks, \trimFrame 명령을 줄 수 있고 QuarkXpress에서 작업한 것과 비슷한 모양으로 그려주는 \quarkmarks 명령도 제공.
  • crop 팩키지: \crop 명령과 cam, cross, frame, axes, noaxes 옵션 설정 가능.

documentclass 선택사양을 지정하면 문서를 원하는 방향으로 작성할 수 있다. class_name에 지정할 수 있는 것은 book, article, report, letter 등이 대표적이다.

  • \documentclass[option1, option2, etc.]{class_name}
    • Font size (10pt, 11pt, 12pt)
    • Paper size and format (a4paper, letterpaper, etc.)
    • Draft mode (draft)
    • Multiple columns (onecolumn, twocolumn)
    • Formula-specific options (fleqn and leqno)
    • Landscape print mode (landscape)
    • Single- and double-sided documents (oneside, twoside)
    • Titlepage behavior (notitlepage, titlepage)
    • Chapter opening page (openright, openany)

article, report, book

10 ~ 12pt 만 가능.

extrarticle, extreport, extbook

글꼴 크기를 8 ~ 12pt, 14pt, 17pt, 20pt 범위에서 나름 자유롭게 선택가능.

Code
\documentclass[a4paper]{article}
\usepackage{kotex}
\usepackage{jiwonlipsum}
\usepackage{layout}

\usepackage[showframe]{geometry}
\geometry{
    a4paper, 
    landscape, 
    left=50mm,
    top=30mm,
    showcrop}

\begin{document}
    \layout
    \tiny
    \jiwon[1-2]
\end{document}

Code
knitr::include_graphics("lipsum/layout/layout-geometry.pdf")

6 한글과 \(\TeX\) 연습문제

한국과학기술원 산업수학연구실 고기형 지음(1995), “한글 LATEX의 모든 것—한글과 TEX”의 목차와 연습문제를 보게 되면 \(\LaTeX\) 기본기를 익히는데 큰 도움이 될 듯 싶다.

Code
knitr::include_graphics("data/hangul-latex-exercises.pdf")