역사와 라이선스

TeX의 버전 번호는 현재 3.141592653이고, 다음 수정이 들어가면 끝에 숫자가 한 자리 더 붙습니다. 향하는 곳은 원주율 π, 결코 닿지 못하는 수입니다. 이 페이지는 기원 이야기가 끝나는 지점에서 시작합니다. 커누스가 TeX을 완성한 뒤에 일어난 일, 곧 동결과 LaTeX의 세대교체, 그리고 LPPL이라는 라이선스가 실제로 무엇을 요구하는지를 다룹니다. LaTeX은 무료이고 상업적인 작업에도 자유롭게 쓸 수 있습니다. 다만 그 “자유”의 모양은 GPL과도 MIT와도 조금 달라서, 다른 이유가 가장 흥미로운 대목입니다.

TeX 버전 번호가 π에 수렴하는 이유

1990년에 커누스가 TUGboat에 실은 글 「The Future of TeX and METAFONT」에서 TeX의 개발을 그만두겠다고 선언하고, 이후로는 보고된 버그만 고치기로 했기 때문입니다. 그때 함께 정한 방식이 수정할 때마다 번호 끝에 숫자를 한 자리씩 붙이는 것이었습니다. 그래서 3.14 → 3.141 → 3.1415로 늘어나는 번호는 π에 한없이 가까워지면서도 원리상 닿지 못합니다. 버전 번호 자체가 “이것은 완성에 점근할 뿐인 물건”이라는 선언인 셈입니다. 그리고 삼십 년 남짓 동안 자릿수가 몇 개밖에 늘지 않았다는 사실이 그대로 안정성의 척도가 됩니다.

shell
# measured on a TeX Live 2024 install
$ tex --version | head -1
TeX 3.141592653 (TeX Live 2024)

$ pdftex --version | head -1
pdfTeX 3.141592653-2.6-1.40.26 (TeX Live 2024)

흥미로운 점은 후속 엔진들이 이 번호를 버리지 않고 그대로 물려받는다는 것입니다. 위의 pdfTeX 3.141592653-2.6-1.40.26은 “커누스의 동결된 TeX 3.141592653 위에 pdfTeX 자신의 1.40.26을 얹었다”는 뜻으로 읽힙니다. 밑바탕의 번호를 고쳐 쓰지 않는 것이 곧 “안에 든 TeX은 손대지 않았습니다”라는 선서입니다. 커누스는 자신이 죽으면 번호를 π로 확정하고 영원히 동결하겠다고 적어 두었습니다. 본인의 표현으로 “내가 죽은 뒤에 이루어질, 절대적으로 마지막인 변경”입니다. 그 시점에 남아 있던 버그는 고쳐지지 않고 기능(feature)으로 승격됩니다. 자매품 METAFONT도 같은 취향이어서, 이쪽은 자연로그의 밑 e를 향합니다.

이 안정 지향이 얼마나 진심이었는지는 커누스가 지급해 온 “상금”에서 읽힙니다. TeX이나 METAFONT 코드에서 버그를 찾은 사람에게는 보상금이 나갔는데, 금액은 16진법으로 1달러에 해당하는 2.56달러에서 시작해 해마다 두 배로 올라 327.68달러에서 상한에 걸렸습니다. 늦게 찾을수록 더 값이 나가는 구조를 만들어 두었는데도 보고는 결국 말라붙었습니다. 이 정도의 엄격함이 있어야 수십 년 전의 원고가 오늘 그대로 조판됩니다. TeX이 컴퓨터 조판사의 부동점이라 불리는 이유입니다.

그렇다면 동결되는 “TeX”이란 구체적으로 무엇일까요. 커누스는 1984년부터 1986년에 걸쳐 다섯 권짜리 Computers & Typesetting을 펴냈습니다. A권은 사용 안내서 The TeXbook, B권은 TeX의 소스 코드 자체를 조판한 TeX: The Program, C권과 D권은 문자 설계 프로그램 METAFONT에 대응하는 두 권, 그리고 E권은 서체 Computer Modern의 설계를 담은 Computer Modern Typefaces입니다. 프로그램의 소스를 책으로 출판한다는 발상이 여기에 있으며, 그래서 “동결”은 비유가 아닙니다. 버그 재검토조차 수십 년 간격으로 예정되어 있어, 2021년 기념판에 이어 다음은 2028년, 그다음은 2037년, 2047년으로 이어집니다.

LaTeX은 지금 누가 유지보수하고 있는가

