제 I 부 개관 1
제 1 장 TEX 이란무엇인가? 1.1 TEX 의탄생 TEX 은수학자겸전산과학자로유명한 Stanford 대학의 Donald E. Knuth 교수에의해서만들어졌다. Knuth 교수의역작인 The Art of Computer Programming의부산물로 TEX 이나오게되었다. TEX 의탄생에관한이야기를 Knuth 교수의말로들어보자. 왜나는 1977년에 TEX 을만들기시작했는가? 실제로전체적인일은 The Art of Computer Programming 책과연관되어이미오래전에시작되었다. 그당시나는 Volume 2의 2판을준비했었는데, 1판을출판한이후로인쇄기술이급격하게변하여출판사로부터형편없는교정판을받게되었다. 교정판은납으로식자 (typesetting) 하는대신에사진식자 (phototypesetting) 로되어있고사람손대신에컴퓨터의도움을받아제작되었다. 그결과는수식에서간격이엉망이었고폰트는원본에비해서형편없었다. 나는이것에크게실망하여어떻게해야될지를몰랐었다. Addison-Wesley 사는다시납으로식자해주겠다고제안했으나나는그러한구식방법은머지않아곧사라질것을알고있었고내가받은교정판처럼보이는책을쓰고싶지는않았다. 그리고... 우리는남가주 (southern california) 에서새로운기계로만든 Pat Winston의 Arti cial Intelligence의교정판을받아보았는데, 모든것이고해상도래스터에근거를하고... 디지털글자는나의교정본의글자보다훨씬보기좋았고... Winston의교정본을보고나서일주일후에나는모든것을취소하고디지탈인쇄에전념하기로결심했다. 2
1977년에이렇게시작된이후로 TEX 연구프로젝트는두가지목표를갖추고추진되었다. 첫번째목표는질 (quality) 이었다. 우리는단순히좋은것이상의최상의문서를만들기를원했다.... 1977년도당시만해도매우매력적인문서를만들수있는시스템이몇개가있었다. 나의목표는거기에서더나아가인쇄된문서가얻을수있는최고의질을얻는것이었다. 약 2년간의작업끝에, 텍스트포맷팅에관한한이정도수준의질을얻는것은그리어렵지않다는것이밝혀졌다. 예를들어, 우리는 TEX 으로 Times 잡지를원래의 Times 잡지보다보기좋게만들수있다는것을증명했다. 그러나글자를만들어내는것이우리가예상한것보다는훨씬어렵다는것을알게되었다. 내가좋아하기시작한글자형을만드는데 7년이걸리게되었다. 두번째목표는보존성 (archival) 이었다. 가능한한인쇄기술의변화에크게의존하지않는독립적인시스템을만드는데목표가있었다. 다음세대의인쇄장비가도래해도새로이모든문제를해결하는대신에이전에이룩해놓은질을유지하고싶었다. 나는 100년이지나도계속사용가능한무엇인가를디자인하고자했다. 다른말로하면, 만일책의사양이현재의상태로저장된다해도 2086년에우리의후손들이만들어도지금상태의것과똑같은책을만들수있게하는것이나의목표였다.... 1.2 TEX 의동작원리 일반적으로텍스트처리기 (processor) 는크게두가지로나눌수있다. WYSIWYG 시스템인쇄될문서의모양이화면에그대로나타나고입력을하면그변화가즉시화면에반영되어나타난다. 마크업 (markup) 시스템텍스트와포맷팅명령어를섞어입력하는데그효과를바로보지는못한다. 프로그램을수행하여입력된내용을처리하면결과이미지를화면이나프린터로볼수있다. 컴퓨터용어로표현하면마크업시스템은입력한소스화일을컴파일해야한다. WYSIWYG 시스템 1 은바로피드백이되므로분명히장점이있으나, 아주정확하지는않다. 예를들어, WYSIWYG 시스템으로문서를만들어 300 dpi(dots per inch) 프린터로인쇄하여보면적당히좋아보이나고해상도로식자를하면더이상좋게만보이지는않는다. 인간의눈은매우민감하다. 마치오케스트라연주시누군가가작은실수를하면정확히무엇이잘못되었는지지적을할수 1 What you see is what you get. 화면과프린터가같은해상도, 서체그리고페이지언어를사용하면 100% WYSIWYG이다. 3
는없으나귀에거슬리는것과마찬가지로잘못인쇄된문서는눈에거슬리게 된다. 실제로아름답고, 알아보기쉽고, 그리고편히읽을수있는문서를만들기위해서는 1 1000 인치내에서정확히문서의모든요소들이위치해야한다. 이러한유형의작업에는즉시피드백되는것이그리장점이되지않는다. 간격, 정렬등의세밀한조정은저해상도화면을통해서하기에는너무힘이들고손 으로일일이작업하는것이불가능한경우도있다. 이러한이유로인해전문적으로식자를하는곳에서는마크업시스템이환 영을받는다. 마크업시스템을사용하면정밀한작업을명령어로처리하고자 동화시킬수있다. 그러나이러한접근방식은결과를바로볼수가없기때문 에초보자에게는매력적으로보이지않게된다. 따라서 WYSIWYG 입력기가 포함된마크업시스템을사용하면양쪽의장점을모두얻을수있을것이다. TEX 은마크업시스템에속한다. 즉, 사용자는문서의내용과필요한명령 어가들어간소스화일을 TEX 엔진을이용하여컴파일하여인쇄를하거나화면 을통해서결과를보게된다. 컴파일된결과로나온화일을 DVI(DeVice Independent) 화일이라고하는데화면이나프린터의해상도에관계없이드라이버 만있으면결과를볼수있다. 1.3 TEX 의장점과단점 무엇보다도 TEX 의장점은높은질의문서 2 를만들어낸다. TEX 이다른문서시 스템에비해텍스트처리에서특히뛰어난몇가지예를보면다음과같다. ² 합자 (ligature) 3 를자동으로처리한다. ² 커닝 (kerning) 4 을자동으로처리한다. ² 정판 (Justi cation) 을하는복잡한체계를갖고있어필요하면하이프네 이션 5 을한다. 하이프네이션규칙은사용자가원한다면추가나변경이용 이하여여러언어에서사용가능하다. ² 수학공식내의여러요소들사이의간격은최고의수식식자공들이사용 하는전통적인규칙에따라 TEX 에의해서결정되기때문에수식이아름 답게처리된다. 잘씌어진 TEX 문서는매크로에의해서포맷되어각요소들이어떻게식 자되는지지정된다. 매크로는기본적인포맷팅명령어들로만든짧은프로그 2 특히수식의경우 3 영어의,, 등과같이여러글자가합쳐져하나의글자로처리된다. 전통적으로합자는시각적으로보기좋은결과를얻기위해필요하다. 4 글자의모양이서로가능하면가깝게위치하게하여글자사이의간격이균등하게보이게한 다. 5 단어의중간에하이픈 (-) 을삽입하여줄사이에서끊어지게한다. 4
램으로서일일이세세한명령어를사용하는번거로움을덜어준다. 예를들어, \footnote 매크로는텍스트를페이지의바닥으로이동시키거나줄위에작은번호를매기는걱정을하지않아도자동으로주석처리가되게한다. 매크로들은 \indent 혹은 \par와같은기본명령어 (primitive) 로씌어져 TEX 의기본적인어휘가된다. 매크로덕분에 TEX 은대단히다양한용도의기능을갖게되었다. 예를들어, 문서의외관을고치고자하면텍스트를건드리지도않고단순히특정매크로의정의만고쳐도충분하다. 온라인문서의코딩에관한표준을정의하는작업이현재진행중인데, TEX 은고급 (high-level) 문서표현언어 (document description language) 로사용될수있기때문에쉽게이표준에들어갈것이다. TEX 은이동이가능 (portable) 하다. 텍스트와매크로를포함한 TEX 으로씌어진문서는인쇄가능한 ASCII 세트로코드될수있다. 따라서모뎀이나 LAN 같은통신수단을이용하여아무리복잡한수식이나레이아우트 (layout) 가포함된문서라도세계어느곳에서도서로주고받을수있다. 예를들면, 미국수학협회 (Americal Mathmatical Society) 에서보유하고있는데이타베이스는 TEX 에근거를하여세상에출판된모든수학논문의요약 (abstract) 들을포함하고있다. 따라서원하는논문의요약을데이타베이스에서 TEX 으로포맷팅된형태로얻을수있다. TEX 은특정컴퓨터의특성에의존하지도않고기계와는독립적인방법으로계산을하기때문에여러컴퓨터들사이에서이동가능하다. 즉, Macintosh, PC, UNIX 워크스테이션, IBM 대형컴퓨터, 심지어는 Cray 등에서각각만든 TEX 문서는모두모양이같게된다. 따라서여러컴퓨터시스템사이에서정보교환의수단으로 TEX 은매우적합한도구가된다. TEX 은문서의이미지를직접만들어내는대신에단지페이지의내용을묘사한다. 문서를인쇄하기위해서는 TEX 의출력 6 을받아이를드라이버프로그램으로원하는프린터나화면에출력해야한다. 이러한이유로인해 TEX 은현재의프린터기술과도독립적이된다. 만약프린터기술이변한다면문서의내용을바꿀필요없이단지필요한드라이버프로그램만만들면된다. TEX 은단순한텍스트프로세서이상이다! 프로그램언어이다! 사용자가원하는다양한기능을 TEX 의변수를변경하거나새로운매크로를정의함으로써추가할수있다. 경험이많아지면, 새로운스타일을정의하고특정목적을위한복잡한매크로를만들수도있고이미이전에남들이만들어놓은스타일이나매크로를활용할수도있다. 물론이러한일들이쉽지만은않지만 TUG(TEXUser Group) 을통해서많은정보를얻을수있으며네트워크를통해 public domain에나와있는정보나데이타를활용하면많은도움이될것이다. TEX 은또한확장가능하다! 언급했듯이 Knuth는 TEX 을만들당시에미래를바라보았었다. 이러한이유로그는 TEX 을양파와같은층구조로만들었다. 6 DVI 화일 5
중앙에는 TEX 의 300개의기본명령어 (primitive) 로되어있는데이름그대로원시적이어서실제로는기본명령어를바로사용하는경우는적다. 그다음층은이보다고급명령어들혹은매크로들로서 TEX 의포맷화일에정의되어있다. 가장보통사용되는포맷화일은 plain.tex 으로약 600개 7 의명령어들이정의되어있다. 기본명령어와확장명령어의조합을 PlainTEX 이라고일반적으로불리운다. 이위에확장을한층을패키지라고하는데대표적으로는 L A TEX, AMSTEX 등이있다. 이중에 L A TEX 이가장알려져있으며가장완벽하다. 따라서대부분의 TEX 사용자는실제로는 L A TEX 을쓰고있다. TEX 은매우잘디버그 (debug) 되어있다. 물론, 다른프로그램들과마찬가지로결코버그 (bug) 가없지는않다. 그러나새로운버그가보고될때마다 Knuth가상을준덕 (?) 에전세계적으로버그사냥꾼들이몰려들어극히유별나거나즉시발생할사유가없는버그들만남아있다. 만일지금이라도버그를발견하여보고하면상과함께 TUGboat에정기적으로출판되는공식적인 TEX 버그목록에실리게된다. TEX 은 public domain에나와있다. Knuth는 TEX 을세상에공짜로제공했다. TEX 의소스프로그램은쉽게복사할수있다. 만일 TEX 을산다면, 이는특정기계및환경에설치된드라이버, 보기프로그램 (previewer), 텍스트에디터등에대해서지불하게되는것이다. 완벽한것은없다. TEX 의단점의대부분은확장혹은보조프로그램을통 해서극복될수있다. 단점중에는특정설치환경에기인하지 TEX 의본질적인 단점이아닌것도있꼬, TEX 의보급초기에제기되어이미여러방법으로해결 된것 8 도있다. TEX 프로그래밍은난해하여습득하는데시간이걸린다. 물론주어진명령 어나매크로를사용하는일반사용자에게는이것이문제가되지는않는다. 그 러나새로운매크로나스타일을디자인하는것은초보자에게적합한과제가아 니다. TEX 은제한된메모리를갖고있다. 초기에설치된 TEX 들은메모리의한 계때문에사용할수있는매크로나서체의숫자가제한되었으나컴퓨터 OS (Operating System) 의발전으로이를극복한환경 9 들이계속나오고있다. TEX 은대화형식 (interactive) 이아니다. 이점이 TEX 의최대단점으로일반 적으로지적되고있다. TEX 은본질적으로마크업시스템이기때문에이문제 를완전히해결할수는없지만사용하기쉬운텍스트에디터, 보기프로그램, 프린터드라이버등이잘합해져사용자가마크업시스템에서얻기힘든피드 백을쉽고빠르게받을수있다면극복될수있다. 7 이숫자에놀라지는마라. 왜냐하면이중에알아야할것은 100 개도안되며그것도암기하기 쉬운이름으로정의되어있다. 8 서체추가, 그래픽처리, 다양한레이아우트 9 X-Window, PC Windows, Mac OS 6
1.4 누가 TEX 을사용하는가? Knuth가 TEX 을만든첫번째이유는자기자신이필요했기때문이다. 즉, Knuth와같이학문을하거나연구를하는사람들이출판을하는경우 TEX 을사용하는것이최선의선택이된다. Knuth는자신이필요한것이무엇인지를알고있었고그것을 TEX 이충실하게실현하도록만들었다. 따라서 TEX 은전세계적으로학계나연구기관에서출판혹은정보교환용으로표준으로사용되고있으며, 문서데이타베이스의구축이나온라인문서의기록 (archive) 에활용되고있다. 분야에관계없이, 글을쓰는사람은 TEX 의사용을한번고려해보아야한다. 글을쓰는사람은글의모양 10 보다는내용에신경을써야한다. 컴퓨터의발달과이에따른보급의확장으로대부분의글을쓰는사람들은워드프로세서를사용하여글을입력한다. 이렇게입력된글은직접프린터로인쇄하거나출판사에의뢰하여식자가되어출판이된다. 이때글의모양은글을쓰는사람에의해서결정되는경우가많고심지어는글의모양을스스로책임져야하는경우도있다. 글을쓰는사람들은실제로전문식자공이아니기때문에일기쉽고아름다운문서를만드는데어려움이있으며이때문에많은노력을내용과는상관없는데기울이게된다. 만일원하는모양이복잡한레이아우트도아니고반복하여계속사용하는경우에 TEX 을사용하면글의내용만신경을쓰면되니까훨씬더좋은글을쓰게된다. 책의출판은다른문서의출판과는다른점들이있다. 1. 내용이길기때문에하나의화일로입력이불가능한경우가많으며여러사람이입력을해야되는경우도있어책의전반에걸쳐모양의일관성 (consistency) 을유지하기어렵다. 2. 새로운내용의추가나변경으로전체적인변화를요구하는경우 11 가많다. 3. 페이지내용에반복되는디자인요소들이많다. 위에열거된문제점들은 TEX 의사용을통해해결될수있기때문에책과같이긴문서의출판에는 TEX 의사용이적절하다. TEX 의장점중의하나는수식처리가쉽고결과가아름답게나온다는점이다. 이때문에수식을많이사용하는이공계와과학계통의출판물은 TEX 을많이사용하고있다. 외국어 12 가포함된문서의작성시도 TEX 의사용이불가피하다. 10 레이아우트, 서체의지정 etc. 11 색인, 목차등의페이지번호, 수식번호, 참고문헌, 주석 etc. 12 독일어, 불어, 희랍어, 라틴어, 스페인어 etc. 7