TeX
디지털 조판 프로그램. 이공계 대학원생, 특히 수학 전공 대학원생들의 공공의 적.
출판물에는 [math]\displaystyle{ \TeX }[/math]이라고 써야 정확하다. 글자만 보고 '텍스'라고 발음하면 안 되고, 원래는 그리스어에서 온 것이므로 '테흐'에 가깝지만 보통은 '텍'이라고 발음한다.
역사
스탠포드대학교의 컴퓨터 과학자 도널드 커누스(Donald Knuth) 교수가 자신의 책 <The Art of Computer Programming>[1] 개정판 내려다가 출판사가 보내 온 교정본의 조판 품질에 빡친 것이 시작이다. 커누스 교수는 당시 초창기 단계였던 디지털 조판 장비를 최대한 활용할 수 있는 조판 시스템을 직접 만들어 보기로 결심했다. 가끔 휴대폰 가게에 "싼 휴대폰 찾다가 빡쳐서 직접 차린 집"이라는 문구가 붙어 있는 걸 볼 수 있는데, TeX은 "좋은 조판 시스템 찾다가 빡쳐서 직접 만든 시스템"이 되시겠다. 그리고 수많은 이공계 대학원생들이 빡치고 있다.
TeX의 메이저 버전은 3이다. 버전 3이 1989년에 나온 이후로는 자잘한 기능 개선이나 버그 수정이 이루어졌고, 그나마 이제는 한강에서 바늘 찾기 수준으로 나오는 버그만 고치는 정도다. 최신 버전은 3.14159265다. 어라? 어디사 많이 본 숫자인데...? 원주율이다. 마이너 업그레이드가 이루어질 때마다 원주율에 맞춰서 뒤에 숫자가 하나 붙는 식으로 버전을 올리고 있다. 앨런튜링상 수상자의 유머 감각. 즉, 이 버전은 14159265번 수정된 게 아니라 8번 수정된 것이다. 1989년에 나온 프로그램이 겨우 8번 밖에 수정이 안 된 것이다. 그만큼 버그가 없고 안정된 프로그램이라는 뜻.
특징
텍스트에 마치 프로그래밍을 하듯이 명령어를 넣어서 문서의 구성이나 모양을 만든다. 이 점이 TeX을 어렵게 만드는 가장 큰 원인이다. 대회상자로 문서의 모양을 잡고 글꼴을 바꾸면 화면에 바로 그 결과가 나타나는, WYSIWYG(What You See Is What You Get) 방식의 워드프로세서나 전자조판프로그램에 익숙해져 있디면 마치 윈도우만 쓰다가 DOS 혹은 유닉스의 명령행 쉘을 쓸 때와 같은 멘붕 상태에 빠질 것이다. 하지만 프로그래밍이나 HTML에 익숙해 있다면 생각보다는 어렵지 않다. 또한 나만의 명령어를 만들어서 반복되는 귀찮은 작업을 간편하게 명령어 하나로 해결할 수도 있다. 최근에는 아예 TeX이 가진 프로그래밍의 특성을 강화하는 방향으로 나아가고 있다. 현대 프로그래밍의 개념을 많이 집어넣은 LaTeX3도 그렇고 Lua 스크립트를 넣을 수 있는 LuaTeX도 있다. 파이썬 코드를 넣을 수있는 PythonTeX 패키지도 있다.
수식 조판에 대단한 강점을 가지고 있다. TeX의 난이도에 빡치더라도 수식 편집에 오는 순간 왜 TeX을 그렇게 쓰라고 하는지 절절하게 느끼게 된다. 굉장히 복잡한 수식도 상당히 논리적으로 표현할 수 있다. 수학과 교수 쯤 되면 몇 페이지에 걸친 수식도 TeX으로 척척 만들어 낸다. 그러니까 수학 잘하는 사람보다 TeX 잘하는 사람이 교수되는 건가?
TeX이 하도 쓰기 어렵다 보니, TeX을 기반으로 해서 좀 더 쓰기 쉽게 만든 LaTeX이 나왔다. 오늘날 TeX을 쓰는 대다수 사람들은 LaTeX으로 작업한다. LaTeX이 TeX보다는 훨씬 쉽지만 어디까지나 'TeX보다'다. TeX이 박사 과정이라면 LaTeX은 석사 과정 쯤으로 생각하면 된다.
워드프로세서 혹은 조판 프로그램으로는 호환성이 최강이다. 거의 모든 유닉스 계열 운영체제에서 다 돌아가며 맥이나 윈도우도 당연히 지원한다. 사실 도널드 커누스 교수는 웹(WEB)[2]이라는, 추상적인 형태의 언어로 TeX을 만들었는데, WEB을 각 운영체제에 맞는 적당한 프로그래밍 언어로 번역해 주면 되므로 호환성이 좋다. 보통 TeX 프로그램은 Web2C라는, WEB을 C로 변환한 다음 컴파일하는 방식으로 만든다. 심지어 안드로이드에 TeX을 이식해 놓은 앱도 있다. 고만해 미친놈들아.
C 언어 컴파일러가 소스 코드 파일을 컴파일해서 실행 파일을 만들어 내듯, TeX은 소스 문서 파일을 컴파일해서 DVI(DeVice Independent, 장치 독립) 형식의 전자문서 파일을 만든다. 당연히 DVI도 커누스 교수가 만든 형식. 말 그대로 장치 독립이라서 TeX이 깔려 있는 시스템이라면 어떤 운영체제로 가지고 가든 똑같은 출력을 보장한다. PDF가 널리 퍼지면서부터는 DVI를 PDF로 바꿔주는 변환 프로그램이 등장했고, 최근에는 아예 PDF를 바로 만들어 주는 PDFTeX이 널리 쓰이고 있다.
형식
모든 TeX 문서는 텍스트와 명령으로 구성된다. 텍스트는 문서에 실제로 표시되는 내용이고, 명령은 텍스트를 어떻게 꾸밀지를 지시하는 것이다. 명령은 백슬래시(\)로 시작되며, 빈칸 없이 곧바로 명령어를 입력한다. 명령어는 다음과 같은 특징이 있다.
- 명령어는 대소문자를 구별한다. \mycommand와 \MyCommand는 다른 명령으로 인식한다.
- 오로지 알파벳만 쓸 수 있다. \Command2와 같은 명령어는 쓸 수 없다. TeX은 명령어를 보다가 알파벳이 아닌 숫자 같은 것들이 나오면 그 앞에서 명령이 끝난 것으로 간주한다. \Command2 명령어를 만나면 TeX은 \Command와 2로 나누어서 인식한다.
글꼴
커누스 교수는 TeX에 쓸 글꼴을 위한 벡터 폰트인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 (알파벳 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 컴파일할 때에는 시간이 대폭 단축되었으니까 참았던 것.
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, 명조체 2,360자 완성형 한글 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 비트맵 폰트를 만들지 않아도 되니, 트루타입이나 오픈타입 글꼴을 그대로 쓸 수 있는 XeTeX이 각광을 받고 있는 중이다.
배포판
옛날에는 설치가 정말 어려웠다. 거의 한나절이었다. 컴퓨터가 빠르지 않았기 때문에 미리 메타폰트로 여러 가지 해상도와 크게에 맞는 비트맵 글꼴을 만들어서 썼는데 그 과정만 한나절 걸렸다. 게다가 필요한 패키지를 찾아서 설치하는 것도 만만치 않은 작업. 저장 용량이 넉넉치 않았던 시대에는 지금처럼 수백 가지의 패키지를 왕창 깔기에도 부담스러웠다.
이후에는 설치를 쉽게 해주는 패키지들이 나왔는데 이제는 대략 텍라이브(TeX Live)로 모이는 추세다. 기본 설치도 쉽지만 TeX과 LaTeX에서 쓰는 수많은 부속파일이나 패키지를 손쉽게 설치하거나, 업데이트하거나, 지울 수 있게 해 준다. 1년에 한 번씩 새로운 배포판이 나오며 각종 업데이트는 수시로 제공된다. 윈도우용으로는 믹텍(MikTeX)로 예전부터 널려 쓰여 왔던 배포판이지만 텍라이브에 많이 밀리는 추세다. 맥을 쓰고 있다면 맥텍(MacTeX)이 거의 진리. 텍라이브 기반으로 맥을 위한 추가 기능을 지원하기 때문에 맥 사용자들에게는 거의 맥텍만 권한다.