TeX: 두 판 사이의 차이
(→특징) |
(→배포판) |
||
(같은 사용자의 중간 판 73개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
전자조판 프로그램. <del>이공계 대학원생, 특히 수학 전공 대학원생들의 공공의 적.</del><ref>하지만 TeX이 없었다면 복잡한 수식이 들어간 논문을 작성하기 위해 훨씬 더 많은 시간과 노력을 소모했을 것이므로 사실 적이라기보다는 오히려 축복에 가깝다. 논문을 쓸 때에는 수식 부분 말고는 외워야 할 명령어도 별로 없고 논문 저자에게는 아주 직관적인 명령어들이 많다 보니 익숙해지고 특화된 편집기의 도움을 받으면 논문 쓰기에는 편리하다.</ref> | |||
출판물에는 <math>\TeX</math>이라고 써야 정확하다. 글자만 보고 '텍스'라고 발음하면 안 되고, 원래는 [[그리스어]]에서 온 것이므로 '테흐'에 가깝지만 보통은 '텍'이라고 발음한다. | 출판물에는 <math>\TeX</math>이라고 써야 정확하다. 글자만 보고 '텍스'라고 발음하면 안 되고, 원래는 [[그리스어]]에서 온 것이므로 '테흐'에 가깝지만 보통은 '텍'이라고 발음한다. | ||
=역사= | ==역사== | ||
[[스탠포드대학교]]의 컴퓨터 과학자 [[도널드 | [[스탠포드대학교]]의 컴퓨터 과학자 [[도널드 카누스]](Donald Knuth)<ref>성인 Knuth를 어떻게 발음 혹은 표기할 것이냐를 두고 '커누스', '누스' 등등 여러 가지 설이 있는데, 카누스 교수의 웹사이트에 가보면 직접 FAQ에 "How do you pronounce your last name?" 즉, '성을 어떻게 발음해야 하나요?'의 답으로 'Ka-NOOTH', 즉 카누스라고 밝혀 두었다.</ref> 교수가 자신의 책 <The Art of Computer Programming><ref>컴퓨터 과학계에서는 정말로 손꼽히는 [[알고리즘]] 분야의 명저다.</ref> 개정판을 내려다가 출판사가 보내 온 교정본의 조판 품질에 빡친 것이 시작이다. 카누스 교수는 당시 초창기 단계였던 디지털 조판 장비를 최대한 활용할 수 있는 조판 시스템을 직접 만들어 보기로 결심했다. 가끔 [[휴대폰]] 가게에 "싼 [[휴대폰]] 찾다가 빡쳐서 직접 차린 집"이라는 문구가 붙어 있는 걸 볼 수 있는데, TeX은 "좋은 조판 시스템 찾다가 빡쳐서 직접 만든 시스템"이 되시겠다. <del>그리고 수많은 이공계 대학원생들이 빡치고 있다.</del> '야밤의 공대생 만화'에서 이런 개발과정을 담은 만화를 올렸다.<ref>https://facebook.com/story.php?story_fbid=772758306244360&id=484288288424698</ref> | ||
TeX의 메이저 버전은 3이다. 버전 3이 1989년에 나온 이후로는 자잘한 기능 개선이나 버그 수정이 이루어졌고, 그나마 이제는 [[한강]]에서 바늘 찾기 수준으로 나오는 버그만 고치는 정도다. 최신 버전은 3.14159265다. 어라? 어디사 많이 본 숫자인데...? [[원주율]]이다. 마이너 업그레이드가 이루어질 때마다 원주율에 맞춰서 뒤에 숫자가 하나 붙는 식으로 버전을 올리고 있다. 즉, 이 버전은 14159265번 수정된 게 아니라 8번 수정된 것이다. 1989년에 나온 프로그램이 겨우 8번 밖에 수정이 안 된 것이다. 그만큼 버그가 없고 안정된 프로그램이라는 뜻. 만약 버그를 발견해서 카누스 교수에게 알리면 버그 여부를 확인한 뒤 이를 수정하고 버전을 바꾼다. 버그를 발견한 사람에게는 수표를 보내 주는데, 처음에는 2.56 달러로 시작해서 해마다 두 배씩으로 올려 327.68 달러까지 오른 다음에는 더 이상 액수를 올리지 않고 있다. TeX 말고도 METAFONT, 카누스 교수의 저서에서 버그를 발견해서 인정 받아도 수표를 받을 수 있다. | |||
그런데 이렇게 수표를 발행해도 실제 카누스 교수 계좌에서 빠져나간 돈은 거의 없다고 한다. 수표를 받은 사람들이 이를 돈으로 바꾸지 않고 액자에 담아 걸어놓거나 소중하게 간직하기 때문. 컴퓨터 역사에서 가장 뛰어난 프로그램 중 하나인 TeX의 버그를 발견했다는 것 때문에 컴퓨터 과학계에서는 가장 영예로운 상 가운데 하나로 여기기도 한다.<ref>Ditlea, S., "[https://www.technologyreview.com/s/400456/rewriting-the-bible-in-0s-and-1s/ Rewriting the Bible in 0's and 1's]", ''[[MIT Technology Review]]''.</ref> | |||
==특징== | |||
텍스트에 마치 프로그래밍을 하듯이 명령어를 넣어서 문서의 구성이나 모양을 만든다. 이 점이 TeX을 어렵게 만드는 가장 큰 원인이다. 대화상자로 문서의 모양을 잡고 [[글꼴]]을 바꾸면 화면에 바로 그 결과가 나타나는, [[WYSIWYG]](What You See Is What You Get) 방식의 [[워드프로세서]]나 [[전자조판 프로그램]]에 익숙해져 있디면 마치 [[윈도우]]만 쓰다가 [[DOS]] 혹은 [[유닉스]]의 명령행 쉘을 쓸 때와 같은 멘붕 상태에 빠질 것이다.<ref>이와 비교되는 개념으로 TeX을 WYSIWYM(What You See Is What You Mean)이라고 부른다. 즉 '당신이 보는 것이 당신이 의미하는 바다'란 뜻. 문서를 만드는 사람은 의미 위주로 문서를 만들면 TeX이 알아서 예쁘게 만들어 준다는 얘기다.<del>그러나 정말 의미에만 신경 써서 만들다 보면 결과물이 별로 안 예쁘다는 것은 함정.</del></ref> 하지만 프로그래밍이나 [[HTML]]에 익숙해 있다면 생각보다는 어렵지 않다. 또한 나만의 명령어를 만들어서 반복되는 귀찮은 작업을 간편하게 명령어 하나로 해결할 수도 있다. 최근에는 아예 TeX이 가진 프로그래밍의 특성을 강화하는 방향으로 나아가고 있다. 현대 프로그래밍의 개념을 많이 집어넣은 [[LaTeX3]]도 그렇고 [[Lua]] 스크립트를 넣을 수 있는 [[LuaTeX]]도 있다. 조판 엔진 차원에서 지원되지는 않지만 [[파이썬]] 코드를 넣을 수있는 PythonTeX 패키지도 있다. | |||
수식 조판에 대단한 강점을 가지고 있다. TeX의 난이도에 빡치더라도 수식 편집에 오는 순간 왜 TeX을 그렇게 쓰라고 하는지 절절하게 느끼게 된다. 굉장히 복잡한 수식도 상당히 논리적으로 표현할 수 있다. 수학과 교수 쯤 되면 몇 페이지에 걸친 수식도 TeX으로 척척 만들어 낸다. MS 워드나 아래아한글에 있는 WYSIWYG 방식 수식 편집기가 처음에는 사용하기 쉬워서 좋을 수는 있지만 수식의 양이 많아질수록, 복잡해질수록 마우스와 키보드를 오가면서 수식을 입력하는 게 TeX 방식보다 훨씬 시간이 오래 걸린다는 것을 알게 된다. 그래서 이런 수식 편집기들 중에도 TeX 방식 입력을 지원하는 것들이 있다. | |||
수식 말고도 논문 작성에 또 한 가지 대단한 위력을 발휘하는 것은 BibTeX. 논문을 쓰다 보면 참고문헌을 각주나 목록으로 붙이는 게 여간 귀찮고 까다로운 게 아니다. 엄격하게 정해진 형식에 따라서 붙여야 하는데, 그나마도 하나의 표준이 있는 게 아니라 학교마다, 또는 학회마다 형식이 다르기 때문, 널리 통용되는 표준 형식이 있긴 하지만 이게 한 가지가 아니다. 아무튼 BibTeX을 쓰면 서지 정보만 제대로 써 주면 알아서 참고문헌을 형식에 맞게 붙여 준다. 대부분의 이공계 아카이브는 서지정보를 BibTeX 형식으로 제공하고 있는 것도 강점. 수식이 많지 않더라도 BibTeX을 쓰기 위해 TeX으로 논문을 쓰는 사람들도 많다. | |||
= | 하지만 수식이나 논문이 아닌, 일반 출판물을 위해 쓰더라도 손색이 없다. 1970년대에 만들어진 프로그램인데도 그 조판 결과가 지금의 [[어도비 인디자인]]이나 [[쿼크익스프레스]] 같은 전자출판 프로그램으로 제작한 것과 비교해도 결코 못하다 할 수 없다. TeX에서 쓸 수 있는 최소 단위는 sp로, 1 sp = 65536 pt(포인트)이므로 어마어마한 정밀도를 자랑한다. 정렬이나 빈칸 배분을 비롯한 [[타이포그래피]] 성능도 지금의 전자출판 프로그램들이 무색하도록 뛰어나다. 물론 잡지처럼 텍스트 배치나 컬러 사용이 복잡한 출판물은 TeX으로 하기 힘들지만<ref>초고급 사용자들은 어떻게든 하긴 하지만 굳이 그럴 필요는 없고, TeX의 철학에도 맞지 않는다</ref> 단순 텍스트 위주의 출판물은 TeX을 잘 쓰는 중고급 사용자라면 충분히 미려한 결과물을 만들 수 있다. | ||
상상을 뛰어넘는 용도도 있는데 예를 들어 MusicTeX은 악보를 그린다. 사용이 까다롭긴 하지만 익숙해지면 복잡한 악보도 아주 미려하게 뽑아낸다. | |||
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, [[명조체]] 2,360자 [[완성형 한글]] 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. | TeX이 하도 쓰기 어렵다 보니, TeX을 기반으로 해서 좀 더 쓰기 쉽게 만든 [[LaTeX]]이 나왔다. 오늘날 TeX을 쓰는 대다수 사람들은 [[LaTeX]]으로 작업한다. [[LaTeX]]이 TeX보다는 훨씬 쉽지만 어디까지나 'TeX보다'다. TeX이 박사 과정이라면 [[LaTeX]]은 석사 과정 쯤으로 생각하면 된다. 그밖에 ConTeXt와 같은 것들도 있지만 [[LaTeX]]의 점유율이 압도적으로 높은 상태. | ||
[[워드프로세서]] 혹은 조판 프로그램으로는 호환성이 최강이다. 거의 모든 [[유닉스]] 계열 운영체제에서 다 돌아가며 [[맥]]이나 [[윈도우]]도 당연히 지원한다. 사실 도널드 카누스 교수는 웹(WEB)<ref>인터넷의 월드 와이드 웹(World Wide Web)과는 전혀 관계 없다. <del>일단 그때는 인터넷이 없었잖아.</del></ref>이라는, 추상적인 형태의 언어로 TeX을 만들었는데, WEB을 각 운영체제에 맞는 적당한 프로그래밍 언어로 번역해 주면 되므로 호환성이 좋다. 보통 TeX 프로그램은 Web2C라는, WEB을 [[C]]로 변환한 다음 컴파일하는 방식으로 만든다. 심지어 [[안드로이드]]에 TeX을 이식해 놓은 앱도 있다. <del>고만해 미친놈들아.</del> | |||
[[C]] 언어 컴파일러가 소스 코드 파일을 컴파일해서 실행 파일을 만들어 내듯, TeX은 소스 문서 파일을 컴파일해서 DVI(DeVice Independent, 장치 독립) 형식의 전자문서 파일을 만든다. 당연히 DVI도 카누스 교수가 만든 형식. 말 그대로 장치 독립이라서 TeX이 깔려 있는 시스템이라면 어떤 운영체제로 가지고 가든 똑같은 출력을 보장한다. [[PDF]]가 널리 퍼지면서부터는 DVI를 [[PDF]]로 바꿔주는 변환 프로그램이 등장했고, 최근에는 아예 [[PDF]]를 바로 만들어 주는 [[pdfTeX]]이 널리 쓰이고 있다. 여전히 TeX으로 DVI 파일을 만들 수도 있고 DVI 뷰어도 있지만 PDF가 대세가 되면서부터는 거의 쓰이지 않고 있다. DVI는 8비트 문자코드를 기준으로 만든 데다가 글꼴 표현은 METAFONT를 기반으로 하고 있기 때문에 TeX과 떨어져서 독립적으로 쓰기가 힘들다. 반면 PDF는 유니코드도 잘 지원하고 글꼴을 파일 내부에 임베딩할 수도 있고 뷰어도 어도비의 아크로뱃 리더는 물론이고 웹 브라우저들도 PDF 보기를 지원하므로 여러 모로 대세가 될 수밖에 없다. | |||
최근에는 아래아한글이나 MS워드와 같은 그래픽 기반 [[워드프로세서]]들도 수식 입력 및 편집기능이 강화되어 TeX의 장점도 조금은 퇴색되었다. 아래아한글은 그래픽 기반 인터페이스와 명령어 입력 방식을 모두 지원한다. 하지만 그래픽 기반 [[워드프로세서]]들의 기능이 향상된다고 해도 근본적인 한계가 있다. 수식이 석박사 논문 수준으로 복잡해지면 오히려 그래픽 기반 방식이 훨씬 시간도 오래 걸리고 성가시며<ref>운영체제의 인터페이스도 그래픽 기반이 초보자도 쉽게 사용할 수 있지만 많은 작업을 해야 할 때에는 주요한 명령어 사용 방법을 어느 정도 알고 있을 경우 오히려 명령어 기반이 훨씬 빠르다. 일단 그래픽 기반 운영체제는 마우스와 키보드를 왔다갔다 해야 하고 마우스로 메뉴나 아이콘을 찾아 클릭하거나 하는 동작들이 시간을 많이 잡아먹는다. 명령어 기반이라면 명령어를 알고 있으면 키보드 타자로 간단히 끝나므로 속도가 훨씬 빠르다. [[리눅스]]와 같이 서버에서 많이 쓰이는 운영체제는 [[bash]]와 같은 명령행 쉘을 많이 쓴다.</ref>, [[워드프로세서]]에서 수식은 그림처럼 일종의 독립된 '개체'로 들어가기 때문에 수식과 텍스트가 자연스럽게 섞여 어울리는 것도 TeX을 따르지 못한다. 또한 워드나 아래아한글에서 텍스트와 수식이 섞인 문서를 만들려면 일반 모드와 수식모드를 왔다갔다 하는 게 귀찮기도 하고, 결과물을 보면 TeX에 비해 눈에 보이는 일관성이 떨어진다. 수식이 어쩌다 조금 들어가는 문서라면 몰라도, 수식이 많이 들어간 문서를 작성하려면 TeX을 쓰는 게 정말 효율이 좋다. | |||
수학 분야 학회에서는 대부분 논문 작성을 TeX으로 요구하고 있고 수식이 많이 들어가는 물리학이나 다른 이공계 분야도 특히 국제 저널에 논문을 낼 때에는 TeX으로 제출하라고 요구하고 있다. [[워드프로세서]]로 만들면 논문 저자마다 글꼴이나 단락을 제각각으로 사용하므로 편집자가 모아서 일관성 있게 바꾸려면 시간과 노력이 상당히 필요한데, TeX을 사용한다면 저널에서 제공하는 클래스 또는 패키지를 사용해서 체계적으로 문서를 작성하면 저널 편집자가 일관성 있게 출판물을 만들기가 굉장히 좋다. 당분간 수학계를 비롯한 이공계에서 TeX의 위상이 크게 내려가지는 않을 분위기다. | |||
==형식== | |||
모든 TeX 문서는 텍스트와 명령으로 구성된다. 텍스트는 문서에 실제로 표시되는 내용이고, 명령은 텍스트를 어떻게 꾸밀지를 지시하는 것이다. 명령은 백슬래시(\)(한국어 지원 글꼴은 원화 기호 {{LaTeX|\}}로 나올 수도 있다)로 시작되며, 빈칸 없이 곧바로 명령어를 입력한다. 명령어는 다음과 같은 특징이 있다. | |||
* 명령어는 대소문자를 구별한다. {{LaTeX|\mycommand}}와 {{LaTeX|\MyCommand}}는 다른 명령으로 인식한다. | |||
* 오로지 [[알파벳]]만 쓸 수 있다. {{LaTeX|\Command2}}와 같은 명령어는 쓸 수 없다. TeX은 명령어를 보다가 알파벳이 아닌 숫자 같은 것들이 나오면 그 앞에서 명령이 끝난 것으로 간주한다. {{LaTeX|\Command2}} 명령어를 만나면 TeX은 {{LaTeX|\Command}}와 {{LaTeX|2}}로 나누어서 인식한다. | |||
* 명령어에 밑줄이나 점과 같은 기호도 쓸 수 없는 것이 원칙인데, 다만 @ 기호는 {{LaTeX|\makeatletter}}와 {{LaTeX|\makeatother}} 사이에서 쓸 수 있다. 이것은 원래 패키지를 만들 때 일반 사용자는 바로 쓸 수 없는 내부용 명령어를 정의하기 위한 것이다. 혹시나 패키지를 사용하는 사람이 모르고 내부용 명령어로 쓰인 이름을 매크로를 만들기 위해서 쓰면 충돌이 일어나므로, 혹은 패키지 내부용 명령어를 사용자가 함부로 쓰지 못하도록 내부용 명령어에 @ 기호를 넣는다. [[LaTeX3]]는 내부 명령어를 위해 @ 대신 밑줄(_)과 쌍점(:)을 쓰며, {{LaTeX|\ExplSyntaxOn}}과 {{LaTeX|\ExplSyntaxOff}} 사이에서만 사용할 수 있다. | |||
==글꼴== | |||
카누스 교수는 TeX에 쓸 글꼴을 위한 [[벡터 글꼴]]인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 ([[알파벳]] 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 [[컴파일]]할 때에는 시간이 대폭 단축되었으니까 참았던 것. 사실 우리가 지금 쓰고 있는 [[트루타입]]이든 [[오픈타입]]이든 [[포스트스크립트]]든, [[벡터 글꼴]] 혹은 [[외곽선 글꼴]]은 최종 출력 장치에 찍을 때는 비트맵 변환, 즉 렌더링을 거쳐야 한다. 지금이야 컴퓨터 성능이 겁나게 좋으니까 실시간으로 렌더링을 할 수 있지 카누스 교수가 TeX을 만들던 시절에는 말도 안 되는 이야기였다. 개인용 컴퓨터는 커녕 메인프레임-터미널 시대에도 컴퓨터로 [[외곽선 글꼴]]을 쓴다는 거 자체가 말이 안 되는 이야기였는데<ref>전자출판에 맥을 쓰던 초창기에도 [[포스트스크립트]] 외곽선 글꼴은 프린터에 따로 심어놓고, 화면용으로는 비트맵 글꼴을 사용했다. </ref> 그걸 미리 렌더링을 해 놓는 방법으로 해결한 것. | |||
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, [[명조체]] 2,360자 [[완성형 한글]] 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 그래도 이렇게 해서라도 한글을 쓸 수 있는 게 어딘가... 가 당시의 분위기였고, 이 방면에서 독보적으로 이름을 날리고 있었던 은광희는 아예 TeX에서 쓸 수 있도록 만든 '은글꼴'이라는 글꼴 세트까지 만들었다. 조형 면에서는 여러 모로 아쉬운 글꼴이지만 TeX에서 모든 한글 글자를 사용할 수 있고, 심지어 옛한글까지도 거의 완벽하게 표현할 수 있었기 때문에 이공계가 아니어도 이것 때문에 TeX을 쓰는 국어학자도 있을 정도였다. | |||
요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 TFB 비트맵 글꼴을 만들지 않아도 되니, [[트루타입]]이나 [[오픈타입]] 글꼴을 그대로 쓸 수 있는 [[XeTeX]]이 각광을 받고 있는 중이다. 이제는 [[유니코드]]를 직접 지원하기 때문에 굳이 한글 글꼴을 256 글자씩 쪼갤 필요도 없고 해서 한글 처리도 이제는 아주 매끄럽게 지원되고 있다.<ref>단, [[XeTeX]]은 DVI는 지원하지 않고 결과물을 무조건 [[PDF]]로 뽑아야 한다. 어차피 요즈음은 DVI를 쓰는 사람도 없으니 문제될 일은 없다.</ref> [[LuaTeX]] 역시 [[트루타입]]이나 [[오픈타입]] 글꼴을 사용할 수 있는데, XeTeX은 컴퓨터 운영체제의 글꼴 처리 엔진을 사용하는 반면 [[LuaTeX]]은 자체 엔진을 사용하기 때문에 미세한 부분에 차이가 있다. 더 나아가서, 전 세계의 모든 문자, 심지어 희귀문자나 고대문자까지도 자유롭게 섞어 쓸 수 있을 정도라서 정말로 이런 문서를 만들어야 한다면 그 어떤 [[워드프로세서]] 및 조판 소프트웨어와 비교해도 단연 TeX의 승리다. | |||
==배포판== | |||
옛날에는 설치가 정말 어려웠다. 거의 한나절이었다. 메타폰트는 외곽선 글꼴로 화면이나 프린터로 출력하려면 비트맵 글꼴로 변환해야 하는데, 컴퓨터의 속도가 지금보다 훨씬 느렸던 시절에 개발된 TeX인지라 지금처럼 문서 컴파일 과정에서 외곽선 글꼴의 래스터라이징을 했다가는 정말로 문서 하나 컴파일하는 데 하세월이다. 그래서 설치 과정에서 미리 메타폰트를 여러 가지 해상도와 크게에 맞는 비트맵 글꼴로 래스터라이징 해서 저장했는데 옛날의 그 구린 성능의 컴퓨터에서 엄청나게 시간을 잡아먹는 일이라 설치 과정만 한나절 걸렸다. 게다가 필요한 패키지를 찾아서 설치하는 것도 만만치 않은 작업. 저장 용량이 넉넉치 않았던 시대에는 지금처럼 수백 가지의 패키지를 왕창 깔기에도 부담스러웠다. 인터넷을 쉽게 쓰기 어려웠던 시절에는 그냥 [[디스켓]]에 TeX과 관련 프로그램, 주요 패키지를 담아 놨다가 설치하는 수밖에는 없었다. 한 장에 많아야 1.44MB인 [[디스켓]] 갈아 끼우는 것도 일이라, 설치 도중에 다른 일을 보다가 한참이 지나서야 다음 [[디스켓]]으로 바꿔 줘야 한다는 사실을 깨닫다 보면 그렇게 설치 시간은 하염없이 늘어졌다. | |||
TeX 및 패키지 관리가 체계화되고 인터넷을 통한 설치 관리가 가능해진 뒤로는 설치를 쉽게 해주는 패키지들이 여러 가지 나왔는데 이제는 대략 텍라이브(TeX Live)로 모이는 추세다. 전 세계 TeX 커뮤니티의 본진이라 할 수 있는 CTAN(Comprehensive TEX Archive Network)에서 제공하는 배포판으로 기본 설치도 쉽지만 TeX과 [[LaTeX]]에서 쓰는 수많은 부속파일이나 패키지를 손쉽게 설치하거나, 업데이트하거나, 지울 수 있게 해 준다. 1년에 한 번씩 새로운 배포판이 나오며 각종 업데이트는 수시로 제공된다. 풀 버전으로 설치했다면 매일매일 업데이트를 돌려보면 뭔가는 업데이트가 된다. 특별한 일이 없으면 4월 1일에 새로운 버전이 나오며, 새 버전이 나오기 약 1개월 전부터 기존 버전의 업데이트를 제공하지 않는다. | |||
[[윈도우]]용으로는 믹텍(MikTeX)로 예전부터 널려 쓰여 왔던 배포판이지만 [[텍라이브]]에 많이 밀리는 추세다. 특히 한국 TeX 커뮤티니의 본진인 KTUG도 텍라이브 저장소를 운영하고 이쪽을 주로 밀어주고 있어서 더더욱 믹텍이 불리하다. 그래도 믹텍도 꾸준히 업데이트 되고 있으며 나름 역사와 전통을 자랑하는 배포판인만큼 이쪽 사용자층도 무시할 수 없어서 당분간 라이벌 관계는 이어질 것으로 보인다. 또한 한국 사용자들에게는 믹텍이 가지는 장점도 있는데, 윈도우 전용이므로 아직까지 대다수 사용자가 윈도우를 쓰고 있는 우리나라의 환경에서는 윈도우와 더 잘 붙는 믹텍만이 가지는 장점이 있다. 특히 우리나라 사용자들에게는 폴더나 파일 이름이 한글일 경우 믹텍의 장점이 더욱 부각되는데, 텍라이브는 이름이나 경로명에 한글이 들어가 있으면 경로명 인식을 제대로 못하는저런 문제를 일으킬 수 있지만 믹텍은 이런 문제가 없다. 또한 텍라이브는 윈도우 64 비트를 2023년에 와서야 지원하기 시작했지만 믹텍은 진작부터 64 비트를 지원했다. | |||
[[맥]]을 쓰고 있다면 맥텍(MacTeX)이 거의 진리. TUG에서 배포하고 있으며 [[텍라이브]] 기반으로 맥을 위한 추가 기능을 지원하기 때문에 [[맥]] 사용자들에게는 거의 맥텍만 권한다. [[텍라이브]] 기반이므로 사용 및 관리 방법도 [[텍라이브]]와 거의 동일하다. 다만 편집기는 TeX Works 대신 TeX Shop이 들어가 있는 것과 같이 운영체제의 차이에 따른 몇 가지 차이는 있다. | |||
[[우분투]]나 [[페도라]] 같은 [[리눅스]] 주요 배포판은 텍라이브를 패키지 형태로 편리하게 설치할 수 있도록 제공하고 있긴 한데 버전이 좀 뒤처져 있는 경우가 많다. 패키지를 제공하지 않는 배포판을 쓰고 있거나 최신 버전의 텍라이브를 쓰고 싶으면 직접 받아서 설치해 쓰자. [http://www.ktug.org/ KTUG 한글 TeX 사용자 그룹] 에 가면 여러 가지 안내 문서도 있고 질문을 올릴 수도 있다. | |||
TeX을 기반으로 위지윅을 제공하는 프로그램도 있는데, Scientific WorkPlace나 Mathmatica 같은 프로그램이 그것. 사실 이들 프로그램은 단순히 TeX 편집 기능만이 아니라 수식 기반의 수치 계산과 같은 기능을 주요한 기능으로 하고 있지만 단순히 TeX 편집을 위해서 쓰는 사람들도 꽤 있다. | |||
프로그램을 다운로드 받고 설치하는 것도 귀찮다 싶으면 아예 웹 기반으로 동작하는 서비스를 이용할 수도 있다. ShareLaTeX이나 Overleaf와 같은 서비스가 그것인데, 두 서비스는 2017년에 협력을 선언하고 서비스 공동 개발을 추진하게 되었고 아예 Overleaf로 통합되었다. 웹 기반 편집기도 제공하고 결과물을 바로바로 확인할 수 있다. 심지어 kotex 패키지를 사용하면 [[LaTeX]]에서 한글도 지원한다. | |||
==편집기== | |||
일단 기본 텍스트 편집기만 있으면 충분히 쓸 수 있다. TeX의 강점 중 하나는 저사양 컴퓨터에서도 너끈히 쓸 수 있으며, 만약 텍 컴파일이 힘들 정도로 저사양이라고 해도<ref>이 정도 컴퓨터라면 다른 어떤 작업도 힘들 정도로 똥컴이라고 봐야 한다.</ref> 일단 문서는 텍스트 편집기에서 편집만 하고 다른 컴퓨터로 옮겨서 컴파일 하는 방법도 있다. 하지만 텍스트 편집기를 쓸 때에는 따로 커맨드라인 프롬프트를 띄워서 컴파일을 하기 때문에 좀 불편한 면이 있다. 그 때문에 TeX에 특화된 하이라이팅 기능이나 명령어 제안 및 자동 완성, 컴파일 및 결과로 나오는 [[PDF]]<ref>예전에는 DVI였지만 지금은 [[PDF]]가 대세라 상당수가 기본으로는 [[PDF]] 프리뷰 기능만 제공한다.</ref> 보기 기능 과 같은 것들을 제공한다. | |||
널리 쓰이는 편집기로는 텍라이브에 들어 있는 TeXworks, TeX Maker, TeX Studio 같은 것들이 있으며 이들은 윈도우, 맥, 리눅스까지 멀티 플랫폼을 지원한다. WinEdt, EmEditor 같은 범용 텍스트 편집기도 자체 지원 또는 플러그인 기능을 사용하면 상당히 편리하게 TeX 편집을 할 수 있다. [[비주얼 스튜디오 코드]]도 TeX Workshop 플러그인 설치로 상당히 뛰어난 TeX 편집 지원을 한다. 맥에서는 맥텍에 들어가 있는 TeX Shop을 많이 쓰는 편. | |||
==한글 사용== | |||
도널드 카누스 교수가 TeX을 만들었을 때에는 아직 [[유니코드]]라는 개념도 없었고, 라틴 문자 이외에 다른 문자를 사용하는 언어권에 대해서는 거의 생각하지 않았던 시대다. 그래서 한 글자가 먹는 공간이 1 바이트, 즉 256 글자까지만 수용할 수 있었다. 때문에 한글만이 아니라 다른 문자권 사용자들은 TeX 사용에 많은 어려움을 겪었다. 이를 극복하기 위한 시도가 여러 가지 있었는데, 초창기에 나왔던 HLaTeXp나 HLaTeXn, 한TeX과 같은 것들이 개발되었다. 이 당시의 극복 방법은 한글 글자들을 256 글자씩 tfm 파일에 쪼개서 넣은 다음, 컴파일을 할 때에는 계속해서 글꼴을 바꿔가는 식으로 조판을 했다. 당시에는 조판된 DVI 파일에 텍스트가 보존되는 문제가 별 이슈가 아니었기 때문에 TeX에서 한글을 사용할 수 있다는 것만으로도 상당한 인기를 끌었다. | |||
하지만 유니코드가 대세가 되면서부터는 과거와 같은 방식은 점점 시대에 뒤떨어진 것이 되었고, 그에 따라서 [[유니코드]]를 수용하려는 노력들이 있었다. 한국에서 만들어진 건 아니지만 일단 유니코드를 기반으로 한 TeX 엔진인 오메가가 국제 프로젝트로 만들어지기 시작했고 이후 [[유니코드]] 기반 TeX이 대세가 되었다. 또한 PDFTeX이 나오면서 출력 파일의 대세는 DVI에서 PDF로 옮겨 갔다. 이러한 변화의 과정 속에서 나온 것이 유니코드 기반으로 제대로 한글 조판을 할 수 있는 ko.TeX. 이후 [[트루타입]]과 [[오픈타입]]을 더욱 제대로 사용할 수 있는 [[XeTeX]]과 [[LuaTeX]]이 등장하면서 ko.TeX도 여기에 맞게 진화해 나갔다. 이제는 [[PDF]]에서 정확한 텍스트 추출, 한글 [[PDF]] 북마크를 비롯한 온갖 고급 기능까지 제공하면서 한글 구현에 거의 제한이 없는 수준까지 발전했고, 글꼴만 있으면 옛한글 조판도 가능하다. 심지어 한글의 자소별로 다른 색깔을 지정하는 것과 같은 초 사기급 조판까지도 가능한 수준까지 발전했다. 이제는 한글 처리의 세밀함이라는 면에서는 웬만한 [[워드프로세서]]나 전자출판 프로그램도 씹어먹을 수 있는 수준으로까지 발전했다. | |||
{{각주}} | {{각주}} |
2023년 3월 20일 (월) 16:30 기준 최신판
전자조판 프로그램. 이공계 대학원생, 특히 수학 전공 대학원생들의 공공의 적.[1]
출판물에는 [math]\displaystyle{ \TeX }[/math]이라고 써야 정확하다. 글자만 보고 '텍스'라고 발음하면 안 되고, 원래는 그리스어에서 온 것이므로 '테흐'에 가깝지만 보통은 '텍'이라고 발음한다.
역사
스탠포드대학교의 컴퓨터 과학자 도널드 카누스(Donald Knuth)[2] 교수가 자신의 책 <The Art of Computer Programming>[3] 개정판을 내려다가 출판사가 보내 온 교정본의 조판 품질에 빡친 것이 시작이다. 카누스 교수는 당시 초창기 단계였던 디지털 조판 장비를 최대한 활용할 수 있는 조판 시스템을 직접 만들어 보기로 결심했다. 가끔 휴대폰 가게에 "싼 휴대폰 찾다가 빡쳐서 직접 차린 집"이라는 문구가 붙어 있는 걸 볼 수 있는데, TeX은 "좋은 조판 시스템 찾다가 빡쳐서 직접 만든 시스템"이 되시겠다. 그리고 수많은 이공계 대학원생들이 빡치고 있다. '야밤의 공대생 만화'에서 이런 개발과정을 담은 만화를 올렸다.[4]
TeX의 메이저 버전은 3이다. 버전 3이 1989년에 나온 이후로는 자잘한 기능 개선이나 버그 수정이 이루어졌고, 그나마 이제는 한강에서 바늘 찾기 수준으로 나오는 버그만 고치는 정도다. 최신 버전은 3.14159265다. 어라? 어디사 많이 본 숫자인데...? 원주율이다. 마이너 업그레이드가 이루어질 때마다 원주율에 맞춰서 뒤에 숫자가 하나 붙는 식으로 버전을 올리고 있다. 즉, 이 버전은 14159265번 수정된 게 아니라 8번 수정된 것이다. 1989년에 나온 프로그램이 겨우 8번 밖에 수정이 안 된 것이다. 그만큼 버그가 없고 안정된 프로그램이라는 뜻. 만약 버그를 발견해서 카누스 교수에게 알리면 버그 여부를 확인한 뒤 이를 수정하고 버전을 바꾼다. 버그를 발견한 사람에게는 수표를 보내 주는데, 처음에는 2.56 달러로 시작해서 해마다 두 배씩으로 올려 327.68 달러까지 오른 다음에는 더 이상 액수를 올리지 않고 있다. TeX 말고도 METAFONT, 카누스 교수의 저서에서 버그를 발견해서 인정 받아도 수표를 받을 수 있다.
그런데 이렇게 수표를 발행해도 실제 카누스 교수 계좌에서 빠져나간 돈은 거의 없다고 한다. 수표를 받은 사람들이 이를 돈으로 바꾸지 않고 액자에 담아 걸어놓거나 소중하게 간직하기 때문. 컴퓨터 역사에서 가장 뛰어난 프로그램 중 하나인 TeX의 버그를 발견했다는 것 때문에 컴퓨터 과학계에서는 가장 영예로운 상 가운데 하나로 여기기도 한다.[5]
특징
텍스트에 마치 프로그래밍을 하듯이 명령어를 넣어서 문서의 구성이나 모양을 만든다. 이 점이 TeX을 어렵게 만드는 가장 큰 원인이다. 대화상자로 문서의 모양을 잡고 글꼴을 바꾸면 화면에 바로 그 결과가 나타나는, WYSIWYG(What You See Is What You Get) 방식의 워드프로세서나 전자조판 프로그램에 익숙해져 있디면 마치 윈도우만 쓰다가 DOS 혹은 유닉스의 명령행 쉘을 쓸 때와 같은 멘붕 상태에 빠질 것이다.[6] 하지만 프로그래밍이나 HTML에 익숙해 있다면 생각보다는 어렵지 않다. 또한 나만의 명령어를 만들어서 반복되는 귀찮은 작업을 간편하게 명령어 하나로 해결할 수도 있다. 최근에는 아예 TeX이 가진 프로그래밍의 특성을 강화하는 방향으로 나아가고 있다. 현대 프로그래밍의 개념을 많이 집어넣은 LaTeX3도 그렇고 Lua 스크립트를 넣을 수 있는 LuaTeX도 있다. 조판 엔진 차원에서 지원되지는 않지만 파이썬 코드를 넣을 수있는 PythonTeX 패키지도 있다.
수식 조판에 대단한 강점을 가지고 있다. TeX의 난이도에 빡치더라도 수식 편집에 오는 순간 왜 TeX을 그렇게 쓰라고 하는지 절절하게 느끼게 된다. 굉장히 복잡한 수식도 상당히 논리적으로 표현할 수 있다. 수학과 교수 쯤 되면 몇 페이지에 걸친 수식도 TeX으로 척척 만들어 낸다. MS 워드나 아래아한글에 있는 WYSIWYG 방식 수식 편집기가 처음에는 사용하기 쉬워서 좋을 수는 있지만 수식의 양이 많아질수록, 복잡해질수록 마우스와 키보드를 오가면서 수식을 입력하는 게 TeX 방식보다 훨씬 시간이 오래 걸린다는 것을 알게 된다. 그래서 이런 수식 편집기들 중에도 TeX 방식 입력을 지원하는 것들이 있다.
수식 말고도 논문 작성에 또 한 가지 대단한 위력을 발휘하는 것은 BibTeX. 논문을 쓰다 보면 참고문헌을 각주나 목록으로 붙이는 게 여간 귀찮고 까다로운 게 아니다. 엄격하게 정해진 형식에 따라서 붙여야 하는데, 그나마도 하나의 표준이 있는 게 아니라 학교마다, 또는 학회마다 형식이 다르기 때문, 널리 통용되는 표준 형식이 있긴 하지만 이게 한 가지가 아니다. 아무튼 BibTeX을 쓰면 서지 정보만 제대로 써 주면 알아서 참고문헌을 형식에 맞게 붙여 준다. 대부분의 이공계 아카이브는 서지정보를 BibTeX 형식으로 제공하고 있는 것도 강점. 수식이 많지 않더라도 BibTeX을 쓰기 위해 TeX으로 논문을 쓰는 사람들도 많다.
하지만 수식이나 논문이 아닌, 일반 출판물을 위해 쓰더라도 손색이 없다. 1970년대에 만들어진 프로그램인데도 그 조판 결과가 지금의 어도비 인디자인이나 쿼크익스프레스 같은 전자출판 프로그램으로 제작한 것과 비교해도 결코 못하다 할 수 없다. TeX에서 쓸 수 있는 최소 단위는 sp로, 1 sp = 65536 pt(포인트)이므로 어마어마한 정밀도를 자랑한다. 정렬이나 빈칸 배분을 비롯한 타이포그래피 성능도 지금의 전자출판 프로그램들이 무색하도록 뛰어나다. 물론 잡지처럼 텍스트 배치나 컬러 사용이 복잡한 출판물은 TeX으로 하기 힘들지만[7] 단순 텍스트 위주의 출판물은 TeX을 잘 쓰는 중고급 사용자라면 충분히 미려한 결과물을 만들 수 있다.
상상을 뛰어넘는 용도도 있는데 예를 들어 MusicTeX은 악보를 그린다. 사용이 까다롭긴 하지만 익숙해지면 복잡한 악보도 아주 미려하게 뽑아낸다.
TeX이 하도 쓰기 어렵다 보니, TeX을 기반으로 해서 좀 더 쓰기 쉽게 만든 LaTeX이 나왔다. 오늘날 TeX을 쓰는 대다수 사람들은 LaTeX으로 작업한다. LaTeX이 TeX보다는 훨씬 쉽지만 어디까지나 'TeX보다'다. TeX이 박사 과정이라면 LaTeX은 석사 과정 쯤으로 생각하면 된다. 그밖에 ConTeXt와 같은 것들도 있지만 LaTeX의 점유율이 압도적으로 높은 상태.
워드프로세서 혹은 조판 프로그램으로는 호환성이 최강이다. 거의 모든 유닉스 계열 운영체제에서 다 돌아가며 맥이나 윈도우도 당연히 지원한다. 사실 도널드 카누스 교수는 웹(WEB)[8]이라는, 추상적인 형태의 언어로 TeX을 만들었는데, WEB을 각 운영체제에 맞는 적당한 프로그래밍 언어로 번역해 주면 되므로 호환성이 좋다. 보통 TeX 프로그램은 Web2C라는, WEB을 C로 변환한 다음 컴파일하는 방식으로 만든다. 심지어 안드로이드에 TeX을 이식해 놓은 앱도 있다. 고만해 미친놈들아.
C 언어 컴파일러가 소스 코드 파일을 컴파일해서 실행 파일을 만들어 내듯, TeX은 소스 문서 파일을 컴파일해서 DVI(DeVice Independent, 장치 독립) 형식의 전자문서 파일을 만든다. 당연히 DVI도 카누스 교수가 만든 형식. 말 그대로 장치 독립이라서 TeX이 깔려 있는 시스템이라면 어떤 운영체제로 가지고 가든 똑같은 출력을 보장한다. PDF가 널리 퍼지면서부터는 DVI를 PDF로 바꿔주는 변환 프로그램이 등장했고, 최근에는 아예 PDF를 바로 만들어 주는 pdfTeX이 널리 쓰이고 있다. 여전히 TeX으로 DVI 파일을 만들 수도 있고 DVI 뷰어도 있지만 PDF가 대세가 되면서부터는 거의 쓰이지 않고 있다. DVI는 8비트 문자코드를 기준으로 만든 데다가 글꼴 표현은 METAFONT를 기반으로 하고 있기 때문에 TeX과 떨어져서 독립적으로 쓰기가 힘들다. 반면 PDF는 유니코드도 잘 지원하고 글꼴을 파일 내부에 임베딩할 수도 있고 뷰어도 어도비의 아크로뱃 리더는 물론이고 웹 브라우저들도 PDF 보기를 지원하므로 여러 모로 대세가 될 수밖에 없다.
최근에는 아래아한글이나 MS워드와 같은 그래픽 기반 워드프로세서들도 수식 입력 및 편집기능이 강화되어 TeX의 장점도 조금은 퇴색되었다. 아래아한글은 그래픽 기반 인터페이스와 명령어 입력 방식을 모두 지원한다. 하지만 그래픽 기반 워드프로세서들의 기능이 향상된다고 해도 근본적인 한계가 있다. 수식이 석박사 논문 수준으로 복잡해지면 오히려 그래픽 기반 방식이 훨씬 시간도 오래 걸리고 성가시며[9], 워드프로세서에서 수식은 그림처럼 일종의 독립된 '개체'로 들어가기 때문에 수식과 텍스트가 자연스럽게 섞여 어울리는 것도 TeX을 따르지 못한다. 또한 워드나 아래아한글에서 텍스트와 수식이 섞인 문서를 만들려면 일반 모드와 수식모드를 왔다갔다 하는 게 귀찮기도 하고, 결과물을 보면 TeX에 비해 눈에 보이는 일관성이 떨어진다. 수식이 어쩌다 조금 들어가는 문서라면 몰라도, 수식이 많이 들어간 문서를 작성하려면 TeX을 쓰는 게 정말 효율이 좋다.
수학 분야 학회에서는 대부분 논문 작성을 TeX으로 요구하고 있고 수식이 많이 들어가는 물리학이나 다른 이공계 분야도 특히 국제 저널에 논문을 낼 때에는 TeX으로 제출하라고 요구하고 있다. 워드프로세서로 만들면 논문 저자마다 글꼴이나 단락을 제각각으로 사용하므로 편집자가 모아서 일관성 있게 바꾸려면 시간과 노력이 상당히 필요한데, TeX을 사용한다면 저널에서 제공하는 클래스 또는 패키지를 사용해서 체계적으로 문서를 작성하면 저널 편집자가 일관성 있게 출판물을 만들기가 굉장히 좋다. 당분간 수학계를 비롯한 이공계에서 TeX의 위상이 크게 내려가지는 않을 분위기다.
형식
모든 TeX 문서는 텍스트와 명령으로 구성된다. 텍스트는 문서에 실제로 표시되는 내용이고, 명령은 텍스트를 어떻게 꾸밀지를 지시하는 것이다. 명령은 백슬래시(\)(한국어 지원 글꼴은 원화 기호 \
로 나올 수도 있다)로 시작되며, 빈칸 없이 곧바로 명령어를 입력한다. 명령어는 다음과 같은 특징이 있다.
- 명령어는 대소문자를 구별한다.
\mycommand
와\MyCommand
는 다른 명령으로 인식한다. - 오로지 알파벳만 쓸 수 있다.
\Command2
와 같은 명령어는 쓸 수 없다. TeX은 명령어를 보다가 알파벳이 아닌 숫자 같은 것들이 나오면 그 앞에서 명령이 끝난 것으로 간주한다.\Command2
명령어를 만나면 TeX은\Command
와2
로 나누어서 인식한다. - 명령어에 밑줄이나 점과 같은 기호도 쓸 수 없는 것이 원칙인데, 다만 @ 기호는
\makeatletter
와\makeatother
사이에서 쓸 수 있다. 이것은 원래 패키지를 만들 때 일반 사용자는 바로 쓸 수 없는 내부용 명령어를 정의하기 위한 것이다. 혹시나 패키지를 사용하는 사람이 모르고 내부용 명령어로 쓰인 이름을 매크로를 만들기 위해서 쓰면 충돌이 일어나므로, 혹은 패키지 내부용 명령어를 사용자가 함부로 쓰지 못하도록 내부용 명령어에 @ 기호를 넣는다. LaTeX3는 내부 명령어를 위해 @ 대신 밑줄(_)과 쌍점(:)을 쓰며,\ExplSyntaxOn
과\ExplSyntaxOff
사이에서만 사용할 수 있다.
글꼴
카누스 교수는 TeX에 쓸 글꼴을 위한 벡터 글꼴인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 (알파벳 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 컴파일할 때에는 시간이 대폭 단축되었으니까 참았던 것. 사실 우리가 지금 쓰고 있는 트루타입이든 오픈타입이든 포스트스크립트든, 벡터 글꼴 혹은 외곽선 글꼴은 최종 출력 장치에 찍을 때는 비트맵 변환, 즉 렌더링을 거쳐야 한다. 지금이야 컴퓨터 성능이 겁나게 좋으니까 실시간으로 렌더링을 할 수 있지 카누스 교수가 TeX을 만들던 시절에는 말도 안 되는 이야기였다. 개인용 컴퓨터는 커녕 메인프레임-터미널 시대에도 컴퓨터로 외곽선 글꼴을 쓴다는 거 자체가 말이 안 되는 이야기였는데[10] 그걸 미리 렌더링을 해 놓는 방법으로 해결한 것.
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, 명조체 2,360자 완성형 한글 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 그래도 이렇게 해서라도 한글을 쓸 수 있는 게 어딘가... 가 당시의 분위기였고, 이 방면에서 독보적으로 이름을 날리고 있었던 은광희는 아예 TeX에서 쓸 수 있도록 만든 '은글꼴'이라는 글꼴 세트까지 만들었다. 조형 면에서는 여러 모로 아쉬운 글꼴이지만 TeX에서 모든 한글 글자를 사용할 수 있고, 심지어 옛한글까지도 거의 완벽하게 표현할 수 있었기 때문에 이공계가 아니어도 이것 때문에 TeX을 쓰는 국어학자도 있을 정도였다.
요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 TFB 비트맵 글꼴을 만들지 않아도 되니, 트루타입이나 오픈타입 글꼴을 그대로 쓸 수 있는 XeTeX이 각광을 받고 있는 중이다. 이제는 유니코드를 직접 지원하기 때문에 굳이 한글 글꼴을 256 글자씩 쪼갤 필요도 없고 해서 한글 처리도 이제는 아주 매끄럽게 지원되고 있다.[11] LuaTeX 역시 트루타입이나 오픈타입 글꼴을 사용할 수 있는데, XeTeX은 컴퓨터 운영체제의 글꼴 처리 엔진을 사용하는 반면 LuaTeX은 자체 엔진을 사용하기 때문에 미세한 부분에 차이가 있다. 더 나아가서, 전 세계의 모든 문자, 심지어 희귀문자나 고대문자까지도 자유롭게 섞어 쓸 수 있을 정도라서 정말로 이런 문서를 만들어야 한다면 그 어떤 워드프로세서 및 조판 소프트웨어와 비교해도 단연 TeX의 승리다.
배포판
옛날에는 설치가 정말 어려웠다. 거의 한나절이었다. 메타폰트는 외곽선 글꼴로 화면이나 프린터로 출력하려면 비트맵 글꼴로 변환해야 하는데, 컴퓨터의 속도가 지금보다 훨씬 느렸던 시절에 개발된 TeX인지라 지금처럼 문서 컴파일 과정에서 외곽선 글꼴의 래스터라이징을 했다가는 정말로 문서 하나 컴파일하는 데 하세월이다. 그래서 설치 과정에서 미리 메타폰트를 여러 가지 해상도와 크게에 맞는 비트맵 글꼴로 래스터라이징 해서 저장했는데 옛날의 그 구린 성능의 컴퓨터에서 엄청나게 시간을 잡아먹는 일이라 설치 과정만 한나절 걸렸다. 게다가 필요한 패키지를 찾아서 설치하는 것도 만만치 않은 작업. 저장 용량이 넉넉치 않았던 시대에는 지금처럼 수백 가지의 패키지를 왕창 깔기에도 부담스러웠다. 인터넷을 쉽게 쓰기 어려웠던 시절에는 그냥 디스켓에 TeX과 관련 프로그램, 주요 패키지를 담아 놨다가 설치하는 수밖에는 없었다. 한 장에 많아야 1.44MB인 디스켓 갈아 끼우는 것도 일이라, 설치 도중에 다른 일을 보다가 한참이 지나서야 다음 디스켓으로 바꿔 줘야 한다는 사실을 깨닫다 보면 그렇게 설치 시간은 하염없이 늘어졌다.
TeX 및 패키지 관리가 체계화되고 인터넷을 통한 설치 관리가 가능해진 뒤로는 설치를 쉽게 해주는 패키지들이 여러 가지 나왔는데 이제는 대략 텍라이브(TeX Live)로 모이는 추세다. 전 세계 TeX 커뮤니티의 본진이라 할 수 있는 CTAN(Comprehensive TEX Archive Network)에서 제공하는 배포판으로 기본 설치도 쉽지만 TeX과 LaTeX에서 쓰는 수많은 부속파일이나 패키지를 손쉽게 설치하거나, 업데이트하거나, 지울 수 있게 해 준다. 1년에 한 번씩 새로운 배포판이 나오며 각종 업데이트는 수시로 제공된다. 풀 버전으로 설치했다면 매일매일 업데이트를 돌려보면 뭔가는 업데이트가 된다. 특별한 일이 없으면 4월 1일에 새로운 버전이 나오며, 새 버전이 나오기 약 1개월 전부터 기존 버전의 업데이트를 제공하지 않는다.
윈도우용으로는 믹텍(MikTeX)로 예전부터 널려 쓰여 왔던 배포판이지만 텍라이브에 많이 밀리는 추세다. 특히 한국 TeX 커뮤티니의 본진인 KTUG도 텍라이브 저장소를 운영하고 이쪽을 주로 밀어주고 있어서 더더욱 믹텍이 불리하다. 그래도 믹텍도 꾸준히 업데이트 되고 있으며 나름 역사와 전통을 자랑하는 배포판인만큼 이쪽 사용자층도 무시할 수 없어서 당분간 라이벌 관계는 이어질 것으로 보인다. 또한 한국 사용자들에게는 믹텍이 가지는 장점도 있는데, 윈도우 전용이므로 아직까지 대다수 사용자가 윈도우를 쓰고 있는 우리나라의 환경에서는 윈도우와 더 잘 붙는 믹텍만이 가지는 장점이 있다. 특히 우리나라 사용자들에게는 폴더나 파일 이름이 한글일 경우 믹텍의 장점이 더욱 부각되는데, 텍라이브는 이름이나 경로명에 한글이 들어가 있으면 경로명 인식을 제대로 못하는저런 문제를 일으킬 수 있지만 믹텍은 이런 문제가 없다. 또한 텍라이브는 윈도우 64 비트를 2023년에 와서야 지원하기 시작했지만 믹텍은 진작부터 64 비트를 지원했다.
맥을 쓰고 있다면 맥텍(MacTeX)이 거의 진리. TUG에서 배포하고 있으며 텍라이브 기반으로 맥을 위한 추가 기능을 지원하기 때문에 맥 사용자들에게는 거의 맥텍만 권한다. 텍라이브 기반이므로 사용 및 관리 방법도 텍라이브와 거의 동일하다. 다만 편집기는 TeX Works 대신 TeX Shop이 들어가 있는 것과 같이 운영체제의 차이에 따른 몇 가지 차이는 있다.
우분투나 페도라 같은 리눅스 주요 배포판은 텍라이브를 패키지 형태로 편리하게 설치할 수 있도록 제공하고 있긴 한데 버전이 좀 뒤처져 있는 경우가 많다. 패키지를 제공하지 않는 배포판을 쓰고 있거나 최신 버전의 텍라이브를 쓰고 싶으면 직접 받아서 설치해 쓰자. KTUG 한글 TeX 사용자 그룹 에 가면 여러 가지 안내 문서도 있고 질문을 올릴 수도 있다.
TeX을 기반으로 위지윅을 제공하는 프로그램도 있는데, Scientific WorkPlace나 Mathmatica 같은 프로그램이 그것. 사실 이들 프로그램은 단순히 TeX 편집 기능만이 아니라 수식 기반의 수치 계산과 같은 기능을 주요한 기능으로 하고 있지만 단순히 TeX 편집을 위해서 쓰는 사람들도 꽤 있다.
프로그램을 다운로드 받고 설치하는 것도 귀찮다 싶으면 아예 웹 기반으로 동작하는 서비스를 이용할 수도 있다. ShareLaTeX이나 Overleaf와 같은 서비스가 그것인데, 두 서비스는 2017년에 협력을 선언하고 서비스 공동 개발을 추진하게 되었고 아예 Overleaf로 통합되었다. 웹 기반 편집기도 제공하고 결과물을 바로바로 확인할 수 있다. 심지어 kotex 패키지를 사용하면 LaTeX에서 한글도 지원한다.
편집기
일단 기본 텍스트 편집기만 있으면 충분히 쓸 수 있다. TeX의 강점 중 하나는 저사양 컴퓨터에서도 너끈히 쓸 수 있으며, 만약 텍 컴파일이 힘들 정도로 저사양이라고 해도[12] 일단 문서는 텍스트 편집기에서 편집만 하고 다른 컴퓨터로 옮겨서 컴파일 하는 방법도 있다. 하지만 텍스트 편집기를 쓸 때에는 따로 커맨드라인 프롬프트를 띄워서 컴파일을 하기 때문에 좀 불편한 면이 있다. 그 때문에 TeX에 특화된 하이라이팅 기능이나 명령어 제안 및 자동 완성, 컴파일 및 결과로 나오는 PDF[13] 보기 기능 과 같은 것들을 제공한다.
널리 쓰이는 편집기로는 텍라이브에 들어 있는 TeXworks, TeX Maker, TeX Studio 같은 것들이 있으며 이들은 윈도우, 맥, 리눅스까지 멀티 플랫폼을 지원한다. WinEdt, EmEditor 같은 범용 텍스트 편집기도 자체 지원 또는 플러그인 기능을 사용하면 상당히 편리하게 TeX 편집을 할 수 있다. 비주얼 스튜디오 코드도 TeX Workshop 플러그인 설치로 상당히 뛰어난 TeX 편집 지원을 한다. 맥에서는 맥텍에 들어가 있는 TeX Shop을 많이 쓰는 편.
한글 사용
도널드 카누스 교수가 TeX을 만들었을 때에는 아직 유니코드라는 개념도 없었고, 라틴 문자 이외에 다른 문자를 사용하는 언어권에 대해서는 거의 생각하지 않았던 시대다. 그래서 한 글자가 먹는 공간이 1 바이트, 즉 256 글자까지만 수용할 수 있었다. 때문에 한글만이 아니라 다른 문자권 사용자들은 TeX 사용에 많은 어려움을 겪었다. 이를 극복하기 위한 시도가 여러 가지 있었는데, 초창기에 나왔던 HLaTeXp나 HLaTeXn, 한TeX과 같은 것들이 개발되었다. 이 당시의 극복 방법은 한글 글자들을 256 글자씩 tfm 파일에 쪼개서 넣은 다음, 컴파일을 할 때에는 계속해서 글꼴을 바꿔가는 식으로 조판을 했다. 당시에는 조판된 DVI 파일에 텍스트가 보존되는 문제가 별 이슈가 아니었기 때문에 TeX에서 한글을 사용할 수 있다는 것만으로도 상당한 인기를 끌었다.
하지만 유니코드가 대세가 되면서부터는 과거와 같은 방식은 점점 시대에 뒤떨어진 것이 되었고, 그에 따라서 유니코드를 수용하려는 노력들이 있었다. 한국에서 만들어진 건 아니지만 일단 유니코드를 기반으로 한 TeX 엔진인 오메가가 국제 프로젝트로 만들어지기 시작했고 이후 유니코드 기반 TeX이 대세가 되었다. 또한 PDFTeX이 나오면서 출력 파일의 대세는 DVI에서 PDF로 옮겨 갔다. 이러한 변화의 과정 속에서 나온 것이 유니코드 기반으로 제대로 한글 조판을 할 수 있는 ko.TeX. 이후 트루타입과 오픈타입을 더욱 제대로 사용할 수 있는 XeTeX과 LuaTeX이 등장하면서 ko.TeX도 여기에 맞게 진화해 나갔다. 이제는 PDF에서 정확한 텍스트 추출, 한글 PDF 북마크를 비롯한 온갖 고급 기능까지 제공하면서 한글 구현에 거의 제한이 없는 수준까지 발전했고, 글꼴만 있으면 옛한글 조판도 가능하다. 심지어 한글의 자소별로 다른 색깔을 지정하는 것과 같은 초 사기급 조판까지도 가능한 수준까지 발전했다. 이제는 한글 처리의 세밀함이라는 면에서는 웬만한 워드프로세서나 전자출판 프로그램도 씹어먹을 수 있는 수준으로까지 발전했다.
각주
- ↑ 하지만 TeX이 없었다면 복잡한 수식이 들어간 논문을 작성하기 위해 훨씬 더 많은 시간과 노력을 소모했을 것이므로 사실 적이라기보다는 오히려 축복에 가깝다. 논문을 쓸 때에는 수식 부분 말고는 외워야 할 명령어도 별로 없고 논문 저자에게는 아주 직관적인 명령어들이 많다 보니 익숙해지고 특화된 편집기의 도움을 받으면 논문 쓰기에는 편리하다.
- ↑ 성인 Knuth를 어떻게 발음 혹은 표기할 것이냐를 두고 '커누스', '누스' 등등 여러 가지 설이 있는데, 카누스 교수의 웹사이트에 가보면 직접 FAQ에 "How do you pronounce your last name?" 즉, '성을 어떻게 발음해야 하나요?'의 답으로 'Ka-NOOTH', 즉 카누스라고 밝혀 두었다.
- ↑ 컴퓨터 과학계에서는 정말로 손꼽히는 알고리즘 분야의 명저다.
- ↑ https://facebook.com/story.php?story_fbid=772758306244360&id=484288288424698
- ↑ Ditlea, S., "Rewriting the Bible in 0's and 1's", MIT Technology Review.
- ↑ 이와 비교되는 개념으로 TeX을 WYSIWYM(What You See Is What You Mean)이라고 부른다. 즉 '당신이 보는 것이 당신이 의미하는 바다'란 뜻. 문서를 만드는 사람은 의미 위주로 문서를 만들면 TeX이 알아서 예쁘게 만들어 준다는 얘기다.
그러나 정말 의미에만 신경 써서 만들다 보면 결과물이 별로 안 예쁘다는 것은 함정. - ↑ 초고급 사용자들은 어떻게든 하긴 하지만 굳이 그럴 필요는 없고, TeX의 철학에도 맞지 않는다
- ↑ 인터넷의 월드 와이드 웹(World Wide Web)과는 전혀 관계 없다.
일단 그때는 인터넷이 없었잖아. - ↑ 운영체제의 인터페이스도 그래픽 기반이 초보자도 쉽게 사용할 수 있지만 많은 작업을 해야 할 때에는 주요한 명령어 사용 방법을 어느 정도 알고 있을 경우 오히려 명령어 기반이 훨씬 빠르다. 일단 그래픽 기반 운영체제는 마우스와 키보드를 왔다갔다 해야 하고 마우스로 메뉴나 아이콘을 찾아 클릭하거나 하는 동작들이 시간을 많이 잡아먹는다. 명령어 기반이라면 명령어를 알고 있으면 키보드 타자로 간단히 끝나므로 속도가 훨씬 빠르다. 리눅스와 같이 서버에서 많이 쓰이는 운영체제는 bash와 같은 명령행 쉘을 많이 쓴다.
- ↑ 전자출판에 맥을 쓰던 초창기에도 포스트스크립트 외곽선 글꼴은 프린터에 따로 심어놓고, 화면용으로는 비트맵 글꼴을 사용했다.
- ↑ 단, XeTeX은 DVI는 지원하지 않고 결과물을 무조건 PDF로 뽑아야 한다. 어차피 요즈음은 DVI를 쓰는 사람도 없으니 문제될 일은 없다.
- ↑ 이 정도 컴퓨터라면 다른 어떤 작업도 힘들 정도로 똥컴이라고 봐야 한다.
- ↑ 예전에는 DVI였지만 지금은 PDF가 대세라 상당수가 기본으로는 PDF 프리뷰 기능만 제공한다.