DonaldKnuth가 만든 최고의 문서 조판 언어.
1. TeX이란 ? ¶
DonaldKnuth가 만든 문서 조판 언어.
TeX은 문서조판용 언어를 가리키기도 하고(tex language) 그 언어를 처리해주는 컴파일러 프로그램을 지칭하기도 하고(tex program), 경우에 따라서는 TeX 프로그램을 운영하는 환경과 시스템 전체(tex implementation, TeX 배포판)를 가리키기도 한다. 예컨대 C 언어로 작성된 원본(소스)은
cc
나 gcc
와 같은 컴파일러로 실행파일을 만들어내지만 tex
언어로 작성된 원본(소스)는 tex
이라는 컴파일러로 문서를 만들어낸다.
TeX이라는 명칭은 그리스어
$\tau\epsilon\chi$
에서 온 것으로,
technology
의 어근 tech-
에 해당한다. 발음은 텍
또는 테흐
로 한다. 텍스
라고 읽으면 안된다.
TeX의 버전 넘버는 원주율(
$\pi$
)의 십진 표현을 따라서 전개된다. 현재 대부분의 TeX 배포판 들이 채택하고 있는 버전은 3.14159265 이다. 버전 넘버는 명령행에서 다음 명령으로 확인할 수 있다.
#> tex --version
2. What is TeX ¶
translated from http://www.tex.ac.uk/cgi-bin/texfaq2html?label=whatTeX
TeX이란 다널드 카누쓰[1](DonaldKnuth)가 개발한 조판 시스템(typesetting system)이다. 그는 TeX에 관한 책(see TheTeXBook) 서문에서 다음과 같이 말했다.
크누쓰는 미국 캘리포니아에 있는 스탠포드 대학의 컴퓨터 프로그래밍 명예교수(Emeritus Professor)이다. 크누쓰가 TeX의 첫번째 버전을 개발했던 것은 1978년으로서, 그의 저서 『컴퓨터 프로그래밍의 기술』(The Art of Computer Programming)의 개정판을 준비하기 위해서였다. 이 발상은 곧 유명해졌고, 곧이어 그는 1982년에 두번째 판을 내놓았는데, 이것이 오늘날 우리가 쓰고 있는 TeX의 기초가 되었다.
그는 TeX을 만들기 위해서 문서화 프로그래밍(literate programming)[2] 시스템을 개발하였다. 이 Literate Programming 언어(WEB)로 된 TeX 원본(소스)과 WEB 소스를 컴파일가능한 다른 언어로 변환할 수 있는 도구, 그리고 원본을 인쇄할 수 있는 도구를 무료로(free of charge) 제공하였다. 그러므로 TeX의 동작 방식은 누구라도 알 수 있게 되어 있다. 나아가 WEB 시스템은 TeX을 새로운 운영체제나 컴퓨터에 이식할 수 있는 메카니즘을 제공한다. 그리고 이 포팅을 신뢰할 수 있도록 크누쓰는 TeX 시스템의 확실성을 검증할 수 있는 테스트를 제공하였다.[3] TeX 및 그 문서들은 따라서 매우 이식성이 높다.
TeX은 일종의 매크로 언어 처리기이다. 그래서 사용자에게 상당히 높은 수준의 프로그래밍 능력을 요구한다. 이런 이유 때문에 TeX 자체는 다루기가 꽤 까다롭다. 그래서 크누쓰는 TeX 사용을 위한 매크로 패키지를 만들었다. 이것을 PlainTeX이라 부른다. PlainTeX은 TeX을 실제로 이용하기 위한 최소한의 매크로 집합이며, 몇 가지 고수준 명령의 시험용 버전을 포함하고 있다. 이 가운데 후자는 그 자체로 사용될 것이라기보다는 명령을 작성하는 모델로 간주되어야 옳다. "TeX으로 프로그래밍한다"고 말할 때는 대부분 PlainTeX 매크로를 가리키는 것이다.
----
- [1] Ka-Nooth로 발음
- [2] 문서화 프로그래밍이란 문서(documentation)와 프로그래밍 코드를 함께 작성하여 사람이 읽고 이해할 수 있도록 하는 프로그래밍 기법을 말한다. 문서화 프로그래밍은 하나의 파일에 문서와 소스코드가 함께 작성되는데, 나중에 이를 처리할 때는 문서부분과 컴파일 가능한 코드 부분을 분리하여 처리한다. LaTeX에서 제공되는 ''문서화된 LaTeX''(*.dtx) 파일은 문서화 프로그래밍의 한 예이다.
- [3] 무엇을 TeX이라고 부를 수 있는가의 문제에 있어서, Knuth가 제공하는 테스트 방법을 trip test라 한다. MetaFont에 대해서는 trap test라는 것이 있다. 이 둘을 합쳐서 'torture test'라 부른다. 이 테스트를 통과한 것은 TeX이라 부를 수 있다.
3. 엔진, 매크로, 유틸리티 ¶
TeX을 기반으로 한 프로그램의 개발은 자유로우며, 많은 종류의 TeX-확장들이 존재한다. 기존의 TeX에 primitive를 추가하거나 수정하여 만들어 낸 tex 대응(확장) 프로그램을 TeX 엔진이라 한다.
TeX의 원시명령(primitives)을 바탕으로 미리 매크로를 정의하여 문서 편집을 위한 바탕을 제공할 수 있다. 이것을 매크로 집합이라 하고 사용자는 이 매크로 집합을 이용하여 자신의 작업을 수행한다.
TeX 시스템을 운영하기 위해서는 매크로 집합과 엔진 이외에 각종 유틸리티를 필요로 한다. 대표적인 것으로 폰트를 처리하기 위한 유틸리티나 결과물인 dvi를 처리하기 위한 dviware들이 있다.