LaTeX
출판물에는 [math]\displaystyle{ \LaTeX }[/math]라고 써야 정확하다. 라텍, 또는 레이텍이라고 읽는 것이 보통. 음성기호로는 /ˈlɑːtɛk/ 또는 /ˈleɪtɛk/.
TeX을 기반으로 컴퓨터과학자 레슬리 램포트(Leslie Lamport)가 만든 조판 프로그램이자 문서 마크업 언어. TeX이 워낙에 극악의 난이도를 자랑하디 보니 좀 쉽게 쓸 수 있도록 만든 것이다. 그 덕택에 난이도는 극악에서 차악으로. TeX을 만든 도널드 커누스 교수도 "알고리즘 분석의 아버지"라는 별명을 가질 정도로 컴퓨터과학계에서는 전설은 아니고 레전드급이지만 레슬리 램포트도 '분산 컴퓨팅'의 아버지라는 말을 들을 정도로 출중한 컴퓨터과학자다. 커누스는 1974년, 램포트는 2013년에 컴퓨터과학계의 최고 영예로 손꼽히는 앨런튜링상을 받았다. 그런 천재들이 만들었으니 괴랄하게 어렵지. 지금은 레슬리 램포트는 손을 떼고 팀 체제로 개발을 진행하고 있다. 최신 버전은 LaTeX2ε.[1] LaTeX과 비교해서 커누스 교수가 만든 원래의 TeX은 플레인텍(Plain TeX)이라고 종종 부른다. 장기 프로젝트로 진행되고 있는 LaTeX3도 있지만 LaTeX2ε을 완전히 대체하기보다는 병행될 것으로 보인다. 일단 문법 자체가 거의 안드로메다급이라서.
TeX을 쓰는 사람들 가운데 대다수는 LaTeX을 쓰고 있다. 가끔 라텍보다 플레인텍이 더 쉽다고 말하는 사람들이 있는데 이런 사람하고는 상종도 하지 말자. 외계인일 가능성이 크다. 이후 ConTeXt와 같이 나름대로 LaTeX과는 다른 개념 또는 LaTeX보다 좀 더 진보된 기능을 제시하기 위한 TeX 기반 문서 마크업 언어들이 여럿 나왔지만 워낙에 사용자가 광범위하고 많은 패키지 및 스타일 파일이 나와 있는지라 LaTeX의 아성을 깨고 있지는 못하다. 앞으로도 깨질 일은 없을 듯. 그러나 LaTeX3 팀이 만들고 있는 그 괴랄한 명령어 체제를 생각한다면 윈도우 비스타나 윈도우 8 꼴이 날 지도.
많은 이공계 학회, 특히 수학 관련 학회는 TeX, 그 가운데 대개 LaTeX으로 쓴 논문만 받는다. 특히 미국수학회(AMS)가 여러 가지 수학 관련 기호를 보강한 AMS-TeX은 수학계에서는 표준이나 마찬가지다. 최근에는 MS워드로 만든 것도 받긴 하지만 LaTeX을 더 선호하는 이공계 학회가 많은데, MS워드로 받다 보면 저자들마다 해 놓은 게 제각각이라서 하나의 저널에 맞추기도 힘들고, 특히 수식이 많이 섞여 있으면 정렬이나 번호 매기기, 색인을 비롯한 여러 가지 부분에서 애로사항이 꽃핀다. LaTeX은 규칙이 어느 정도 딱 정해져 있으므로 외계인급 천재가 클래스 파일만 하나 제대로 만들어 놓으면 손이 덜 간다. LaTeX을 쓰면 저자가 죽어나고 MS워드를 쓰면 편집자가 죽어난다. 여러 대학교들도 자기 학교의 논문 형식에 맞춘 LaTeX 클래스 또는 패키지를 제공하는 곳이 많다. 대학교수들 중에도 직접 LaTeX을 써서 교재나 저서를 써는 저자들이 꽤 있고, 해외에서도 이공계 교과서로 쓰이는 책들 중에 LaTeX으로 편집된 것들이 적지 않다.
아래아한글이나 MS워드의 기능이 강화되면서 수식 편집 기능도 발전해 왔기때문에 특히 수식에 강점이 있었던 TeX 또는 LaTeX의 강점도 조금은 퇴색되었다. 요즘은 웬만한 워드프로세서도 수식 편집 기능을 제공하고 있고, GUI 기반 인터페이스와 TeX에서 따온 명령 기반 인터페이스를 동시에 제공하고 있기도 하지만 처음에는 진입 장벽이 낮아서 편하다고 생각하다가도 본격적으로 수식을 많이 쓰는 문서를 작성할 때에는 상당한 불편함을 느끼게 된다. 그때문에 수학계에서는 여전히 논문을 작성할 때 TeX의 위력이 압도적이고, 앤드류 와일즈 교수가 쓴 페르마의 마지막 정리 증명 논문, 그레고리 페렐만이 쓴 푸엥카레 추측 증명 논문을 비롯해서 20세기 후반과 21세기 초에 걸쳐서 수학계를 뒤흔든 논문들은 100%라고 해도 좋을 만큼 LaTeX, 정확히는 AMS-LaTeX으로 작성되었다. 일단 미국수학회부터가 AMS-TeX이나 AMS-LaTeX이 아니면 안 받기 때문에...
특징
구조적 문서
구조적인 글쓰기를 할 때에는 최강이다. LaTeX이 제공하는 명령어들이 구조적인 글쓰기를 유도하기 때문에, LaTeX을 애용하다 보면 자연스럽게 구조가 잘 짜여진 글을 쓰고 싶어진다. 그렇게 쓰고는 싶은데 능력이 안 되면 어쩔 수 없고. 보통 많이 쓰이는 워드프로세서나 전자조판프로그램을 WYSIWYG(What You See Is What You Get, 지금 보고 있는 것이 당신의 결과물이다)이라고 하는데, TeX, 특히 LaTeX이 등장하면서 WYSIWYM(What You See Is What You Mean, 지금 보고 있는 것이 당신이 뜻하는 것이다)이란 말이 나왔다.
패키지
LaTeX을 강력하게 만들어 주는 기능이 바로 패키지다. 수천 수만 가지의 패키지로 온갖 확장기능을 쓸 수 있다. 기존 워드프로세서나 전자출판 프로그램으로는 초 고난이도의 작업이 필요한 것을 패키지로 허탈하게 간단하게 만들 수도 있다. MusicTeX으로는 품질이 뛰어난 악보를 조판할 수도 있고, TikZ로는 여러 가지 수학 그래프를 그릴 수 있다.[2] Beamer로는 프레젠테이션 슬라이드를 만들 수 있다.[3] 문제는 하도 패키지가 많다 보니 내가 원하는 기능을 제공하는 패키지가 무엇인지를 찾는 것도 일이라는 점이다. 열심히 검색해서 내가 필요한 패키지를 찾아야 한다.
자동화
LaTeX의 정말 좋은 기능 중에 하나가 귀찮고 까다로운 부분들을 자동화할 수 있다는 것이다. 워드프로세서나 다른 전자출판 프로그램도 이런 기능이 없는 건 아니지만 써보면 LaTeX이 훨씬 편리하다. 어디까지나 좀 쓸 줄 아는 사람들의 얘기로다. 여기에 속하는 게 목차 만들기, 찾아보기 만들기, 참고문헌 목록 만들기, 상호 참조와 같은 기능들이다. 워드프로세서는 복잡하게 메뉴를 왔다갔다 해야 하지만 LaTeX은 그냥 명렁어만 하나 붙여주면 된다. 유연성 면에서도 LaTeX이 뛰어나다. 이것도 어디까지나 좀... 정도가 아니라 잘 쓸 줄 아는 사람들의 얘기로다.
단, 이런 자동화를 위해서는 보통 같은 파일을 두 번 이상 컴파일 해야 한다. 한 번 컴파일할 때 정보를 긁어서 별도의 파일에 저장하고, 그 다음에 컴파일할 때 그 파일로부터 정보를 읽어와서 결과물에 반영하기 때문이다. 한 번만 컴파일을 하면 참조 페이지가 틀리거나 상호 참조가 이상하게 나오는데, 한 번 더 컴파일하면 바로 잡힌다. 이런 정보들이 갱신될 때에도 두 번 컴파일 해야 한다. ConTeXt는 알아서 필요한 만큼 재컴파일을 자동으로 해야 하지만 문제는 인기가 별로 없다는 것...
문서의 구조
LaTeX 문서는 최소한 다음과 같은 구조를 가지고 있어야 한다.
\documentclass{article} % 문서의 클래스를 설정하는 부분, article 말고도 report, book, memoir, beamer, 그밖에도 여러 클래스들이 있다.
% 여기에 각종 패키지와 옵션, 설정이 들어간다. 이곳을 서두(preamble)라고 한다.
\begin{document}
% 여기에 본문이 들어간다.
\end{document}
클래스
LaTeX은 문서 클래스를 결정하는 \documentclass[options]{class}
명령이 가장 앞에 나와야 한다. class 매개변수에 따라서 문서의 기본 모양이나 구조가 결정된다. 물론 나중에 명령어나 패키지로 바꿀 수는 있지만 일단 기본 골격을 잡고 시작하는 것이다. 기본으로 다음과 같은 네 가지 클래스가 제공된다.
- article : 짧은 글이나 보고서를 쓸 때 적합한 클래스. 제목 아래에 바로 본문이 시작된다.
- report : 좀 더 틀이 잡히고 길이가 긴 보고서에 적합한 클래스. 제목 다음에 페이지를 바꿔서 본문이 시작된다.
- letter: 편지를 위한 클래스.
- book : 책을 만들 때 쓰는 클래스. 기본 레아아웃이 양면 마주보기이고 머리글이나 바닥글을 비롯한 그밖의 레이아웃 요소도 여기에서 맞춰서 설정된다.
그밖에도 좀 더 편리한 기능을 제공하는 확장된 클래스도 있다.
- memoir : 기본 클래스보다 훨씬 많은 조절 기능과 확장 기능을 제공하는 클래스. 어지간한 문서는 이 클래스 하나면 만능에 가깝다.
그러니 당연히 매뉴얼이 두꺼워질 수밖에. - oblivoir : memoir를 기반으로 좀 더 쓰기 쉽게 만들고, 한글에 관련된 편리한 기능들을 추가시킨 클래스.
options 매개변수는 말 그대로 여러 가지 옵션을 설정할 수 있는 곳이다. 종이 크기, 글자의 기본 크기, 양면/단면 레이아웃과 같은 여러 가지 기본 레이아웃을 조절할 수 있다. 여러 개의 옵션을 쓸 때에는 쉼표(,)로 구분한다.
- 9pt, 10pt, 11pt, 12pt : 기본 글자 크기를 조절한다. 이 옵션에 따라 글자 크기 명령으로 바뀌는 글자 크기도 달라진다.
- oneside, twoside : 레아아웃을 단면으로 할지 양면 맞보기로 할지를 정한다. 양면으로 하면 좌우 여백이 바깥쪽과 안쪽 여백으로 바뀌고 기본 페이지 번호 매기는 것도 좌우 페이지에 맞게 좌우로 배치된다.
- a4apaper, letter... : 용지 크기를 정한다.
LaTeX에는 경이로운 용지 크기 옵션들이 있으나, 이 위키의 여백이 충분하지 않아 옮기지는 않는다.
서두
서두(preamble)는 문서 전역에 영향을 미치는 각종 설정을 한다. 패키지를 읽어들이고, 문서에 적용되는 자세한 레이아웃을 설정하고, 기본 글꼴을 바꾸기도 하고, 새로운 명령어 또는 환경을 만들거나 기존의 명령어/환경을 고칠 수도 있다. 이러한 명령 또는 설정 가운데에는 본문 안에서 해도 되는 것들이 많지만 본문에 섞기보다는 서두에 모아서 정리하는 것이 훨씬 관리하기 쉽다. 여기에 많이 오는 명령 몇 가지만 정리해 보자.
\usepackage[옵션]{패키지 이름}
: 기능 확장에 필요한 패키지를 읽어들인다.\newcommand[매개변수의 수]{명령의 정의}
: 나만의 명령를 새롭게 정의할 수 있다. 잘 활용하면 되풀이되는 작업을 간단하게 명령 하나로 해결할 수 있다.\renewcommand[매개변수의 수]{명령의 정의}
: 이미 존재하는 명령을 다시 정의한다\newenvironment[매개변수의 수]{환경의 정의}
: 나만의 환경을 새롭게 정의할 수 있다.\renewenvironment
명령도 있다.\title{제목}, \author{저자}, \date{날짜}
: 문서의 제목, 저자, 날짜를 정의한다. 본문에서\maketitle
명령을 쓰면 그 자리에 제목이 들어간다. 날짜를 정의하지 않으면 오늘 날짜가 자동으로 들어간다. 본문 안에서 정의해도 된다.\maketitle
전에만 나오면 된다.
그밖에 레이아웃을 정하기 위한 각종 명령이나 문서 전체에 걸쳐서 써먹을 스타일 정의, 이를테면 머리글, 바닥글 스타일 같은 것들도 여기서 정의한다.
본문
실제 내용이 들어가는 곳이다. \begin{document} ... \end{document}
사이에 있는 내용만 실제 출력 결과에 나타난다.
각주
- ↑ ε는 그리스 글자 '입실론'을 뜻하는데, 키보드로 치기 어려우므로 보통 e로 대신해서 많이 쓴다. 실제 로마 글자 e가 입실론에서 유래된 것이다.
- ↑ 사실 TikZ가 제공하는 기능은 그 정도를 훨씬 뛰어넘는다. 심지어 클래스와 인터페이스를 동원한 객체지향 프로그래밍까지 가능하다. 버전 3.0.0을 기준으로 이 패키지의 매뉴얼이 무려 1,165 페이지다. 더 이상 설명이 必要韓紙?
- ↑ 출력 파일 형식은 파워포인트나 키노트가 아니라 PDF 파일로 나온다. 아크로뱃에서 슬라이드 쇼 기능을 제공하는데, 심지어는 파워포인트와 비슷한 전환 및 애니메이션 효과도 어느 정도 지원한다.