DonaldKnuth가 만든 최고의 문서 조판 언어.

1. TeX이란 ?

DonaldKnuth가 만든 문서 조판 언어.

TeX은 문서조판용 언어를 가리키기도 하고(tex language) 그 언어를 처리해주는 컴파일러 프로그램을 지칭하기도 하고(tex program), 경우에 따라서는 TeX 프로그램을 운영하는 환경과 시스템 전체(tex implementation, TeX 배포판)를 가리키기도 한다. 예컨대 C 언어로 작성된 원본(소스)은 ccgcc와 같은 컴파일러로 실행파일을 만들어내지만 tex 언어로 작성된 원본(소스)는 tex이라는 컴파일러로 문서를 만들어낸다.

TeX이라는 명칭은 그리스어 $\tau\epsilon\chi$ 에서 온 것으로, technology의 어근 tech-에 해당한다. 발음은 또는 테흐로 한다. 텍스라고 읽으면 안된다.

TeX의 버전 넘버는 원주율( $\pi$ )의 십진 표현을 따라서 전개된다. 현재 대부분의 TeX 배포판 들이 채택하고 있는 버전은 3.14159265 이다. 버전 넘버는 명령행에서 다음 명령으로 확인할 수 있다.
  #> tex --version

TeX은 출력물에서
$\mbox{\TeX}$
과 같이 인쇄되고, 텍스트로는 TeX로 쓴다.

2. What is TeX


TeX이란 다널드 카누쓰[1](DonaldKnuth)가 개발한 조판 시스템(typesetting system)이다. 그는 TeX에 관한 책(see TheTeXBook) 서문에서 다음과 같이 말했다.

(TeX은...) 책, 그 중에서도 특히 많은 수식이 있는 책을 아름답게 제작하기 위해서 개발하였다.

크누쓰는 미국 캘리포니아에 있는 스탠포드 대학의 컴퓨터 프로그래밍 명예교수(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이라 부른다. PlainTeXTeX을 실제로 이용하기 위한 최소한의 매크로 집합이며, 몇 가지 고수준 명령의 시험용 버전을 포함하고 있다. 이 가운데 후자는 그 자체로 사용될 것이라기보다는 명령을 작성하는 모델로 간주되어야 옳다. "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들이 있다.

엔진, 매크로, 유틸리티를 합쳐 플랫폼 위에서 운영되도록 설계된 프로그램 집합을 TeX Implementation(TeX 실행체계)라고 한다.

3.1. TeX 확장 : 엔진

새로운 primitives를 수정/추가하거나 TeX의 기능을 확장한 프로그램. 최근의 주요 배포판은 encTeX 패치된 pdfeTeX을 기본 TeX 엔진으로 사용하는 경우가 많다.

  • PDFTeX
    PDF 출력을 위하여 만든 TeX 확장판이 PDFTeX이다.
  • e-TeX
    TeX에 중요한 몇 가지 primitive를 추가하여 확장한 확장 TeX.
  • encTeX
    다국어처리를 위한 primitive가 추가된 TeX 패치.
  • XeTeX
  • OmegaLambda, Aleph와 Lamed
    TeX을 개선하여 다국어처리를 가능하게 한 16비트 유니코드[4] TeXOmega이다. LambdaLaTeXOmega판. Aleph는 e-Omega가 발전한 것이고 Lamed는 LaTeX의 Aleph판이다.
  • LuaTeX

----
  • [4] 유니코드는 16비트가 아니지만 Omega가 모든 유니코드를 전부 처리할 수 있는 능력을 가진 것은 아니므로 표현을 수정하지 않았다.

3.2. TeX 확장 : 매크로

다음은 모두 TeX을 기반으로 기능을 확장하는 매크로 패키지들이다.

3.3. 기타 확장 매크로

특별한 format 파일을 만들어서 특정 목적에 이용하는 TeX 확장들이 있다.

4. 유틸리티

TeX 시스템의 일부를 이루는 유틸리티들이 있다.
  • MetaFont
    • MetaFont는 그 자체가 독자적인 폰트기술언어이면서 동시에 TeX 시스템의 일부를 이루는 폰트처리 유틸리티이기도 하다.
  • MetaPost
  • DVIware
    • xdvi, YAP, dviout, dvips, dvilj, dvitty, dvipdfm, dvipdfmx
  • Fontwares

5. TeX 배포판

TeX을 사용하려면 단일 프로그램을 설치하는 것으로 끝나는 것이 아니라 여러 프로그램들과 폰트, 매크로로 이루어진 시스템을 구축하여야 한다. 이러한 시스템을 사용자의 환경(플랫폼)에 맞게 손쉽게 구축하고 운영하도록 도와주기 위하여 여러 종류의 TeX 실행환경이 개발되어 있다. 이것들을 TeXImplementations 또는 TeX 배포판이라 한다.



6. TeX의 작동 원리

The LaTeX Companion, 2nd ed., p.9에 실려 있는 그림

texprocessing.png
[PNG image (7.36 KB)]

van der Laan씨의 wots.tex(What is TeX)에 처음 실렸고 lshort-kr 3.20까지 실려 있던 그림

whatsteximage.gif
[GIF image (5.36 KB)]



Retrieved from http://wiki.ktug.org/wiki/wiki.php/TeX
last modified 2014-10-22 12:11:50