LaTeX 프로젝트(LaTeX Project) 라 불리는 소수의 팀입니다. LaTeX을 쓴 사람은 레슬리 램포트이지만, 1989년에 유지보수와 개발의 책임이 프랑크 미텔바흐에게 넘어갔고, 그가 크리스 로울리·라이너 셰프와 꾸린 팀이 1994년에 LaTeX 2ε를 내놓았습니다. 오늘날 “LaTeX”이라 하면 이 2ε을 가리키며, 그 이전의 LaTeX 2.09는 역사 속 존재입니다. TeX Live 트리에 들어 있는 legal.txt에는 지금도 램포트, 미텔바흐, 로울리, 셰프, 데이비드 칼라일 등이 저작권자로 나열되어 있어, 계보가 배포판 안에 그대로 적혀 있습니다.

오랫동안 “차세대 별도 포맷”으로 이야기되던 LaTeX3는 제품으로는 끝내 나오지 않았습니다. 대신 그 성과인 프로그래밍 층 expl3가 LaTeX 2ε 안으로 흡수되어, 지금은 커널이 시작할 때 읽어 들입니다. 그래서 pdflatex를 돌리면 로그 맨 앞에 배너가 두 줄 찍힙니다. 포맷 자체의 판과 L3 프로그래밍 층의 판입니다. LaTeX 2ε는 이제 매년 6월 1일과 11월 1일에 날짜판으로 배포되며, 날짜가 곧 판 이름입니다.

log
% the two banner lines a TeX Live 2024 run prints
LaTeX2e <2023-11-01> patch level 1
L3 programming layer <2024-02-20>

한 해에 두 번이나 갱신된다고 하면 “옛 원고가 안 돌아가는 것 아닌가” 싶겠지만, 설계는 오히려 반대 방향입니다. 커널에는 latexrelease라는 되감기 장치가 마련되어 있어, \RequirePackage[2020-02-02]{latexrelease}처럼 날짜를 지정하면 그 시점 커널의 동작을 재현합니다. 심사에서 몇 해씩 오가는 논문과, 십 년 뒤에 다시 컴파일해야 할 학위논문을 위해 일부러 마련해 둔 비상구입니다. TeX 쪽은 동결하고, LaTeX 쪽은 갱신하되 과거 판을 재현할 수 있게 한다는 역할 분담이 분명합니다.

“TeX”이라는 이름을 쓰려면 필요한 것

커누스의 라이선스는 한 가지로 요약됩니다. 고치는 것은 자유지만, 고친 결과를 TeX이라 불러서는 안 된다는 것입니다. 소스 파일 tex.web 자체에, 이 프로그램을 고쳤다면 그 결과를 TeX이라 불러서는 안 된다고 적혀 있습니다. “TeX”이라는 이름을 쓸 수 있는 것은 TRIP 테스트를 통과한 구현뿐인데, 이는 출력을 기준 결과와 한 글자 단위로 대조하는 짓궂은 고문 테스트입니다. 곧 “TeX”은 제품명이 아니라 호환성 보증서로 운용된다는 것이 이 라이선스의 발명입니다.

이 규칙이 실제로 작동한 증거는 일본어 TeX에 남아 있습니다. 아스키가 만든 일본어 대응 엔진은 pTeX, 그 유니코드판은 upTeX이며, 어느 쪽도 “TeX”이라 자칭하지 않습니다. TeX을 고쳤으니 이름을 바꾼다는 규칙이 그대로 구현의 이름이 된 것입니다. 상표의 경우 미국에서 “TeX”은 미국수학회(AMS) 가 보유하고 있으며 1984년에 출원되었습니다. 무관한 제3자가 선점하는 것을 막기 위한 방어적 보유이므로, 문서에 “TeX은 …의 상표입니다” 같은 표기를 넣을 필요는 없습니다.

LPPL은 실제로 무엇을 요구하는 라이선스인가

LPPL(LaTeX Project Public License) 이 요구하는 핵심은 개변판이 스스로 개변판임을 밝히는 것입니다. 흔히 “LPPL은 파일 이름을 바꾸도록 의무화한다”고 설명되지만, 현행판에서는 정확하지 않습니다. TeX Live 트리에 들어 있는 texmf-dist/doc/latex/base/lppl.txtLPPL 1.3c(2008-05-04) 이고, 제6조 a항이 요구하는 것은 대체 구성 요소가 대화형으로 쓰일 때 자신이 개변판임을 명확하고 모호함 없이 밝히는 것입니다. 파일 이름 자체에 대해서는 아무 말도 하지 않습니다. GPL처럼 소스 공개를 강제하는 장치도 아닙니다. 지키는 것은 사용자 쪽의 신뢰, 곧 “article.cls라고 적힌 것은 진짜 article.cls”라는 전제입니다.

그렇다면 “파일 이름을 바꿔라”라는 이야기는 어디에서 왔을까요. 옛 판에는 정말 그렇게 적혀 있었기 때문입니다. 같은 doc/latex/base/ 디렉터리에 함께 들어 있는 lppl-1-2.txt의 조건 3은, 개변한 파일을 원래 파일 이름으로 배포해서는 안 된다고 못 박고 있습니다. 이 조항은 “이것을 자유 소프트웨어라 할 수 있는가”라는 오랜 논쟁을 불렀고, 2003년에는 데비안이 LaTeX을 어떻게 다룰지 재검토하는 사태로까지 이어졌습니다. LPPL 1.3에서 이 속박이 완화되어, 요구는 “이름을 바꿔라”에서 “개변판임을 밝혀라”로 옮겨 갔습니다. 다만 이름을 바꾸는 것은 여전히 권장되는 방법이며, CTAN에 묘하게 비틀린 파생 패키지 이름이 많은 것은 이 문화의 흔적입니다.

조항무엇을 요구하는가실무에서 지키는 법
LPPL 1.3c 2완전하고 개변하지 않은 사본의 배포는 언제나 허용할 일 없음
LPPL 1.3c 6a대체 구성 요소는 개변판임을 명확히 밝힐 것\ProvidesClass의 판 표기에 개변 사실을 적기
LPPL 1.3c 6b무엇을 어떻게 바꿨는지 눈에 띄게 밝힐 것머리말 주석이나 CHANGES 파일에 변경 이력을 두기
LPPL 1.3c 6c원 저자가 이 판을 지원한다고 오해하게 하지 말 것연락처와 버그 신고처를 자신의 것으로 교체
LPPL 1.3c 6d원본도 함께 배포하거나 입수 방법을 밝힐 것README에 해당 CTAN 페이지를 적으면 충분
LPPL 1.2 3개변판을 원래 파일 이름으로 배포하지 말 것(구판)1.3에서 폐지. 다만 개명은 지금도 권장

클래스 파일을 배포하고 싶어졌을 때의 절차

원고만 쓰는 사람에게 라이선스의 실무적 의미는 거의 없습니다. LaTeX으로 PDF를 만들고, 제출하고, 팔고, 공개하는 일 자체에는 추가 허락이 필요 없습니다. 라이선스가 얼굴을 내미는 것은 연구실 템플릿을 고쳐 후배에게 건네거나 학회 클래스를 손봐 공저자에게 보내는 것처럼 .cls.sty를 재배포하는 순간뿐입니다. 그때 할 일은 셋입니다. 이름을 따로 붙이고, 개변한 사실을 적고, 원본의 출처를 밝히는 것. 이 셋이면 LPPL 제6조는 거의 충족됩니다.

latex
% labthesis.cls -- derived from thesis.cls, distributed under the LPPL
% Changes are logged in CHANGES; the original is on CTAN.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{labthesis}[2026/04/01 v1.2 local fork of thesis.cls]
\LoadClass[a4paper]{article}
  • 원본 파일은 그대로 두고, labthesis.cls 같은 고유한 이름으로 배포합니다. 덮어쓰지 않는 것이 핵심입니다.
  • \ProvidesClass의 판 표기에 파생판임을 적어 두면 그 줄이 로그에 찍히면서 제6조 a항이 자연스럽게 충족됩니다.
  • 논문 소스 묶음을 제출할 때는 개변한 .sty·.cls와 함께 라이선스 전문도 넣습니다. 대부분의 투고 시스템은 올린 파일을 그대로 보관합니다.
  • 본문과 그림의 저작권은 TeX 라이선스와 무관하며, 투고처·출판사·소속 기관의 규정으로 정해집니다. 둘을 혼동하지 마세요.

일본어 쪽 부품도 한마디 덧붙이면, pLaTeX·upLaTeX의 매크로 묶음은 LPPL이 아니라 BSD 라이선스입니다. 로컬 설치의 plcore.ltx 첫머리에는 “Copyright (c) 2010 ASCII MEDIA WORKS”와 “Copyright (c) 2016-2020 Japanese TeX Development Community” 두 줄이 나란히 있어, 아스키에서 일본어 TeX 개발 커뮤니티로의 인수인계가 파일 안에 기록되어 있습니다. jlreq.cls도 마찬가지로 BSD 2조항입니다. 곧 일본어 환경을 다룰 때는 LPPL과 BSD가 섞여 있으며, 저작권 표시를 남기는 것이 최소 조건입니다.