한국어텍 ko.tex v0.1.0 사용설명서 은광희 김도현 김강수 2007 년 7 월

Similar documents
2 C freetype ttf2tfm 18 D ttf.sh 19 E FD 20

The Asian Journal of TEX, Volume 1, No. 2, October 2007 Article revision 2007/10/31 KTS THE KOREAN TEX SOCIETY SINCE 2007 Oblivoir 를이용한문서작성 Document P

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

untitled

hl A TEXp 의한글폰트와 xpttf 폰트패키지 nobody 2006 년 4 월 19 일 1 개요 hl A TEXp의한글글꼴을기억하시는지? 모두서른한개의글꼴을제공하던 hl A TEXp는, 비록 pk 글꼴로만일반에공개하였지만오히려 HL A TEX 의완성형글꼴보다더좋아

한글 L 읁 TEX 에서임의의트루타입한글폰트사용하기 김강수 주철 윲윰윰윷년윷월윶일 일러두기 이글은괲괰괰괳년에썼던굜굈굌 A 굔굅굘에서임의의트루타입글꼴사용하기괢라는괬김강수 주철공저의글을고쳐쓴것이다괮한글트루타입폰트를굌 A 굔굅굘에서사용할수있게된과정은이전의글에정리되어있다괮이글

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

<B3EDB9AEC0DBBCBAB9FD2E687770>

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

초간단 xoblivoir under X E TEX 사용법 x-ob-liv-oir 2008 년 9 월 8 일 12 월 3 일 ( 열번째고쳐씀 ) 요약 xoblivoir는 LuaLATEX 과 X LATEX 에서사용할수있는 oblivoir이다. 이문서는 E X LATEX 에

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

수식모드수식의표현법 수학식표현 조남운 조남운 수학식표현

outline_표준연3파트.indd

HL A T E X PDF

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

초간단 oblivoir v2.1 사용법 x-ob-liv-oir 2015 년 4 월 요약 oblivoir 클래스 2.0 버전은그동안별도의브랜치로개발되어오던 xoblivoir 와 oblivoir 를통합하여완전히동일한클래스가되었다. 이문서는 oblivoir 즉 xoblivo

SIGIL 완벽입문

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

Windows 10 General Announcement v1.0-KO

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

C# Programming Guide - Types

152*220

제 1 절 복습 \usepackage{ g r a p h i c x }... \ i n c l u d e g r a p h i c s [ width =0.9\ textwidth ] { b e a r. j p g } (a) includegraphics 사용의일반적인유형

현대적 레이텍 활용 Modern Coding Conventions

View Licenses and Services (customer)

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < >

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

1809_2018-BESPINGLOBAL_Design Guidelines_out

Microsoft PowerPoint - chap06-2pointer.ppt

ISP and CodeVisionAVR C Compiler.hwp

슬라이드 1

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Windows Server 2012

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

참을성 없는 초보자들을 위한 해법 2 1 참을성 없는 초보자들을 위한 해법 이 글의 제목에 마음이 끌렸다면 당신은 분명 매우 절박한 처지에 있을 것이다. 하지만 당신은 참을성이 없기 때문에 시간이 없다고 변명하겠지만 이 책에서 만족할 만한 아무런 해법도 얻지 못할 수

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

PowerPoint Presentation

* pb61۲õðÀÚÀ̳ʸ

한글 TEX 사용기 노바디 2006 년 3 월 2 일 차례 1 글머리에 기원 MiKTEX 의발견....

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

PowerPoint Template


UI TASK & KEY EVENT

글자가족 type family AG 안상수체 2012 ExtraLight AG안상수체2012 Light AG안상수체2012 Medium AG안상수체2012 Bold AG안상수체2012 ExtraBlod

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Chapter 05. 파일접근권한관리하기

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

연구노트

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Microsoft Word - Armjtag_문서1.doc

Microsoft PowerPoint - kandroid_for_HI-CNU.ppt


<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

OCW_C언어 기초

Overleaf 에서 L A TEX 체험 nanim 2015 년 7 월 9 일 차례 Overleaf을통한 L A TEX 체험 사이트접속과사용자등록 프

JDK이클립스

Tcl의 문법

MySQL-.. 1

벤처연구사업(전동휠체어) 평가

adfasdfasfdasfasfadf

금오공대 컴퓨터공학전공 강의자료

041~084 ¹®È�Çö»óÀбâ

The Asian Journal of TEX, Volume 1, No. 2, October 2007 Article revision 2007/10/31 KTS THE KOREAN TEX SOCIETY SINCE 2007 한글라텍에서조사이형태교체의자동화에관하여 On the

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과


소개 Mac OS X (10.9, 10.10, 10.11, 10.12) 와 OKI 프린터호환성 Mac OS X 를사용하는 PC 에 OKI 프린터및복합기 (MFP) 제품을연결하여사용할때, 최고의성능을발휘할수있도록하는것이 OKI 의목 표입니다. 아래의문서는 OKI 프린터및

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

자연언어처리

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

31. 을전개한식에서 의계수는? 를전개한식이 일 때, 의값은? 을전개했을때, 의계수와상수항의합을구하면? 을전개했을때, 의 계수는? 를전개했을때, 상수항을 구하여라. 37

Microsoft PowerPoint - lect13-LaTeX사용법.ppt

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

PowerPoint 프레젠테이션

Windows 8에서 BioStar 1 설치하기

TEX 과그언저리 Karnes 2006 년 9 월 요약 이글은 2006년 9월 17일 KDLP F/OSS 컨퍼런스의부대행사로준비하는 KTUG BoF의토론자료로작성하는것이다. TEX 에관심이있거나언젠가한번쯤 TEX 을써보았던기억이있는분들에게최근 TEX 시스템자체의변화와발

gnu-lee-oop-kor-lec06-3-chap7

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

로거 자료실

PowerPoint Presentation

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Chapter ...

Microsoft Word - PLC제어응용-2차시.doc

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

PowerPoint 프레젠테이션

MPAL-VI-Pneu_BES_V_ a_ k1

<B3EDB4DC28B1E8BCAEC7F6292E687770>

FGB-P 학번수학과권혁준 2008 년 5 월 19 일 Lemma 1 p 를 C([0, 1]) 에속하는음수가되지않는함수라하자. 이때 y C 2 (0, 1) C([0, 1]) 가미분방정식 y (t) + p(t)y(t) = 0, t (0, 1), y(0)

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint Presentation

전자회로 실험

16<C624><D22C><ACFC><D0D0> <ACE0><B4F1><BB3C><B9AC><2160>_<BCF8><CC45>.pdf

STARFIELD BRAND IDENTITY DESIGN GUIDELINES 2

국어 순화의 역사와 전망



Transcription:

한국어텍 ko.tex v0.1.0 사용설명서 은광희 김도현 김강수 2007 년 7 월

일러두기 ko.tex 은 HL A TEX 과 hangul-ucs 가결합하여탄생한, 명실상부한 한국어 ( 한글 ) 텍시 스템 입니다. 한글라텍 (HL A TEX) 은 1990 년대이후텍에서의한글사용에 사 실 상 표 준이었으며, hangul-ucs 는한글라텍의현저한영향아래서성장한유니코드한글 텍매크로였던것입니다. 이제한국텍학회 (KTS) 의주도아래, 한글라텍과 hangul-ucs 가하나의매크로 시스템으로통합된것을매우기쁘게생각합니다. 이와더불어더욱알차고유용한 사용자안내서를작성하기위해많은노력을하였습니다. 한글라텍의표준문서였던 한글라텍길잡이 ( 은광희 ) 는아마도가장많이 읽힌한글로된라텍관련문서중하나가아닐까합니다. 이문서는단순히한글 사용법을넘어서서, 텍에입문하는데있어서도많은도움을주었습니다. 이문서는한글라텍길잡이를바탕으로 ko.tex 에맞도록개정하여쓴것입니다. 감사의말과머리말은거의그대로보존하였으며, ko.tex 이등장하는경과를설명하 는소절을하나추가하는정도에그쳤습니다. 다만문체의일치를유지하기위하여 이일러두기와감사의말을제외하고는경어체를평어체로고쳐썼습니다. 또한사 용법에있어서한글라텍이후의여러가지발전사항을새로운편제로서술하려 하였습니다. 지나치게기술적인서술을피하고실제사용자에게구체적인지침을 제공하는데이문서의목적이있습니다. 이문서가 ko.tex 을사용하는분에게조금이라도도움이되기를바랍니다. 뜻하 지않은잘못된내용이나실수, 빠진내용, 오식을바로잡아주시면더나은사용자 안내서를만드는데크게도움이될것입니다. 은광희김도현김강수 ( 識 ) 1

감사의말 라텍은쪽판짜기에탁월한기능을가진문서식자체계 (document typesetting system) 입니다. 한글라텍은이런우수한문서식자체계로한글도쓸수있도록하자는취지에서만들어진라텍꾸러미입니다. 라텍은사용에아무런제한이없이보급되고한글라텍또한한글을쓰고자하는모든이에게별다른조건없이유용한도구로제공됩니다. 이안내서에서다음과같은정보를얻을수있습니다. 한글라텍역사. 한글라텍설치. 한글라텍사용. 우리말글꼴선택. 이글이한글라텍을사용하는분들에게조그마하나마도움이될수있기를바랍니다. 한글라텍을발표하면서한글글자체작성에도움을주신고려대학교언어과학과李基用교수님, 문화관광부 1 포스트스크립트글자체를제공하신연세대학교국문과洪允杓교수님, 한글을보는눈을깨우쳐주신충남대학교의노용균교수님, 한글라텍의문제점과개선점을지적하고도와주신원세연님과이천우님, 우리말글자체선택모듬명령 (macro) 을제안 수정 실험해주신이형석님, 항상컴퓨터에서의한글사용에대해전반적으로도움을주시는신정식님, KTUG을운영하시는조진환님, 한글글자체를비롯하여다방면에서활동하시는박원규님, 한글라텍윈도우즈포팅에노력을아끼지않으시는김강수님그리고한글라텍의발전에기여하신많은여러분께감사의마음을전합니다. 특히李基用교수님은한글라텍의발전을위하여 2GB 굳은저장판 (hard disk) 을 2개기증하셨습니다. 한글라텍은이를바탕으로새로운완성형글자체와 UHC 글자체들을만들수있었습니다. 한글라텍을완성해가면서李基用교수님께감사합니다. 殷光熙. 1 이전의문화체육부 2

차례 제 I 편 총론 8 제 1 장 텍, 라텍, 한글라텍 9 제 1 절텍에대해...................................... 9 제 2 절라텍에대해.................................... 9 제 3 절한글라텍에대해................................. 10 제 4 절 Omega(Ω) 에대해................................ 12 제 5 절유니코드를이용한실험들 (2002 2006).................. 12 제 6 절 ko.tex 의탄생 (2007).............................. 14 제 2 장 설치 16 제 1 절 TEX 배포판..................................... 16 제 2 절 ϵ-tex......................................... 17 제 3 절디렉터리구조 (TDS)............................... 17 제 4 절일반적인설치지침............................... 19 4.1 다운로드..................................... 19 4.2 매크로와유틸리티............................... 19 4.3 글자체의설치.................................. 20 제 5 절각플랫폼별설치패키지............................ 21 제 6 절 CVS 개발버전................................... 21 제 3 장 사용 22 제 1 절기본사용법.................................... 23 제 2 절 pdf 문서작성을위한설정........................... 24 2.1 ko.tex/utf 문서................................. 24 2.2 ko.tex/euc 문서................................. 25 2.3 요약........................................ 26 제 3 절폰트에대하여................................... 27 3.1 기본글꼴.................................... 27 3.2 추가글꼴.................................... 28 3

3.3 은글꼴트루타입폰트세트........................ 29 3.4 타자글꼴에관한주석............................ 29 3.5 요약........................................ 29 3.6 폰트의라이센스................................ 30 제 4 절 utf 버전과 euc 버전의관계.......................... 30 제 II 편 ko.tex/utf 32 제 4 장 유니코드문서작성하기 33 제 1 절개관......................................... 33 제 2 절첫번째문서.................................... 33 2.1 간단한문서작성............................... 33 2.2 컴파일....................................... 34 2.3 영문글꼴.................................... 34 2.4 옵션들....................................... 35 2.5 부가패키지들.................................. 35 제 3 절글꼴사용과선택................................. 36 3.1 기본글꼴을변경하는방법......................... 37 3.2 일시적으로폰트를변경하는방법..................... 39 3.3 사용자폰트를활용하는방법........................ 40 3.4 엄격한문자체크............................... 41 제 4 절몇가지한글화.................................. 41 4.1 기호문자처리.................................. 41 4.2 한글문서서식................................. 43 4.3 장절명령..................................... 43 4.4 강조........................................ 43 4.5 자간, 행간.................................... 46 4.6 장평........................................ 46 4.7 nonfrench spacing............................... 47 4.8 각주........................................ 48 4.9 한글식카운터.................................. 48 4.10 자동조사명령.................................. 49 4.11 enumerate의항목머리........................... 50 제 5 절미세조정...................................... 52 4

5.1 수식과의간격.................................. 52 5.2 한글폰트스펙.................................. 52 5.3 Micro Typography............................... 54 제 6 절행나눔........................................ 56 6.1 영문자와숫자뒤의한글개행....................... 56 6.2 여는괄호앞의행자름............................ 56 6.3 이른바 고아 문제.............................. 57 제 7 절한글 PDF 만들기................................. 58 7.1 하이퍼링크.................................... 58 7.2 폰트문제.................................... 59 7.3 pdf 한글텍스트의검색과추출...................... 59 7.4 한글책갈피................................... 60 제 8 절찾아보기와참고문헌............................... 60 제 9 절옛한글구현.................................... 61 제 10 절다른패키지및클래스와의호환성..................... 62 10.1 AMS-L A TEX 클래스................................ 62 10.2 beamer 지원................................... 62 10.3 prosper/powerdot 지원............................ 63 제 11 절일본어와중국어문단.............................. 63 제 5 장 memhangul 과 oblivoir 66 제 1 절소개......................................... 66 제 2 절 memhangul..................................... 66 제 3 절 oblivoir........................................ 67 3.1 간단한문서만들기.............................. 67 3.2 용지, 여백, trim mark............................. 68 3.3 글꼴선택.................................... 68 3.4 기타........................................ 68 제 III 편 ko.tex/euc 69 제 6 장 ko.tex/euc의의의와사용법 70 제 1 절 ko.tex/euc의의의................................. 70 1.1 문자의범위................................... 70 5

1.2 ko.tex/euc의한계............................... 70 1.3 하위호환성................................... 71 1.4 사용설명서에관하여............................. 71 제 2 절 ko.tex/euc의사용설명............................. 71 2.1 한글문서의틀................................. 71 2.2 문서의모양새설정.............................. 72 2.3 글자체선택................................... 74 2.4 우리말숫자모듬명령............................ 83 2.5 우리말각주판짜기.............................. 84 2.6 조사이형태, 매개모음, 지정사탈락................... 85 2.7 우리말이름................................... 88 2.8 그외의우리말화................................ 89 제 3 절한글화........................................ 90 제 IV 편 한글문서작성 92 제 7 장 한글문서서식 93 제 1 절각주형식...................................... 93 1.1 hangulfn의각주판짜기........................... 93 1.2 각주문단모양관련............................. 95 제 2 절자간, 행간, 단어간격............................... 96 2.1 자간........................................ 96 2.2 단어간격..................................... 97 2.3 행간........................................ 98 제 3 절 ko.tex/euc에서의밑줄.............................. 99 제 4 절장절표제....................................... 100 제 5 절문장부호....................................... 100 5.1 우리말문장부호의사용법.......................... 100 5.2 문장부호에관련된문제........................... 104 제 8 장 색인과문헌목록 105 제 1 절 ko.tex/euc 의 hbibtex과 halpha........................ 105 1.1 우리말문헌인용............................... 105 1.2 참고문헌데이터베이스........................... 106 6

제 2 절색인......................................... 111 2.1 ko.tex/utf의색인처리............................ 111 2.2 ko.tex/euc의우리말색인처리....................... 111 제 9 장 한글트루타입폰트의사용 113 제 1 절 ttf2kotexfont 사용법............................. 113 제 2 절문서에서폰트설정하기............................. 114 제 3 절 pdf 문서제작을위한 pdfl A TEX 사용..................... 115 제 10 장 plaintex 과 ko.tex 116 제 1 절 kotexplain.tex................................... 116 제 2 절 hangulcweb.tex.................................. 117 제 11 장 html 제작 118 참고문헌 119 부록 124 부록 A 완성형한글문자................................. 124 부록 B 윈도우즈유니코드편집기............................ 127 부록 C 이문서에대하여................................. 129 부록 D 글꼴예문...................................... 130 부록 E 용어대조...................................... 134 7

제 I 편 총론 8

제 1 장 텍, 라텍, 한글라텍 제 1 절 텍에대해 텍 (TEX) 은 1 미국스탠퍼드대학전산학과의 Donald E. Knuth 교수가 1977년 5월에처음으로만들었고, 그해여름에 Michael F. Plass 씨와 Frank M. Liang 씨가지금의텍의전신을만드는공동작업을하였으며같은해말에서다음해초사이에 Knuth 교수가다시완성시킨문서식자체계이다. 텍은원래 SAIL 2 언어로쓰여졌으나 1979년초에는 Knuth 교수와 Luis Trapp Pardo에의해공동개발된 WEB 언어로전환시키는작업이시작되었고 1979년과 1980년에 Ignacio A. Zabala 씨가이를완성시켰다. 텍은 1979년후반기와 1980년전반기에걸쳐 Knuth 교수가더욱안정된프로그램으로정착시켰고그해 9월에 TEX82 버전 0으로발표되기시작했다. 그후많은사람들의조언을반영하여 1989년 9월에최종검토를거쳐발표된텍은현재, 전문적인자연과학문서를작성하는데가장좋은문서식자기로인정받고있다 ((Knuth, 1984) (Knuth, 1986) 을참고 ). 수학자이기도한 Knuth 교수는이문서식자체계를사용하여수학공식도자유자재로쓸수있도록했다. Knuth 교수는텍외에도 METAFONT 를개발하여텍문서를인쇄하는데필요한양질의글자체를만들어낼수있도록하였고이로써텍은출판서적을만드는데손색이없는문서식자체계로자리를잡게되었다. 제 2 절 라텍에대해 텍의식자기능은매우탁월하지만일반사용자의측면에서는프로그래머의사고 1 텍 은그리이스어 τεχ 에서유래된낱말이다. English words like technology stem from a Greek root beginning with the letters τεχ...; and this same Greek word means art as well as technology. Hence the name 텍, which is an uppercase form of τεχ. Insiders pronounce the χ of 텍 as Greek chi, not as an x, so that 텍 rhymes with the word blecchhh. It s the ch sound in Scottish words like loch or German words like ach; it s a Spanish j and a Russian kh. When you say it correctly to your computer, the terminal may become slightly moist. 2 Stanford Artificial Intelligence Language The TEXbook 에서발췌. 9

능력을요구하기때문에많은노력과경험으로텍의기능을이해하여야문서를작성할수있다. 예를들어사용자는글자체를스스로정의하고문장과문장사이의간격을넓혀주는등의일을일일이손으로처리해야했다. 그래서텍은전문적인프로그래머층에서나사용할수있었다. 그러나미국의전산과학자인 Leslie Lamport 는사용자와텍의사이를좁히는역할을할수있도록라텍 (L A TEX) 을개발하여쉽게문서를작성하게끔기여하였다 ((Lamport, 1985) 를참고 ). 그는일반적인문서모양새를텍의모듬명령 (macro) 으로정의함으로써, 프로그래밍의경험이없는사용자도쉽게문서를작성할수있도록하였다. 사용자는쓰고자하는글의전체적인윤곽에맞는양식을지정한후, 작성하는문서의내용에만집중하면원하는모양새의문서를작성할수있게되었다. 그리하여사용자는텍에대한전문지식이없어도짧은시간내에좋은문서를작성할수있게되었다. 세월이흐르면서라텍은전세계적으로많이보급되었고이에따라라텍이해내야하는과제의폭도넓어졌다. 그결과로라텍은근본적인바탕을바꾸고국제화되어야한다는여론이높아졌고 1992말부터는라텍버전 3 일감팀 (project team) 3 이구성되어새로운라텍버전 3의개발작업에착수하였다. 1994년 6월 1일을기해라텍버전 2ϵ 을공식적으로내놓은이팀은현재 (94년 11월 ) 깁기수준 (patchlevel) 4를발표하면서계속라텍버전 3을위해작업하고있다. Frank Mittelbach 씨와 Rainer Schöpf 씨는 (Scherber, 1994) 에서라텍버전 3 개발의목표를다음과같이설명하고있다. 라텍의사용범위를이전의자연과학분야에서벗어나, 각분야의문서모양새에도만족할수있는모양새파일을제공하고이런여러모양새를간단한방법으로사용자가선택할수있도록한다. 위와같은모양새파일을자세히설명함으로써사용자가이런기본적인문서모양새를바탕으로자신의독자적요구를쉽게이룰수있게한다. 제 3 절 한글라텍에대해 이렇게라텍이국제화되어가는동안한국 KAIST 전산학과에서는라텍으로한글 을쓸수있도록모듬명령을만들고한글글자체를준비하여 hlatex 을 ( 최우형, 3 Leslie Lamport, Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach, Chris Rowley, Rainer Schöpf: 이들은 (Mittelbach et al., 2004) 를출간하였는데이책의수입은그절반이라텍버 전 3 개발팀에게할당되어이팀을지원하게끔되어있다. 10

백윤주 ) 보급하였다. 4 (( 최우형, 1992) 를참고 ) hlatex은기존의라텍에한글글자체를추가하는 hfont.tex, 한글문서작성환경을정의하는 harticle.sty과 hreport.sty, hbook.sty 그리고한글 KS 완성형부호체계를텍의모듬명령으로변환해주는앞처리기 (preprocessor) htex으로구성되어있었다. 보급되는글자체의사용을제한받으면서출발한 hlatex은그런대로통신망을통해 KAIST 외부의일반에게퍼지게되었고 5, 이를바탕으로, 한자의사용을추가한 jhtex이 ( 殷光熙 ) 만들어지게되었다. 여기에는손쉽게구할수있는일본의간지글자체를 hlatex에덧붙여사용할수있도록하였고문서모양새도좀더한국적인것을사용할수있도록하였으며글자체가늘어남으로써불가피해진 NFSS의도입이이루어졌다. 6 이두프로그램은좀더나은, 하나의프로그램으로일반에게보급될수있고자한글라텍으로통합되었는데이로써한글라텍은다음과같이변화하였다 ( 한글라텍버전 0.92e). 1 라텍버전 2ϵ 에의한한글문서작성 2 한국표준부호체계및한자사용 3 앞처리기 (preprocessor) 의기능을라텍모듬명령으로대체 KAIST 전산학과에서시작된 hlatex은다양한글자체를보급하여어느정도변화있는한글문서를작성할수있도록하였지만, 글자체의원천 (source) 이공개될수없어서, 미리만들어진 300dpi와 600dpi의 pk 파일만제공되었다. 따라서문서의인쇄는 300dpi와 600dpi의해상도를갖는인쇄기에서만가능했다. 그래서한글라텍버전 0.93부터는문화관광부에서공개한글자체와포스트스크립트 type I 글자체, 그외에도두값본그림 (bitmap graphic) 에서추출된외곽선글자체가 META- FONT 원천으로보급됩으로써사용자는아무런제약없이한글라텍을사용할수있게되었다. 글자의배치도이전의 KAIST식인조합완성혼합식을따르지않고일반적인한국표준완성형방식을지향하게되었다. 4 유명한한글라텍패키지들의명칭은다음과같이쓴다. hl A TEXp, HL A TEX, Hangul-ucs, ko.tex.... 이곳 에서 hlatex 이라고쓴것은 HL A TEX 의전신으로 HL A TEX( 한글라텍 ) 을말하는것이아니므로모두소문자로 써서구별하였다. 5 그당시 hlatex 의사용은 KAIST 이내와해외에서만허용되었다. 6 NFSS 는라텍버전 2ϵ 의주된기능으로 New Font Selection Scheme 의약자이다. 라텍의글자체선 택방식을대폭개선함으로써그동안라텍의취약점으로남아있던글자체선택문제를완벽히해결한 기능이다. 11

제 4 절 Omega(Ω) 에대해 현재텍의발전방향을바라보면라틴알파벳처럼비교적간단한방법으로처리하기어려운한글과같은문자의처리에도상당한노력이기울여지고있음을알수있다. 그러나근본적인문제는, 텍자체가 7비트부호체계를바탕으로만들어져있는반면한글부호화방식은 8비트의문자가두번연속되는이중바이트의체계 (KS X 1001, UCS2) 이거나세번연속되는다중바이트체계 (Unicode/UTF-8) 라는데에서발생한다. 텍버전 3 7 의출현으로유럽언어와같은 8비트부호체계의처리는해결되었지만우리말과같은다중바이트부호를처리하는데에는아직많은문제점을안고있다. 세계적인추세도각나라의모든언어를동시에부호화할수있는통일된부호화방식을지향하게되었고, 국제표준화단체 (ISO) 는 32비트코드체계인국제부호화문자세트 (UCS4) 를발표하였다. 이에따라텍에서이문자세트를사용할수있도록하기위해 8비트코드체계를확장하여 16비트코드체계에바탕을둔 Omega(Ω) 로텍을대체하는시도가나오게되었다. Omega(Ω) 는 16비트텍의구현으로서, 유니코드를처리할수있는텍이라고간단히표현할수있다. Omega(Ω) 는 Yannis Haralambous와 John Plaice가공동으로개발하였는데 1996년 11월에 tetex 버전 0.4를바탕으로시험판이나온이래, 1998년 3월에발표된 web2c 버전 7.2 에는 Omega(Ω) 버전 1.5를공식적으로채택하여함께보급하게되는단계에까지오게되었다. 그후 Omega(Ω) 와 ϵ-tex 을결합한 Aleph(ℵ) 가 TEXLive에포함되어배포되고있다. 비록현재는개발이잠시주춤하고있는듯하나, Omega(Ω) 를통한실험은유니코드를이용하는조판이라는방향을옳게잡았던것이라고생각한다. 제 5 절유니코드를이용한실험들 (2002 2006) Omega(Ω) 에주목하기시작하면서한글라텍은 EUC-KR 부호계밖에표현할수없는한계를넘어서기위해 Omega(Ω) 의 L A TEX 판인 Lambda 매크로를개발하였다. 특히 2002년 KTUG을중심으로이루어진일련의실험과그성과인 u8hangul 스타일은 2005년의한글라텍 1.0.1의형성에결정적인토대가되었다. 한글라텍 1.0.1은여전히 EUC-KR 한글을처리하는 L A TEX 매크로와더불어, 모든한글 (UHC) 을표현하고식자할수있는 Lambda 패키지로도개발되었던것이다. Omega(Ω) 는이제거의완숙한단계에도달하고있고앞으로는텍을완전히대체하고본격적으로사용되는방향으로전개될것을희망하고있습니다. ( 은광희, 2005) 7 현재의 TEX 버전은 3.141592 이다. 12

이시기에 Lambda를이용하여한글및한자로이루어진고문헌의식자에성공한일련의실험은 KTUG 게시판에그흔적이아직도남아있다. 이때야말로한글이라는문자를텍에서표현하는데있어한번의도약을이룬시기였다고볼수있다. 한글표현의한계가없어진것이다. 8 그러나 Lambda를일상적인문서작성에쓰기에는몇가지문제가존재했다. 우선 pdf 최종출력물을얻는중요한방법인 pdftex 을사용할수없다는것, 그대신 DVIPDFMx 9 가 pdf 변환기역할을해줄수있었지만 Omega(Ω) 자체의한계로인하여불편한점들이보고된것, 그리고 2003년에 Omega(Ω) 가더이상개발되지않을것이라는소식을듣게된것, L A TEX 의수많은패키지솔루션들을그대로사용하는데한계를보인것, Omega(Ω) 를위한편리한글꼴세트가충분히마련되어있지않았던것등이었다. 10 한편, pdf 문서제작이초미의관심사로떠오르면서, 한글라텍에대한약간의추가적인보완이시도되기도하였다. hyperref라는 pdf 제작에필수적인패키지와 hangul 패키지의불일치를해결하기위하여 hangul-k 라는 third-party 패키지가제작되기도하였으며, 한글라텍에자간과행간을좀더쉽게적용하려는일련의노력들이이루어지기도하였다. 2004년과 2005년을전후하여, 김도현과김강수에의해 hangul-ucs 패키지가탄생한다. 이것은 Dominique Unruh 의 latex-ucs 패키지를기반으로 UTF-8 인코딩된 유니코드한글텍스트를식자하는것이었다. 11 L A TEX 에서유니코드문자를식자하는 방법으로 utf8.def 와 utf8x.def 가있었는데, 이가운데 latex-ucs 패키지는 utf8x.def 를포함하고있는것이었다. 이패키지에는한글라텍을연구하고수정한결과가반영되어있었으며, 한글문서화서식은거의한글라텍의것을그대로가져와서사용하였다. 자동조사처리나행나눔과같이독자적인연구의결과도물론포함하고있었다. 2005년과 2006년에걸쳐, 더완성된한글라텍과 hangul-ucs 패키지는각각그용도에알맞게발전하였다. 한글라텍의지배적인위치에는변함이없었으나, 빠르게발전하고있는 hangul-ucs도점차그사용층을넓혀가고있었다. 8 한글윈도우즈운영체제의 확장완성형 (CP949) 은 Lambda 를테스트하던시기에잠시고려한적이 없지않으나, 원칙적으로그후고려대상에서제외되었다. 유니코드를이용하여한글을표현하는것이 표준에도부합하며혼선을최소화하는방법이라는데동의했기때문이다. 9 KTUG 의조진환교수가개발한 dvi 드라이버프로그램으로서, 이를바탕으로 X 만들어지기도하였다. 10 이런저런이유로인해, ko.tex 은 Omega(Ω) 를위한지원을제거하기로결정하였다. 11 hangul-ucs 4.0 이후버전과현재의 ko.tex 은 latex-ucs 에의존하지않는다. TEX 의 xdvipdfmx 가 E 13

그림 1.1: ko.tex 의탄생 제 6 절 ko.tex 의탄생 (2007) 그림 1.1은 HL A TEX 에서출발하여 ko.tex 에이르는한글텍의발전과정을요약한것이다. 2007 년 6 월 30 일, 한국텍학회모임에서, 은광희 김도현 김강수등한글라텍 hangul-ucs의저자들과 KTS 임원 회원등이모인자리에서이두한글매크로패키지를통합하여통합한글텍패키지를제작하기로의견을모은것이다. 이것은그동안한글사용에있어서둘이상의패키지가존재함으로인해빚어진혼란을불식하고향후한글텍 / 라텍의발전의근거를마련했다는점에서도중요한일보전진이었고, 한글라텍으로부터오랜시간발전해온라텍에서의한글사용을총체적으로점검할기회를얻게되었다는점에서도의미가있는결정이었다. 그로부터일개월정도의작업을통하여 ko.tex 베타버전이공개되었다. ko.tex 은 Unicode/UTF-8 인코딩과 EUC-KR을모두지원하기로하였으나원칙적으로향후의발전방향은 Unicode로합의하였다. 또한은광희의 UHC 글꼴을발전시킨 은 14

글꼴 type 1 을기본글꼴로채택하고이를 EUC-KR 버전에도적용시킴으로써, 폰 트를둘러싼이런저런불편한점을일소하였으며, pdf 제작및매크로의호환성과 안정성에있어서몇가지중요한진보를이루었다. 15

제 2 장 설치 제 1 절 TEX 배포판 각플랫폼별로유명한 TEX 배포판 1 들이있다. 리눅스에서는 Thomas Esser의 tetex 이부동의지위를오랜동안지켜왔으며, 매킨토시에서는 Classic Mac 시기의 OzTEX 이퇴조하고 Mac OS X 하에서 Gerben Wierda의 gwtex 이널리쓰였다. 윈도우즈는사정이복잡하지만 MiKTEX 이사실상가장많은사용자를가진시스템이되었으나 Fabrice Popineau의 fptex 도한동안유수한사용자를보유하고있었다. MiKTEX 을제외하면이모두가 web2c에서파생된시스템이라는공통점을지니고있다. MiKTEX 도종래에는 web2c를변형해서나마받아들이게되었다. 그런데 2007년에접어들면서사정이일변한다. 우선 tetex 과 gwtex 의개발이중단되었다. 또한 web2c 역시독자적인배포판 ( 소스 ) 로서유지되지않게되었다. 그대안으로 TEXLive가새로운표준으로등장했기때문이다. 윈도우즈의경우, 사정은더욱복잡해졌다. KTUG에서는 2006년, TEXLive와무관하게독자적인배포판 KTUG Collection을제작하였는데, 이것은 web2c로부터파생된 Akira Kakuto의 W32TeX의바이너리를가져다쓴것이었다. 다행히도 TEXLive 자체가 W32TeX을채택함으로써, KC2006과 TEXLive는그차이가미미한대단히유사한시스템이되었다. 2 이글은 TEXLive 2007을기준으로작성한다. 매킨토시와리눅스등유닉스-류운영체제에서는 TEXLive 이외의대안이현재로서는없다. 일부리눅스시스템에서 tetex 이여전히주류를이루고있으나조만간 TEXLive로이행하게되리라고기대한다. TEXLive는방대하기도하거니와대단히안정적으로동작하는시스템으로, 사실상다양한배포판의시대를종결시킨 유일 배포판의지위를차지할것으로예측된다. 3 일부상업용 TEX 배포판의경우는, 그배포판을판매하는측에서한글사용에 1 TEX implementations 2 내부적으로차이점은많다. 특히한글운영에필요한다양한유틸리티를제공하는것, 일괄인스톨 러를제공하는것, 패키지관리유틸리티와업데이트유틸리티를제공하는것, 셸유틸리티 (KCmenu) 를 제공하는것등은 TEXLive 보다 KC2006 을더욱편리한시스템이되게한면이있다. 3 MiKTEX 에대하여별도로언급하지못하는것은유감이다. 그러나 MiKTEX 사용자들은 MiKTEX 에서 ko.tex 을설치하는적절한방법을찾아낼것이라고믿는다. 16

관한해결책을제시하는것이옳다고생각한다. 이글은상업용배포판에대해서는 별도의언급을할수없을것이다. 제 2 절 ϵ-tex ko.tex/utf는 ϵ-tex 을요구한다. ϵ-tex 의확장프리미티브를활용하고있기때문이다. kotexplain 패키지도 tex으로는컴파일되지않으며 etex이나 pdftex을이용하여야한다. 다행히 TEXLive 2007에서 latex은 ϵ-tex 엔진을사용하도록조성되어있는것이기본값이므로 L A TEX 사용에있어서사용자가별달리주의할것은없다. 다른 TEX 배포판, 예컨대 tetex 등에서는 elatex이나 pdfelatex을실행하지않으면안되는경우도있을수있다. 텍시스템의기본 L A TEX 엔진을 ϵ-tex 으로바꾸는것은쉽게할수있으나이글의범위를넘어선다. 제 3 절 디렉터리구조 (TDS) 표준적인 web2c 시스템 (TEXLive 는 web2c 시스템이다 ) 에서는방대한파일을간단하게찾기위해서 kpathsearch 라는라이브러리를이용한다. kpathsearch 라이브러리는필요한파일들이일정한디렉터리구조에따라배치되어있다고가정하기때문에 TEX 시스템에서파일은이러한디렉터리구조 (TDS 4 ) 를따라배치되어있어야한다. 이글에서는 2004년발표된 TDS version 1.1을기반으로설명한다. 5 이규정에따르면, 텍에필요한파일들은 TDS 의출발점인 TEXMF 밑에두게된다. TEXMF 는텍의원천코드를컴파일할때결정되며, 둘이상을둘수있다. TEXLive 는 texmf, texmf-dist, texmf-doc라는기본 TEXMF 트리와더불어사용자가설정할수있는 texmf-local, $HOME/texmf 등을사용한다. 이들을편의상 TEXMF root라고부르기로하겠다. 한시스템에여러사용자가있을때, 시스템전체에적용되는 TEXMF들과개별사용자자신이이용하는 TEXMF도분리할수있다. 이미설치된텍운영체계에서도 texmf.cnf 파일에서 TEXMF를다시설정할수있다. TDS를준수할경우, 서로다른텍배포판에서도 TEXMF root의경로만다를뿐이고그이하의디렉터리구조는같다. 4 TeX Directory Structure. http://www.tug.org/tds/tds.pdf 5 MiKTEX 2.6 은 TDS 1.1 을잘따르지않는것으로알려져있다. 그러므로아래의설명은 MiKTEX 에 적용되지않는다. 17

ko.tex 은위의어떤 TEXMF root 아래설치되어도무방하다. 이위치를편의상 [texmf] 라고표시하겠다. 예컨대 /usr/local/texlive/texmf-local 을 ko.tex 이설치될위치로선정할수있을것이다. 되도록이면.../texlive/2007/texmf 이나, texmf-dist 와같은시스템디렉터리와는분리하는것이좋다. Top-level directories 는텍운영체계의구성요소로서 tex ( 텍파일 ), fonts ( 폰트관련파일 ), metafont ( 폰트가아닌 METAFONT 파일 ), metapost (METAPOST 파일 ), bibtex(bibtex 파일 ), scripts ( 운영체계독립적인실행파 일 ), doc ( 사용자용문서파일 ), source ( 원천파일 ), < 구현 > (emtex, vtex, web2c 와같은텍구현관련파일 ), < 프로그램 > (mft, dvips 와같은프로그램에따른입 력및설정파일 ) 등등이해당된다. 텍체계를구성하는모듬명령 ( 매크로 ) 파일의위치는다음과같은계층구조 를갖는다. TEXMF/tex/ 틀 / 꾸러미 틀 은텍의용어로 \dump 되는것들을말하는데, ko.tex 은플레인텍 (plaintex) 을위한 kotexplain, 라텍을위한 ko.tex-euc/utf 등으로이루어지므로, 거기에맞게 [texmf]/tex/plain/kotex 또는 [texmf]/tex/latex/kotex 등의위치에놓이 게된다. 글자체는다음과같은규정에의해설치할것을요구한다. TEXMF/fonts/ 형식 / 제공자 / 글자체 TEXMF/fonts/{enc,lig,map}/ 하위경로 형식 은글자체의종류를가리킨다. 즉, tfm, vf, type1, afm 등이이에해당한다. 글자체의부호화나합자혹은글자체이름대응파일들은각각 enc, lig, map 형 식 디렉터리에평행한디렉터리에따로둔다. 제공자 의대상은글자체를만드는 업체나만든이등인데, adobe 회사의 type 1 글자체 (adobe), bitstream 회사의 type 1 글자체 (bitstrea), D. Knuth 교수의 METAFONT 글자체 (public), J. Knappen 씨의 METAFONT 글자체 (jknappen) 등을예로들수있다. 글자체 는글자의모 양에따른이름이다. adobe 회사에서만든글자체에는 times, helvetic 등의이름 이사용되고 D. Knuth 교수가텍운영체계를위해서만든글자체의경우는 cm, ec 등의이름이사용되며 ko.tex 에서제공하는글자체에서는 myoungjo, gothic 등의 이름이사용된다. ko.tex 의글자체들은다음처럼위치하게된다. [texmf]/fonts/ 형식 /kotex/{base,extra}/{myoungjo,gothic,...} [texmf]/fonts/map/dvips/kotex 18

제 4 절 일반적인설치지침 4.1 다운로드 ftp://ftp.ktug.or.kr/ktug/ko.tex/ 디렉터리에서배포되는압축파일은다음두개이다. ko.tex-macro.tar.gz ko.tex-unfonts-base.tar.gz 둘다.tar.gz로압축된파일로서 gunzip과 tar를이용하여압축해제할수있다. 4.2 매크로와유틸리티 먼저 *-macro-* 압축파일을적당한곳에풀면, 몇개의파일 (INSTALL, LICENSE 등 ) 과일곱개의하위디렉터리를얻을수있다. 이것을다음과같이이동한다. ================================================================ subdirectories and/or files destination ================================================================ bibtex/euc [texmf]/bibtex/bst/kotex/euc doc/* [texmf]/doc/latex/kotex/* latex/* [texmf]/tex/latex/kotex/* makeindex/* [texmf]/makeindex/kotex/* plain/* [texmf]/tex/plain/kotex/* sfd/* [texmf]/fonts/sfd/* util/*.pl [texmf]/scripts/kotex/perl/*.pl ================================================================ util 디렉터리안에는두개의.c 소스와몇개의 *.pl 스크립트가있다. 이 중.c 는컴파일하고 6 *.pl 은실행권한을부여하여 /usr/local/bin/ 으로이동 한다. 7 hbibtex.c $ gcc -o hbibtex hbibtex.c $ cp./hbibtex /usr/local/bin/ 6 윈도우즈용으로.exe 파일이함께제공된다. 7 윈도우즈에서는 Active Perl 등을설치하여이스크립트를실행가능하게해두어야한다. 혹은설치 패키지를이용하는경우.exe 형식파일로제공하는경우도있을것이다. 19

hmakeindex.c $ gcc -o hmakeindex hmakeindex.c $ cp./hmakeindex /usr/local/bin/ *.pl $ chmod a+x *.pl $ cp./*.pl /usr/local/bin/ 4.3 글자체의설치 *-fonts-base-* 압축파일을내려받은다음적당한곳에풀면라이센스관련파 일몇개와함께두개의하위디렉터리가있다. 이것을아래와같이이동한다. 기 본으로배포되는폰트패키지에는명조, 고딕, 타자, 그래픽, 네글꼴가족만포함 되어있다. 이밖의 은글꼴 시리즈는 extra 폰트라는이름으로배포되는데, 만약 많은글자체를필요로한다면 extra 패키지까지설치해야할것이다. 설치방법은 동일하다. ======================================================== directory destination ======================================================== fonts [texmf]/fonts tex [texmf]/tex ======================================================== 이글자체들에대한정보를텍엔진에게알려주는것이 updmap 을통한 map 의 생성이다. TEXLive 2007 은이과정을매우간편하게진행할수있는데, 다음절차를 따르면된다. $ mktexlsr $ updmap-sys --enable Map=kotex-base.map 만약 super user 권한을가지고있지않다면 updmap-sys 대신 updmap 을실행한다. extra 폰트패키지도설치했다면 # mktexlsr # updmap-sys --enable Map=kotex-extra.map 이것으로끝이다. 20

제 5 절 각플랫폼별설치패키지 앞절에서설명한일반적설치지침을따르는것이번거롭고불편할수도있으므로그럴때는간편한각배포판, 플랫폼별설치패키지를이용하는방법이있다. install package 8 디렉터리에가면윈도우즈 KC2006 및매킨토시 TEXLive를위한설치패키지가마련되어있다. 리눅스는각배포판별로간편한설치유틸리티를제작할수있을것인데, 이에대한정보는 KTUGFaq::ko.TeX/instpack 페이지 9 에서찾을수있다. 제 6 절 CVS 개발버전 CVS::ko.TeX 10 에서최신의개발버전을확인할수있다. 4.1 절에서언급한파일들 은 CVS snapshot 을정기적으로릴리스한것이므로비교적안정적이나, CVS 개발버 전은사용자가개발에참여할의사가있거나최신버전을활용하고자할때, cvs 를 통하여다운로드받을수있을것이다. anonymous 로 CVS 를리트리브하려면다음과같이한다. $ cvs -d :pserver:anonymous@cvs.ktug.or.kr:/home/cvsroot login $ cvs -d :pserver:anonymous@cvs.ktug.or.kr:/home/cvsroot \ checkout ko.tex 패스워드를물어오면그냥엔터를치면진행할수있다. 8 http://ftp.ktug.or.kr/ktug/ko.tex/instpack/ 9 http://faq.ktug.or.kr/faq/ko.tex/instpack 10 http://cvs.ktug.or.kr/viewcvs/ko.tex 21

제 3 장 사용 한글라텍 ko.tex 은은광희의 HL A TEX 과김도현 김강수의 hangul-ucs를합쳐서하나의패키지로구성한것이다. 1990년대이래한글사용의사실상표준이었던이두패키지가결합함으로써명실공히라텍에서의한글사용에새로운장을열었다고평가해도좋으리라. ko.tex 은본격적인한국어 ( 한글 ) 텍시스템이다. 1 라텍은물론이고플레인텍에서컨텍스트에이르기까지거의모든텍관련매크로에서한글을구현하도록할수있다. 그래도그중심은역시한글 라텍 일것이다. 이글은한글 라텍 에대해서주로다루고다른매크로에서의한글구현에관한사항은별도의장으로설명하겠다. 앞으로별다른언급이없으면 ko.tex 이한글라텍매크로를 ( 주로 ) 가리키는것으로하자. 한글라텍으로서 ko.tex 은 EUC-KR 코드와 UTF-8 한글코드를지원한다. 2 그가운데 EUC-KR 지원은일종의 하위호환성 측면에서제공되는것으로, 향후발전은 UTF-8 부분만반영될것이다. EUC-KR 코드로작성된기존의한글문서를컴파일할수있고이것을더쉽게 UTF-8 문서로바꿀수있게하는것이두코드를모두지원하는원래의목적이며 EUC-KR 버전은 UTF-8 버전과항상동일하게동작하지않는다. 또한 EUC-KR 한글문서는비교적쉽게 UTF-8로포팅할수있으나그역의경우는잘되지않거나많은노력이필요할수있다. 그럼에도불구하고 ko.tex/euc는 HL A TEX 에비해서다음과같은점이개선되었다. 주로 pdf 제작과관련된것들이많다. euc 1. pdf 책갈피를만들어도한글이 깨지지 않게할수있다. 2. pdf 문서에서한글텍스트의검색과추출이되게할수있다. 3. KTUG에서발전한한글타이포그래피의성과를부분적으로나마이용하여비교적잘정돈된한글문서를만들어낸다. 그러나 utf 버전은더욱발전된타이포그래피를다루고있으므로되도록이면 utf 버전이사용되기를희망한다. 1 ko.tex 은텍스트상황에서 ko.tex 이라고쓰고 케이오텍 또는 코리언텍 이라고읽는다. ko 는 한국어를의미하는국제부호에서취한것이다. ko 를소문자로쓴다. 2 윈도우즈에친숙한 CP949 코드는지원하지않는다. CP949 는사실상유니코드의현대한글음절 영역에서다룰수있는모든문자에해당하므로유니코드를통하여지원하는것이바람직하다고판단하 였다. 22

한편, hangul-ucs 에비해서는주로 (linux 에서의 ) 설치와관련된문제가현저히 개선되었다. utf 1. latex-ucs 패키지에의의존성이없다. 2. ttf2pk를사용하지않음으로써 ttf2pk에대한의존성도사라졌다. 3. HL A TEX 과통합되었으므로 hlatex에대한의존성도필요없다. 4. 트루타입 은글꼴 을사용하지않기때문에별도로폰트를설치해야하는불편이없다. 5. dvipdfmx.cfg나 ttf2pk.cfg 등의설정파일수정을일일이해야하는불편이없어지고 updmap에의한일괄명령한번으로모든폰트설정이이루어진다. 6. 기본패키지의크기가이전에비하여현저히줄었다. 제 1 절 기본사용법 ko.tex 의기본스타일은 kotex.sty 이다. 다음과같이쓴다. \usepackage{kotex} 언어코드를첫번째인자로지정하는데, 디폴트는 utf이다. 그러므로 utf는별도로명시하지않아도되지만 euc 문서를작성할때는반드시 euc 옵션을되도록맨처음에지정한다. utf euc \usepackage[euc]{kotex} 명령 \usepackage{kotex} \usepackage[hangul]{kotex} \usepackage[euc]{kotex} \usepackage[euc,hangul]{kotex} 대응 \usepackage{dhucs} \usepackage[hangul]{dhucs} \usepackage{hfont} \usepackage{hangul} HL A TEX 에는두가지사용법이있었다. 하나는 hfont이고다른하나는 hangul 이었다. ko.tex 에서는한글서식 hangul 옵션이주어진상태와그렇지않은상태로구분한다. 영문위주문서에한글을사용할때는 hangul 옵션없이쓰고, 한글위주의문서에서한글식서식을설정하려면 hangul 옵션을지정한다. 23

kotex.cfg 사용자는일반적으로 utf나 euc 가운데한가지를주로쓰지둘다쓰게되는경우는거의없을것이다. kotex.cfg 파일은이럴경우에대비하여자신이쓰는 kotex 옵션을미리지정해두고단순히 \usepackage{kotex} 이라고만하여그옵션들을활성화하게할수있다. 이파일은 [texmf-ktug]/tex/latex/kotex/ 에있으므로자신에게맞게적절하게수정해서쓰도록한다. 제 2 절 pdf 문서작성을위한설정 2.1 ko.tex/utf 문서 utf 문서는다음과같이한다. 유니코드문서에서는 hyperref 에 [unicode] 옵션을 지정하는것으로 pdf bookmark 문제가모두해결되므로,.out 파일의코드변환과 같은문제에신경쓸필요가없다. \usepackage{kotex} \usepackage{ifpdf} \newcommand\mydriver{\ifpdf pdftex\else dvipdfm\fi} \usepackage{\mydriver,unicode,bookmarks]{hyperref} utf 여기서는 [unicode] 옵션이반드시지정되어야한다. 그리고 CJKbookmarks 를쓰지 않는점이다르다. 또한 euc-bookmark 와같은번거로운절차가필요없다. 위의예 에상당하는컴파일절차예시는다음과같다. 3 $ (pdf)latex foo $ bibtex foo $ komkindex -s kotex foo $ (pdf)latex foo $ (dvipdfmx foo) pdf 문서의텍스트검색과추출은매우중요한문제이다. 이것은어떤드라이 버로 pdf 를생성하느냐에따라조금달라지는데, 일괄요약하면다음과같다. dvipdfmx 기본폰트인 type 1 글꼴을매우잘처리하고이로부터검색및추출이 가능한 pdf 를만들어낸다. 별도의조치가필요없다. dvips 트루타입을처리하지못하는점때문에이전부터문제가있다고생각되었으 나적어도 ko.tex 이제공하는폰트를사용하는한검색추출에문제는없다. 역시별도의조치가필요없다. 다. 3 komkindex 는 Perl Script 이므로경우에따라 komkindex.pl 을실행해야할것이다. 이후로도같 24

pdftex 이때는 \pdfgentounicode 를활성화해주어야한다. 그러므로, preamble 에다음과같이선언하는것으로될것이다. \ifpdf \input glyphtounicode \pdfgentounicode=1 \fi 어떤드라이버를사용하든모두포스트스크립트윤곽선글꼴이사용되고, pdf 북마크가잘만들어져있으며한글텍스트의검색및추출이자유롭다. 2.2 ko.tex/euc 문서 \usepackage[euc]{kotex} \usepackage{ifpdf} \newcommand\mydriver{\ifpdf pdftex\else dvipdfm\fi} \usepackage[\mydriver,cjkbookmarks]{hyperref} euc 위의것은 euc 문서를위한설정이다. hyperref 는거의필수이므로이를로드 하여야하고, 북마크는 CJKbookmarks 옵션을준다. 이제이문서를처리하는과정 에서, 맨마지막 L A TEX 컴파일직전에 euc-bookmark 유틸리티를한번실행해주면된 다. 이유틸리티가하는일은북마크를위한파일의인코딩을 hyperref 가이해하는 유니코드인코딩으로바꾸어주는일이다. 그러므로컴파일과정을예시하면다음과 같이될것이다. 4 $ pdflatex foo $ hbibtex foo $ komkindex -euc -s hind foo $ euc-bookmark.pl foo.out >foo-a.out $ cp foo-a.out foo.out $ pdflatex foo DVIPDFMx 를이용하려하는경우불편한 euc-bookmark 를쓰지않아도한글 북마크를잘만들어준다. 이때는다음과같은코드가필요하다. \ifpdf\else \AtBeginDvi{\special{pdf: tounicode KSCms-UHC-UCS2}} \fi 4 KC2006 을위한설치패키지에서는 komkindex.exe 등을제공하기도한다. 이때는굳이.pl 과같은 확장명을붙이지않아도된다. 또한 cp 명령은윈도우즈에서는 copy 이다. 25

그리고다음순서로컴파일하면된다. $ latex foo $ hbibtex foo $ komkindex -euc -s hind foo $ latex foo $ dvipdfmx foo 이것은오직 DVIPDFMx 를쓰는경우에만유효하다. 2.3 요약 이상을요약하면, 다음과같다. UTF: \documentclass{article} \usepackage{kotex} \usepackage{ifpdf} \ifpdf \usepackage[unicode]{hyperref} \input glyphtounicode\pdfgentounicode=1 \else \usepackage[unicode,dvipdfm]{hyperref} \fi EUC: \documentclass{article} \usepackage[euc]{kotex} \usepackage{ifpdf} \ifpdf \usepackage[cjkbookmarks]{hyperref} \input glyphtounicode\pdfgentounicode=1 \else \usepackage[dvipdfm,cjkbookmarks]{hyperref} \AtBeginDvi{\special{pdf: tounicode KSCms-UHC-UCS2}} \fi 이와관련하여다음두가지를지적해두기로한다. 26

1. 위의코드가제대로동작하려면 KSCms-UHC-UCS2라는이름의 cmap이있어야한다. 이 cmap은 ghostscript의 resource 디렉터리에들어있으므로, 만약 cmap을찾는데실패하는에러를만난다면자신의 TEX 시스템에게이 cmap 위치를알려주도록하라. 2. 위의 pdfgentounicode에관련된것은 type 1 글꼴이사용되었을때유효하다. 사용자가자신의개인적인용도로트루타입으로조판하려한다면이코드보다는 \usepackage{dhucs-cmap} 을선언하도록하여야한다. 제 3 절 폰트에대하여 ko.tex 의가장큰특징이폰트에관련된부분이다. 기본글꼴로 은글꼴 type 1 을채택하였는데이것은 HL A TEX 의기본글꼴이었던 UHC 글꼴을트루타입으로바꾼은글꼴 (hangul-ucs의기본글꼴 ) 로부터얻어진 type 1이다. 원래 UHC 글꼴이 type 1이었는데왜은글꼴로부터별도로 type 1 글꼴을만들어내어야했던가? 그것은 UHC 글꼴이가진독특한특성, 즉자소글꼴이라는점때문이었다. UHC 폰트자체는일종의자소글꼴로서, 이것을실제의문자에대응시키기위해서는 vf를통하여자소조합을실행해야한다. 각문자에유니코드코드포인트를대응시켜주어야텍스트의검색추출이가능해질것이므로 UHC 폰트자체만으로는이것을하는것이어려웠다. 반면은글꼴 type 1은유니코드배열에따라완성된문자를가지고있는글꼴이다. 은글꼴 type 1 자체가 UHC에기원을두고있으니만치, 은글꼴 type 1은 UHC의자소를미리조합하여유니코드코드포인트를부여한글꼴 이라고이해할수있으리라생각한다. UHC 글꼴 (HL A TEX) 은글꼴 (hangul-ucs) 은글꼴 type 1 (ko.tex) 3.1 기본글꼴 기본 (base) 폰트는명조 ( 바탕 ), 돋움 ( 고딕 ), 타자, 굴림의네종류이다. 글꼴 file name(utf) name(euc) 한자 볼드 변형 (c,o) 명조 outbtmxx utbt mj (wmj) O O O 고딕 outgtmxx utgt gt (wgt) O O O 타자 outtzmxx uttz tz (wtt) X 5 X X 그래픽 outgrmxx utgr gr (wgr) X O O 5 고딕의한자를가져다쓴다. 27

euc 와 utf 양쪽에서모두동일한글꼴을사용하는데, 다만 euc 에서는 vf 를통 하여필요한글자를뽑아서완성형인코딩에맞게재배열하여사용한다. 3.2 추가글꼴 추가폰트 (extra) 에는은글꼴의나머지폰트들이들어있다. 한자등이들어있거 나변형글꼴이제공되는것은다음과같다. 글꼴 file name(utf) name(euc) 한자 볼드 변형 (c,o) 신문 outshmxx utsh sh (wsh) O X O 옛글 outytmxx utyt yt (wyt) O X O 궁서 outgsmxx utgs gs (wgs) O X O 필기 outpgmxx utpg pg (wpg) X O O 봄 outbmmxx utbm bm (wbm) X X O 다음추가글꼴은굵은글꼴, 기울인글꼴, 장평줄인글꼴등의변형서체를전 혀지원하지않고오직기본모양하나만으로제작된것들이다. 글꼴 file name(utf) name(euc) 한자 볼드 변형 (c,o) 자모명조 outjbtmxx utjbt jbt X X X 자모고딕 outjgtmxx utjgt jgt X X X 자모노벨 outjnvmxx utjnv jnv X X X 자모소라 outjsrmxx utjsr jsr X X X 펜글씨 outpnmxx utpn pn X X X 펜흘림 outphmxx utph ph X X X 이상 15종의폰트가트루타입은글꼴시리즈에대응한다. 여기에 HL A TEX 1.0에 서새로도입된세종류글꼴중두종류를추가글꼴 (extra-hl) 로제공한다. 이추 가글꼴들도기울임 / 장평줄임등의변형글꼴없이 ( 즉, m-시리즈만으로 ) 제공된다. 글꼴 file name(utf) name(euc) 한자 볼드 변형 (c,o) 디나루 outdnmxx utdn dn (wdn) X O X 필기a outpgamxx utpga pga X X X 참고로, euc 에서 extra-hl 폰트를사용하려면 \usepackage{extra-hlfont} 를지 시해주어야한다. 각폰트의인쇄된모양을보려면부록을참고하라. euc 28

3.3 은글꼴트루타입폰트세트 hangul-ucs에서사용하던은글꼴트루타입폰트도사용이가능하다. 이것은별도로설치를하여야하며, 은글꼴트루타입도별도로시스템에등록하여야한다. utf 에서는일반적인방법으로이폰트를사용할수있다. 다만폰트명칭이 ut.. 가아니라 un.. 이라는점을알아두자. 따라서예컨대 \SetHangulFonts{unbt}{ungt}{untz} \SetHanjaFonts{unbt}{ungt}{ungtz} 와같이선언하여은글꼴트루타입을쓰도록할수있다. euc 에서은글꼴트루타입을쓰려면 \usepackage{unttf} 를선언한다. 트루타입사용은 DVIPDFMx 로 pdf를제작할때유용하다. pdftex 에서사용하지못하는바는아니지만기울인글꼴등이잘처리되지않는다. 은글꼴 type 1과은글꼴트루타입은사실상같은글꼴이라고보아도무방하다. utf euc 3.4 타자글꼴에관한주석은타자는현재거의유일한고정폭 (monospaced) 글꼴이다. 이글꼴에대해서그디자인을두고논란이없는것은아니지만그래도 \ttfamily에대응하는고정폭글꼴의필요성을고려한다면매우중요한글꼴이라고할수있다. 고정폭으로쓰일것이므로볼드나기울임등은불필요하다. 또한폭을변경시키는변경폭 (c-시리즈, x-시리즈 ) 도제공될필요가없다. 타자글꼴자체에한자가들어있지않은데, ko.tex 의타자글꼴은 uttz로지정해도가상글꼴을통해고딕 ( 돋움 ) 의한자부분을타자체의폭에맞게조절하여사용한다. 은글꼴트루타입은그렇지않으므로위의예와같이 ungtz로해야한다. 3.5 요약 ko.tex 은 은글꼴 type 1 을기본폰트로한다. 이로부터얻을수있는이점은다음과같다. 1. pdftex 에친화적인폰트세트이다. pdftex 과 DVIPDFMx, 심지어 dvips까지모두이형식의폰트를잘다루므로범용성과호환성이매우높아졌다. pstricks 를위해서폰트를바꾸어야하는불편을없앴다. 2. TEX 배포판의유용한유틸리티 updmap을이용하여설치하므로설치과정이깔끔하게끝난다. 29

3. pdftex, DVPIDFMx, dvips 어떤것으로도한글텍스트의검색과추출이되는 pdf를제작할수있게되었다. 4. 폰트의품위는은글꼴트루타입과마찬가지이며, pdf에임베드되었을때도훌륭하다. 생각해볼수있는결점은, pdf의폰트정보를확인했을때수백개의 outbtmac, outbtmad... 하는식으로확인되는것이좀거슬릴수있고, 임베드된 pdf의크기가약간커지는정도인데, 둘다치명적인문제는아니라고생각한다. 파일크기는무시할수있을정도이며 DVIPDFMx 를쓰면현저히줄일수있고, 폰트정보는... pdf를제작하는목적이폰트정보를제공하기위해서는아니지않겠는가. 3.6 폰트의라이센스은글꼴 type 1 15 종 (base, extra) 은 GNU GPL 로배포된다. extra-hl 2 종폰트는 ko.tex 의라이센스 (LPPL) 를따른다. 은글꼴 type 1을내장 ( 임베드 ) 한 pdf의라이센스문제에대해서는김도현의글 ( 김도현, 2007) 을참고하라. 결론은 GPL인은글꼴을임베드하였다해도, GPL의감염성이텍스트의내용에미치는것은아니라는것이다. 제 4 절 utf 버전과 euc 버전의관계 원칙적으로 hangul-ucs에서계승한 ko.tex/utf 버전과 HL A TEX 에서이어받은 ko.tex/euc 버전은상호독립적이다. 또한그출력결과가완전히동일하지않으며특히폰트선택과관련된부분은명령간의호환성을현단계에서는보증하지못한다. 그이유는, ko.tex/euc의의미를 하위호환성 측면에비중을두었기때문이다. 이와더불어완성형한글코드를처리하는방식에있어서 UTF-8을처리하는방식 (L A TEX 표준 ) 과다른점이엄연히존재하며이를호환가능하게만드는데드는노력에비해그성과가우리가지향하는바에비추어크지않다고판단한점도작용하였다. 1. 폰트선택명령체계가서로다르다. ko.tex/euc는 HL A TEX 의 HFSS를그대로이어받고있다. 즉예컨대 \hfontfamily나 \hfontseries, 심지어 \pgfamily 와같은명령이제공된다. 반면 ko.tex/utf는이러한종류의명령은제공하지않으며다만한글글꼴가족을선택할수있는몇개의일괄명령만이제공된다. 30

2. 행자름방법이다르다. ko.tex/euc는 ( 약간의개선이없지않으나 ) 여전히한글앞에영문자등에잇대어있을때행이나누어지지않을수있다. 3. 미세간격과같은새로운타이포그래피가 ko.tex/euc 에는적용되지않는다. 즉 [finemath] 옵션이하는일을 ko.tex/euc는전혀하지않는다. 4. 식자할수있는문자의범위가다르다. 원칙적으로 ko.tex/utf는문자범위의제한이없으나, ko.tex/euc는 EUC-KR 완성형한글로그범위가제한된다. 5. ko.tex/euc 는항상 nonfrenchspacing 으로만조판한다. frenchspacing 과유사한효과를얻으려면마침표뒤의공백을일반공백과같도록맞추어야할것이다. 반면 ko.tex/utf 는 nonfrenchspacing 을옵션으로선택할수있다. 6. ko.tex/euc로는다국어문서를조판할수없거나더많은노력이필요하다. 7. oblivoir나 memhangul은 euc 버전이없다. 궁극적으로한글텍은유니코드를지향할수밖에없다. 그러므로향후한글텍 의개선과발전에대한노력도 ko.tex/utf 를중심으로이루어질수밖에없을것이다. ko.tex/euc 는예외적으로부득이하게필요한경우에한하여사용되기를희망한다. 31

제 II 편 ko.tex/utf 32

제 4 장 유니코드문서작성하기 제 1 절 개관 ko.tex/utf 은 UTF-8 유니코드로입력되는한글을 L A TEX 문서에서식자하고조판하게 하려는스타일패키지로서, 그핵심부분인 dhucs 패키지를김도현이작성하였다. 제 2 절 첫번째문서 2.1 간단한문서작성그림 4.1과같은간단한문서를작성해보자. ko.tex/utf의기본스타일은 kotex 패키지이다. 그러나이스타일은 dhucs 패키지를부른다. 또한대부분의 contrib 패키지의명칭은 dhucs-로시작한다. 제 10 행이후에서 hyperref 패키지를로드한다. 반드시 [unicode] 옵션을주어야한다. 한글 PDF 책갈피 (bookmarks) 설정은 hyperref 의 default 이므로별도로지정하지않아도책갈피가만들어진다. 만약책갈피를만들지않고자한다면 bookmarks=false를옵션에추가한다. 패키지를로드한후 \hypersetup 명령을이용해서설정값을추가할수도있다. 1 제9행이후의 \ifpdf.. \else.. \fi 구문은 pdfl A TEX 의실행여부에따라서로다른설정을하는부분이다. 이구문을사용하려면 ifpdf 패키지가필요하다. 제12행은 pdfl A TEX 에서텍스트의검색 추출을가능하게하는행이다. DVIPDFMx 를위해서는별도의설정이필요없다. 제4행부터제7행까지는반드시필요한경우가아니면꼭지정하지않아도상관없다. 각 ( 부가 ) 패키지의작용등은이문서를읽으면알수있다. 제 5 행은 dhucs-interword 패키지를로드했기때문에선언한것으로서이에관련된문제는 97 페이지의 2.2절에설명되어있다. 이내용을 firsttest.tex이라는이름으로저장한다. 1 hangul-ucs 4.0 이전버전에서는 dhucs-ucshyper 라는부가패키지가제공되었으나, hyperref 의 기능향상에따라불필요해졌으므로 ko.tex 에서는이부가패키지를제공하지않는다. 33

1 \documentclass{article} 2 3 \usepackage[hangul,nonfrench,finemath]{kotex} 4 \usepackage[default]{dhucs-interword} 5 \usehangulfontspec{ut} 6 \usepackage[hangul]{dhucs-setspace} 7 \usepackage{dhucs-gremph} 8 9 \usepackage{ifpdf} 10 \ifpdf 11 \usepackage[unicode,pdftex,colorlinks]{hyperref} 12 \input glyphtounicode\pdfgentounicode=1 13 \else 14 \usepackage[unicode,dvipdfm,colorlinks]{hyperref} 15 \fi 16 17 \begin{document} 18 19 \section{ 들어가기 } 20 처음문서를작성합니다. 21 22 \end{document} 그림 4.1: 첫번째문서, 예제 2.2 컴파일이문서를컴파일하려면명령행에서다음과같이한다. $ latex firsttest PDF 출력을얻으려면, latex 대신 pdflatex을실행한다. 또는, latex으로얻어진.dvi에대하여 dvipdfmx를실행한다. $ dvipdfmx firsttest 2.3 영문글꼴영문글꼴은일반적인 L A TEX 문서의경우와마찬가지로사용할수있다. ko.tex/utf의영문글꼴기본값은 OT1 인코딩의 CM이다. T1 인코딩으로 EC 글꼴을사용하려면다음을 preamble 에적어준다. \usepackage[t1]{fontenc} 34

예를들어 pxfonts를본문에서쓰려면, \usepackage{pxfonts} 와같이한다. dhucs 자체가 font encoding을정의하고있기때문에, font encoding을바꾸는명령, 예를들면 \usepackage[t1]{fontenc} 과같은행은 dhucs 가로드되기전에부르는것이좋다. 2.4 옵션들 ko.tex/utf가제공하는옵션은다음과같다. hangul 한글문서서식을설정한다. 장과절포맷은 제 1 장 과같은형태로식자된다. 기본값은한글문서서식을설정하지않는것이다. nojosa 자동조사기능을끈다. dhucs 초기버전에서다른패키지와의호환을위하여제공되었던것이지만현재는굳이이옵션을사용해야할필요가현저히줄었다. 그러나옵션으로서는유지되고있다. hanja 한글문서서식을설정하는것은 hangul 옵션과같으나, 한글이름대신한자이름을사용한다. nonfrench 한글문장에대해서도 non-french-spacing 을적용한다. 즉, 마침표등의뒤의공백이다른공백보다조금더길다. 기본값은 french-spacing으로식자하는것이다. finemath 원래는문장중의수학식과이어지는한글사이에적절한 (fine) 간격을부여하기위한것이었으나, 곧문장부호등을포함한개념으로확대되었다. strictcharcheck 한글폰트가운데.tfm은있으나해당문자가결락되어있는것이있다. 이럴경우에에러를보여주도록하는옵션이다. 이옵션을지시하지않으면문자가없어서식자하지못한것을.log에기록만하고에러는발생시키지않는다. 2.5 부가패키지들 ko.tex/utf과함께제공되는부가 (contrib) 패키지들은다음과같다. dhucs-cmap pdfl A TEX 을이용하여한글문서를작성할때한글텍스트의검색과추출을가능하게하는패키지이다. 주로트루타입글꼴을사용할때필요하다. 35

dhucs-interword 한글문서의자간과단어간격을설정한다. default 옵션과 HWP 옵션을쓸수있다. dhucs-setspace 한글문서의행간을설정한다. hangul 옵션을반드시지정해야한다. dhucs-gremph \itshape에해당하는한글문자를그래픽글꼴로바꾼다. 그래픽대신굵은글꼴로대신하는 bfemph 옵션을쓸수있다. dhucsfn 한글라텍의 hangulfn을 dhucs로포팅한것으로, 한글문서에알맞은여러가지각주짜기방법을제공한다. dhucs-trivcj 간단한일본어또는중국어문단을식자할수있게하는부가패키지이다. dhucs-midkor 1933년이전 옛한글 을식자하기위한패키지이다. dhucs-enumitem enumitem 패키지에한글식글머리정의를추가하는작은패키지이다. enumitem 패키지를로드한후에불러쓰면된다. dhucs-enumerate enumerate 패키지에한글식글머리정의를추가하는작은패키지이다. dhucs-paralist dhucs-enumerate 패키지와같으나 paralist 패키지를사용할때발생하는문제를해결하기위한것이다. 제 3 절 글꼴사용과선택 ko.tex/utf에서사용할수있는기본글꼴은 은글꼴 type 1 이다. 이에대해서는 27 페이지 3절에서이미상세히밝혀두었다. 여기서는이기본글꼴을문서에서사용자가사용하는방법에대해서기술한다. 우리는글꼴문제에있어서상대적으로보수적인태도를취하려한다. 즉, 하나의문서에기본적으로사용되는글꼴은 rm, sf, tt 세가지라고보는것이다. 다른아무런설정없이기본값으로문서를작성하면, rm은은바탕, sf는은돋움, tt 는은타자로설정되어있다. 이이상의글꼴을하나의문서에서사용하는것을권장하지는않지만불가능하지도않다. 필요하다면은글꼴이외의글꼴을사용하는것도가능하다. 36

표 4.1: 글꼴사용방법 글꼴가족 rm sf tt emph 한글 utbt utgt uttz utgr 한자 utbt utgt uttz utgt 3.1 기본글꼴을변경하는방법 ko.tex/utf의기본글꼴설정을요약하면표 4.1과같다. 여기서 emph란, dhucs-gremph 패키지를불렀을경우이탤릭과슬랜티드에대응하는한글글꼴을가리키는것이다. 이패키지를로드하지않은상태에서는 emph(itshape) 에기울임글꼴이대응된다. 2 강조의방법으로서글꼴치환과기울임방법에대한논란은이글뒷편에서더상세히다룬다. ko.tex/utf는모두세영역의폰트를사용하여문서를식자한다. 1. 영문자영역. ASCII 문자들은모두여기에들어간다. 즉로마자알파벳과숫자, 일부문장부호들이다. 이것은영문문서에서와동일한영문자폰트를이용하여식자한다. 다른설정이없으면 OT1 인코딩의 CM이기본값이며 T1 인코딩을호출하면 cm-super 폰트를 EC 글꼴문자로사용한다. 만약 lmodern을이용하고싶으면 \usepackage{lmodern} 이라고하면된다. 2. 한글 영역이란 [U+AC00] 에서 [U+D7FF] 까지한글음절문자영역의글자와한글자모및한글호환자모글자들에해당한다. 지정된한글폰트로식자한다. 3. 한자 영역이란위의영문자영역과한글영역을제외한모든문자가포함된다. 한중일호환문장부호, 한자는물론이고일부폰트에서발견할수있는 PUA( 사용자영역 ) 옛한글문자도여기에속한다. 이세영역은완전히분리되어있고서로영향을미치지않는다. 즉한글영역의글꼴을바꾸더라도영문자나한자영역의글꼴의선택이바뀌지않는다는것이다. 다만 rm, sf, tt 라는세글꼴군에한하여각각해당되는한글글꼴과한자글꼴을가져다가식자한다. 예를들어 \sffamily 명령이불리면영문자와숫자는 \sfdefault인 cmss 폰트가사용될것이며, 한글은이미정의되어있는 sfhangulfont, 여기서는 utgt가식자될것이다. 2 다만 oblivoir 클래스에서는 gremph 가기본설정이다. 37

글꼴가족의호칭은대부분네개의알파벳문자로표현된다. 기본글꼴은각각 ut라는폰트제작자부호와 bt라는폰트가족대표호칭으로이루어져있는데, utbt라는이름으로호출되는실제의폰트들은수백개의서브폰트들로이루어져있다. 문서작성자는실제폰트자체의이름에는신경쓸필요가없고 utbt 또는 utgt라는호출가족명칭만기억하면될것이다. 기본글꼴설정을변경하려면다음과같이한다. 여기예시된 XXaa 등은임의의폰트명칭인데, 이런형식의폰트세트가미리시스템에설치되어야할것은당연하다. \SetHangulFonts{XXaa}{XXbb}{XXcc} \SetHanjaFonts{XXba}{XXbc}{XXca} 위의명령은각각한글글꼴과한자글꼴을지정한다. 인자 (parameter) 는세개인데각각 rm, sf, tt 글꼴에대응한다. 예를들어본문서체 ( 바탕또는명조 ) 만을한겨레결체로바꾸고자하는경우, ( 한겨레결체가 hkbt라는이름으로시스템에이미설치되어있다고하고 ) 다음명령을지정하면된다. \SetHangulFonts{hkbt}{utgt}{uttz} 한겨레결체는한자영역이없는글꼴이므로한자폰트로지정할수는없을것이다. 문서전체의기본글꼴을변경하면서폰트에특정한미세타이포그래피조절값 을적용하려면, 5.2 절에서다루고있는대로 hfontspec 을이용하는방법을쓰는 것이좋다. 새로운폰트를설치할때그폰트에해당하는 hfontspec 파일이있는 지살펴본후, 이것을다음처럼호출하는것으로충분하다. \usehangulfontspec{xx} 물론이방법은 hfontspec.xx 가잘설정되어시스템에설치되어있어야할것 이다. oblivoir 클래스의부수스타일인 hfontsel 패키지를이용하여다음처럼하 는방법도있다. \usepackage{hfontsel} \SelectHfonts{XXaa,*,*}{*} 본문의바탕 ( 명조 ) 서체만을 XXaa 로바꾼다. 한자글꼴을별도로지정해야한다면, 예컨대 \SelectHfonts{hkbt,*,*}{utgt,*,*} 38

와같은방법이있다. 본문에서는다음과같이글꼴을바꾼다. 이렇게이루어진지정은현재의구역안에서 3 유효하다. \SetSerifFonts{utbt}{utbt} \SetSansFonts{utgt}{utgt} \SetMonoFonts{uttz}{uttz} 두인자는각각한글영역글꼴과한자영역글꼴에해당한다. 다음단락은 sanshangul에 utgs를할당하고한자는 은옛글 로식자한예이다. 4 이단락을시작하기전에다음과같이선언하였다. \SetSansFonts{utgs}{utyt}\sffamily TEX 은스탠퍼드대학의도날드크누쓰 (D. Knuth) 교수가만든文書組版言語이다. L A TEX 은문서準備시스템이다. 문서의일부에대해서폰트를바꿀때는이방법을사용하기를권장한다. 그래서 \grfamily, \gtfamily 또는 \hfontfamily 등의 ko.tex/euc 명령은제공하지않는다. 폰트의남용은한글문서의중요한폐해이다. 이를억제하게하기위해서는, 기본폰트들은아주쉽게사용하게하고, 다른글꼴은변경을가능하게는하되, 되도록쉽지않게만드는것이옳다고생각한다. 3.2 일시적으로폰트를변경하는방법기본세글꼴이외의별도글꼴을일시적으로사용하려하는경우를생각해보자. 일시적으로글꼴을바꾸는데사용되는명령으로 \SetAdhocFonts가제공된다. 이명령도두개의인자를취하는데, 하나는한글글꼴이름이고, 두번째것은한자글꼴이름이다. 앞서언급한대로이매크로에의하여한글과한자글꼴이바뀌더라도영문폰트에는영향을끼치지않는다. 우선사용하려는글꼴이은글꼴의일부라면, 간단히다음과같이새로운명령을자신이정의해서활용하도록한다. 여기서는은필기서체를사용하는경우를생각해보자. \newcommand\myfnt{\ttfamily\setadhocfonts{utpg}{utgt}} 3 \begingroup( 또는여는중괄호 ) 에서 \endgroup( 또는닫는중괄호 ) 까지 4 이부분이에러없이컴파일되려면 extra 폰트까지설치되어있어야한다. 39

이와같이설정한다음, 본문에서다음과같이사용한다. {\MYFNT 여기에단락이옴 } 위의예에서중괄호로이단락을묶어준이유는 \MYFNT 명령의범위를한정하기위해서이다. 중괄호로닫은이후에는다시원래의폰트설정으로복귀한다. 중괄호가혼란스러우면명령형명령을정의하여사용한다. 명령형 \textmyfnt를다음과같이정의할수있다. \DeclareTextFontCommand{\textMYFNT}{\ttfamily\SetAdhocFonts{utpg}{utgt}} 이명령을사용하여, \textmyfnt{ 여기에단락이옴 } 과같이코딩한결과는그림 4.2와같다. 여기에단락이옴 그림 4.2: 폰트지정예제 이명령의첫째줄 \ttfamily 를먼저선언한이유는영문글꼴을 tt family 로 하기위해서이다. 이선언은한글에도영향을미치므로 ( 앞서설명하였다 ), 한글글 꼴을바꾸기전에선언해둔다. 3.3 사용자폰트를활용하는방법만약, 원하는글꼴이은글꼴이아닌경우라면어찌할것인가? 사용자자신의트루타입한글폰트를 ko.tex/utf에서활용하려한다면, 먼저해당폰트를사용하기위해필요한파일세트가 KTUG 등에서제공되지않는지확인해보는것이필요하다. 예를들면백묵글꼴, 문화부글꼴, 윈도기본바탕 굴림글꼴, 한겨레결체, 아리따글꼴등에대한.tfm 및부수파일들이별도로제공되고있다. 이이외의폰트를활용하는것은, 호환성이나폰트의라이센스등의문제로그다지권장할만한일이라고하기어렵다고생각한다. 그러나정말로새로운트루타입폰트를사용하려하며, 폰트라이센스등에대하여자신이책임질수있고, 약간의복잡한설정작업을기꺼이해내려한다면, ttf2kotexfont 유틸리티를사용하면된다. 이유틸리티의사용법은이문서말미에별도의장으로마련되어있다 (113 페이지, 9장 ). 한편, 일반적인트루타입폰트의사용방법에대해서는 한글레이텍에서임의의트루타입사용하기 ( 김강수 & 주철, 2004:2007) 라는문서를참고하라. 40

3.4 엄격한문자체크한글문서작성상황은매우복잡해서, 현재사용중인폰트에사용자가표현하고자하는모든문자가구비되어있지않은경우가많다. 기본글꼴인은바탕만하더라도예컨대한자는 KS X 1001에해당하는 4888자밖에는들어있지않다. 그런데 TEX 은.tfm이아예없다면에러를내지만.tfm은있으나그.tfm의문자정의에해당글자가없는경우에는다만글자를식자하지않고경고만을보이고지나가면서.log에기록하는것에그친다. 그결과.log를세심하게살피지않으면혹부지불식간에특정문자를식자하지못하는결과를초래하게된다. 이를위하여도입된옵션이 [strictcharcheck] 이다. 이옵션을활성화하면 ϵ-tex 의원시명령을이용하여만약.tfm은있는데특정문자가없다면에러를발생시키면서컴파일을멈추게한다. 문서작성자는이를통해현재의상황을보다잘인식하고폰트를교체하거나임시폰트를지정하는등의조치를취할수있을것이다. 이옵션을지정하지않으면에러를보여주지않고다만.log에만기록한다. 제 4 절 몇가지한글화 4.1 기호문자처리기호문자중일부에대해서는미리식자방법을정의해두었다. 1 / 2, 1 / 4, 등의문자와같은몇가지한글기호문자는 [hangul] 옵션을준경우에식자할수있다. babel 패키지등을사용하거나하는경우한글기호문자의 \euro( ) 역시 TEX 코드로변환되므로, 예컨대 eurofont 패키지또는 eurosym 패키지를사용하여식자하도록하여야할것이다. Windows 기본한글입력기에서특수문자를입력하는방법은 ㄱ, ㄴ 등의키를누른다음 [ 한자 ] 키를눌러서선택하는것이다. 이방법으로입력되는특수문자의예를표 4.2에서보였다. 5 ㅎ 행에는그리스문자가할당되어있다. 텍스트그리스문자는현재본문기본한자글꼴에있는것으로식자되는데, 만약더나은텍스트그리스문자가필요하다면 babel 패키지를이용하여입력하도록한다. 은바탕글꼴로식자하면이러하다 : Τεχνή. 기호문자의직접입력과처리가가능하기는하지만, 일반적으로이기호문자를문서에서사용하는것을권장하지는않는다. 기호문자를써야할경우에는알맞은 L A TEX 의기호문자명령으로얻도록하는편이나을것이다. 5 \DeclareUnicodeCharacter 명령을이용하여 ucs 의문자설정을변경하는방법도있다. 41

자판 1 2 3 4 5 6 7 8 9 ㄱ! ',. / : ;? ^ _ `... \ ~ ˇ Ð ㄴ " ( ) [ ] { } ㄷ + - < = > ± ㄹ $ % F A % μl ml dl l kl cc mm3 cm3 m3 km3 fm nm μm mm cm km mm2 cm2 m2 km2 ha μg mg kg kt cal kcal db m s m s2 ps ns μs ms pv nv μv mv kv MV pa na μa ma ka pw nw μw mw kw MW Hz khz MHz GHz THz Ω kω MΩ pf nf μf mol cd rad rad s rad s2 sr Pa kpa MPa GPa Wb lm lx Bq Gy Sv C kg ㅁ # & * @ Co. TM a.m. p.m. R a o 표 4.2: Windows 특수문자입력방식에의한특수문자 42

4.2 한글문서서식한글문서는외국어문서와는달리몇가지보조적서식을가지고있다. 장절명령이별도로짜여져야하고, 행간이나단어간격도적절하게배치되어야한다. 이를위하여이패키지는 [hangul] 패키지옵션을제공한다. 이옵션이지시되면한글이름, 한글장절표제등을활성화하고행간을한글에알맞게설정한다. 또한, 장절명령과관련해서 ko.tex/euc 와동일한 \kscntformat 명령이작동한다. 그리고한글이름과관련해서 \ksnamedef 명령도작동한다. 이명령의의미와사용법에대해서는 88 페이지의 2.7절을보라. 한글이름에관한사항은 ko.tex/euc와 ko.tex/utf가동일하다. 89 페이지표 6.2 를참고하라. 4.3 장절명령 article 문서에서한글서식을사용하면서장절표제의 제 1 절 과같은양식을쓰지않으려면다음과같이설정하는것이일반적이다. 이매크로는 ko.tex/utf에 [hangul] 옵션을지정한경우에만쓸수있다. \kscntformat{section}{}{} 장절표제형식을설정하기위해서 ko.tex/utf와함께제공되는 dhucs-sectsty 를사용하는방법도있다. 이것은 Rowland MacDonnell 씨의 sectsty 패키지를한글화한것이다. 100 페이지의 4절을보라. sectsty 패키지에없는새로추가된옵션은 [ensec] 인데, 이옵션을주면 ko.tex/utf에 [hangul] 옵션을주었더라도제 1 절과같은형식이아니라영문문서에서와같이제와절이붙지않는형식으로식자된다. 그밖의사용법은 sectsty 패키지에서와같다. 다음은절모양을바꾸는한가지보기이다. \sectionfont{\nohang\sffamily\centering} 다음소절을이런방식으로바꾸어보았다. 4.4 강조 한글문서에서강조 ( 드러냄 ) 를처리하는방법은몇가지가있다. 4.4.1 기울인글꼴강조 강조 (emph) 선언 \em 이나명령 \emph 는일반적으로이탤릭글자로식자하는것 이영문문서의관행이다. 그러나우리글자에는이탤릭이없어서, 종래에는 fake 43

slanted 글꼴을사용하여왔다. 그러나 fake slanted 는 pdfl A TEX 이지원하지않을뿐 아니라, 설령구현된다하더라도강조의의미는별로드러나지않는장식적인문자 꼴이되어버리고만다. 4.4.2 드 러 냄 표 강조 ( 한글맞춤법, 1988) 의부록 문장부호 에드 러 냄 표가 규정되어있다. 이것은과거한글세로쓰기서적에서사용되던방점을찍는방법의연장선상에있는것이다. 드러냄표강조는한글라텍에서시작된것으로, ko.tex/euc와 ko.tex/utf가모두지원한다. \dotemph가드러냄표를식자하는명령인데, 이차이를간단히요약하면다음과같다. ko.tex/utf ko.tex/euc 비고 상점 \dotemph \dotemph \dotem a a 선언형 고리상점 \circemph \circemph \circem a [hangul] 임의의상점 \useremph \dotemph 명령으로점을한글글자위에찍을수있다. [hangul] 옵션을지시하면 \circemph와 \dotemph 그리고 \useremph, 세개의명령을사용할수있고, 이가운데 \useremph는사용자가설정가능하다. ko.tex/euc에서와는달리선언형은제공하지아니한다. 한글의본이름은 훈 민 정 음이다. 중요한것은 왜 사 느 냐가아니라 어 떻 게 사 느 냐하는문제이다. 사 용 자 정 의 드 러 냄 표는다음과같은방식으로사용할수있다. \renewcommand\useremphchar{\tiny } \setlength\useremphraisedim{10pt} \useremph{ 사용자정의드러냄표 } 4.4.3 글꼴변경강조최근들어서는돋움체글꼴을사용하는것이하나의관례가되어가고있다. hl A TEXp 는여기에그래픽글꼴을사용하였는데, 이것도시각적으로두드러지기만한다면나쁘지않은선택이라고생각한다. 이기능을사용하려면 dhucs-gremph 패키지를로드한다. 만약 emph에해당하는글꼴을그래픽이아닌다른글꼴로바꾸고싶다면다음과같이한다. 44

\usepackage[gremphhangul=unbm,gremphhanja=unyt]{dhucs-gremph} 첫번째인자는한글, 두번째인자는한자글꼴을지정하는것이다. 또, emph에해당하는문자를굵은글꼴로하고싶으면, \usepackage[bfemph]{dhucs-gremph} 와같이 [bfemph] 옵션을지정한다. 6 문서의중간에서기울임방식과글꼴변경 \emph 방식을바꿀수도있다. 각각 \regremph 명령과 \ungremph 를사용한다. \regremph 를지정한경우에는, 테스트. test. 와같이식자되고, \ungremph 를설정한경우에는, 테스트. test. 와같이식자된다. 4.4.4 밑줄강조 한글맞춤법에는밑줄강조에대해서도언급하고있다. \underline 으로밑줄을 그을수있지만, ulem 패키지를사용하면더나은결과를얻을수있다. 다음보기에서명사가 \uline{ 아닌 } 것은? 다음보기에서명사가아닌것은? ulem 패키지는옵션없이로드하면모든 \emph를밑줄강조로바꿔놓는다. 이를억제하고 \uline을썼을때만밑줄을그으려한다면 \usepackage[normalem]{ulem} 과같이하여야한다. 또한, ulem 패키지를 ko.tex/euc에서바로사용할수는없으므로 ko.tex/utf에서만 ulem을이용한밑줄방식을써야한다. ko.tex/euc에대해서는 99 페이지의 3절을참고하라. 6 은글꼴중에는 boldface 글꼴이따로마련되어있지않은것이많다는점에주의하라. 이경우에는 약간의 Warning 을내면서그냥보통글꼴로식자된다. 45

4.5 자간, 행간한글타이포그래피의가장기본적인요소인자간은 5.2에서소개한한글폰트스펙의일부로포함하여취급하게되었다. 종래자간 단어간격을지원하던 dhucs-interword 패키지는여전히제공되는데, 자간만을일시적으로바꾸거나할경우부분적으로활용할수있을것이다. 그러나이제자간의변경은폰트스펙을이용하는바꾸는것이좋겠다. 이패키지는단어간격의제어를위해사용하는정도로활용될수있을것으로본다. 행간을조절하기위해서는 dhucs-setspace 패키지를사용한다. 한글자간의설정에있어서반드시알아두어야하는사실을, [finemath] 옵션이활성화된경우에만자간설정이의미를갖는다는것이다. 이옵션을주지않은경우에는자간이언 제 나 0pt이며이것을바꿀수없다. dhucs-interword 패키지를로드하면 finemath가활성화되어있지않을경우오직단어간격에만영향을미친다. 이패키지를사용할때는순서에주의하여야하는데, dhucs-interword 패키지를 dhucs-setspace 패키지보다먼저올리도록하는것이좋다. \usepackage[hangul]{dhucs} \usepackage[default]{dhucs-interword} \usehangulfontspec{ut} \usepackage[hangul]{dhucs-setspace} dhucs-interword 패키지를로드한직후에문서에서사용되는한글폰트의폰트스펙을활성화해주는것은좋은선택이다 ( 세번째줄 ). dhucs-interword 패키지에대해서는 97 페이지 2.2 절, dhucs-setspace 패키지에대해서는 98 페이지 2.3절을보라. 4.6 장평특별한효과를위해서 좁은장평 을사용하려하는경우가있을수있다. 기본글꼴에 c-series의 93% 장평 7 이정의되어있으므로이것을사용할수있다. 다음문단은좁은장평으로텍스트를식자한것이다. \fontseries{c}\selectfont를선언하였다. 당연한말이겠지만, 좁은장평이준비되어있지않은글꼴 자모바탕등 은이렇게하더라도좁은장평을얻을수없다. 어떤폰트에좁은장평이마련되어있는지에대해서는 27 페이지 3절에서설명하였다. 7 표준 NFSS 에서 c-series 는보통 75% 의좁은폭이다. 그러나 ko.tex 에서는 92 또는 93% 를 c-series 에할당하였다. 한글의 75% 장평은거의무의미한변형이라고생각한다. 46

아아, 나는이제야도 ( 道 ) 를알았도다. 마음이어두운자는이목이누 ( 累 ) 가되지않는다. 이목만을믿는자는보고듣는것이더욱밝혀져서병이되는것이다. 이제내마부가발을말굽에밟혀서뒷차에실리었으므로, 나는드디어혼자고삐를늦추어강에띄우고, 무릎을구부려발을모으고안장위에앉았다. 한번떨어지면강이나물로땅을삼고, 물로옷을삼으며, 물로몸을삼고, 물로성정을삼을것이다. 이제야내마음은한번떨어질것을판단한터이므로, 내귓속에강물소리가없어졌다. 무릇아홉번건너는데도걱정이없어의자위에서좌와 ( 坐臥 ) 하고기거 ( 起居 ) 하는것같았다. 장평을자유로이바꾸는것은허용되지않는다. 8 다만미세타이포그래피를위하여아주미세한장평의조절을 pdftex 이행하는경우가있는데이것은 c-series 를선택하는것과는다른문제이다. 4.7 nonfrench spacing nonfrench spacing이란, 마침표뒤에별도의공백을조금더주는조판양식을말한다. 문장의마침을더잘드러나게할목적으로사용하는공백이라고한다. 유럽에서는이추가공백을허용하지않는것이일반적인조판형식인듯하다. 이기능을활성화하려면 [nonfrench] 옵션을지정한다. 추가공백의기본크기가마음에들지않으면 \xspaceskip으로변경할수있다. 다음두단락은동일한문장을각각 french-spacing과 nonfrench-spacing으로식자한예이다. 이인용문은연암의 하룻밤에아홉번물을건너다 ( 박지원, 1780) 로부터왔다. Frenchspacing: 아아, 나는이제야도 ( 道 ) 를알았도다. 마음이어두운자는이목이누 ( 累 ) 가되지않는다. 이목만을믿는자는보고듣는것이더욱밝혀져서병이되는것이다. 이제내마부가발을말굽에밟혀서뒷차에실리었으므로, 나는드디어혼자고삐를늦추어강에띄우고, 무릎을구부려발을모으고안장위에앉았다. 한번떨어지면강이나물로땅을삼고, 물로옷을삼으며, 물로몸을삼고, 물로성정을삼을것이다. 이제야내마음은한번떨어질것을판단한터이므로, 내귓속에강물소리가없어졌다. 무릇아홉번건너는데도걱정이없어의자위에서좌와 ( 坐臥 ) 하고기거 ( 起居 ) 하는것같았다. 8 그러나사용자가꼭필요하다면주어진폰트로부터특정장평의 tfm 을얻어내고이것을사용하도록 하는방법은있다. 다만그절차가좀복잡할따름이다. 이방법을설명하는것은이문서의목적과 무관하다. 47

Nonfrenchspacing: 아아, 나는이제야도 ( 道 ) 를알았도다. 마음이어두운자는이목이누 ( 累 ) 가되지않는다. 이목만을믿는자는보고듣는것이더욱밝혀져서병이되는것이다. 이제내마부가발을말굽에밟혀서뒷차에실리었으므로, 나는드디어혼자고삐를늦추어강에띄우고, 무릎을구부려발을모으고안장위에앉았다. 한번떨어지면강이나물로땅을삼고, 물로옷을삼으며, 물로몸을삼고, 물로성정을삼을것이다. 이제야내마음은한번떨어질것을판단한터이므로, 내귓속에강물소리가없어졌다. 무릇아홉번건너는데도걱정이없어의자위에서좌와 ( 坐臥 ) 하고기거 ( 起居 ) 하는것같았다. 4.8 각주한글라텍은한글문서의각주판짜기를위한 hangulfn.sty를제공한다. 이각주판짜기스타일의 ko.tex/utf 버전은 dhucsfn 패키지이다. 둘사이의다른점은 dhucsfn 이영문옵션만을받아들인다는점이다. 기본값은 superscript, hang 이다. 첨자괄호내어쓰기다항이어쓰기단순이어쓰기왼쪽맞춤들여쓰기들여왼쪽맞춤들여내어쓰기들여괄호맞춤 superscript parenthesis hang multipara para leftflush indent leftflushindent hangpar varhangpar 이패키지의사용법과각각의각주모양예시는 93 페이지 1 절을보라. 4.9 한글식카운터그림 4.3과같은한글카운터형식을제공한다. [hangul] 옵션을주면다음과같은카운터형식을몇개더사용할수있다. \hnum{cnt}, \hanjanum{cnt}, \HArabic{cnt} 48

\newcounter{test} \setcounter{test}{2} \jaso{test} ㄴ \pjaso{test} \ojaso{test} ᄂ \gana{test} 나 \ogana{test} 나 \pgana{test} \onum{test} 2 \pnum{test} ⑵ \oeng{test} b \peng{test} \hnum{test} 둘 \Hnum{test} 둘째 \hroman{test} ⅱ \hroman{test} Ⅱ 그림 4.3: 한글식카운터 cnt 값이 2 일때, 각각이, 二, 2 로표현된다. 4.10 자동조사명령자동조사는주로사후적으로결정되는숫자및문자열 ( 예컨대 \ref의결과확정되는참조번호 ) 에붙는조사의형태교체를자동화해주는기능을말한다. 참조된숫자가 1일경우에목적격조사는 을 이붙어야하지만 2일경우에는 를 이붙어야한다. 이참조된숫자들은사후적으로확정되므로미리 을 또는 를 가운데어떤것을써야할지알수없기때문에, 우리말문서의작성에서는빼놓을수없는기능이다. 자동조사명령은다음열두가지가있다. 9 \ 이 \ 가, \ 을 \ 를, \ 와 \ 과, \ 로 \ 으로, \ 은 \ 는, \ 라 \ 이라마지막의 \ 라, \ 이라는서술격조사어간 이 에어미 ( 의일부 ) 가붙은형태로서서술격조사어간이생략되는경우가이이외에도더있지만, 다른경우에는명백히생략되지않아도문장이어색하지않다고보아 ( 이 ) 라 만을자동조사명령으로채택한것이다. 자동조사의기능과그사용법은 85 페이지 2.6 절을참조하라. 9 ko.tex/euc 에는 \ ㅡ 와 \ ㅣ 가더있다. 49

자동조사사용에있어서알아두어야할점이하나있다. \section 등장절명령이나 \caption과같은명령의인자로들어간 ( 소위 moving arguments ) 자동조사명령은 \ref 등이 \protect되어있다면대체로잘작동한다. 그러나 \nameref 되는문자열안에들어있는자동조사명령은 hyperref 패키지의문제점으로인하여오류를토해내므로주의를요한다. 4.11 enumerate 의항목머리 enumerate 환경에서글머리로한글식카운터를쓰고자할때가있다. 보통의방법은다음과같이하는것이다. \renewcommand\theenumi{\pgana{enumi}} \renewcommand\labelenumi{\theenumi} \begin{enumerate} \item 가나다 \item 라마바 \item 사자차 \item 카파하 \item 카타파 \end{enumerate} 결과는다음과같다. 가나다 라마바 사자차 카파하 카타파이코딩은상당히번거롭고, 일단카운터형식이바뀐후로계속영향을미친다는문제가있다. 한글식카운터형식을글머리에붙이는쉬운방법으로두가지가있다. 하나는 enumerate 패키지의옵션정의를이용하는방법인데, 원래이패키지가제공하던기능을한글식글머리로확장한것이다. \usepackage{dhucs-enumerate} 이선언은 enumerate 패키지를스스로로드한다. 그리고본문에서 50

\begin{enumerate}[ 항목가 )] \item 가나다 \item 라마바 \end{enumerate} 과같이항목머리의첫글자를옵션으로지시한다. 위의결과는다음과같다. 항목가 ) 가나다 항목나 ) 라마바 이렇게항목머리로지정할수있는것은원래의 enumerate 패키지가제공하는 A, a, i, I, 1 이외에추가로정의된가, ㄱ, ᄀ, 가,,, 1, ⑴,, a, ⅰ, Ⅰ 들이있다. 한편, 문단형리스트를구현하는역할을하는 paralist 패키지도이와비슷한 기능을제공하는데, 이를위하여 dhucs-paralist 패키지가마련되어있다. enumitem 패키지를이용하는경우에는먼저 preamble 에다음과같이선언한다. %\usepackage{enumitem} \usepackage{dhucs-enumitem} 그리고, 다음과같이코딩한다. \begin{enumerate}[label={\bfseries\pgana*.}] \item 가나다 \item 라마바 \end{enumerate} enumitem 패키지에는이외에도요긴한기능이많다. 예컨대만약문서전체의 enumerate 의항목머리를전부일정한형식으로바꾸고자한다면 enumitem 패키 지의전역형식선언을이용할수있다 (ver2.0). 다음예는 label 과더불어항목간 간격도함께없앤예이다. \setenumerate[1]{label={\pgana*},noitemsep} \setenumerate[2]{label={\ogana*},nolistsep} enumerate 패키지와 enumitem 패키지는서로동일한환경을다른방식으로 재정의하기때문에함께쓰기는어려울것이다. 둘가운데적당한것을골라서사 용하면되는데, 어느경우든한글식항목머리를정의할수있게되었다. 51

제 5 절 미세조정 ko.tex/utf 의가장큰특징중하나는한글문서전반에걸쳐미세조정을적용하여, 미세타이포그래피를부분적으로구현하려하였다는것이다. 이기능은 [finemath] 옵션에의하여모두활성화된다. 5.1 수식과의간격 TEX 의탁월한점가운데하나가수식조판일것이다. 특히 TEX 수식은미세한간격을적절하게배분함으로써아름다운수식을만들어내는것으로유명하다. 영문의경우행중수식은항상앞뒤에스페이스를두면서다음단어와연결되므로문장중에들어가도어색하지않은데비해, 한글문서에서는조사등이수식뒤에잇대어붙기때문에이사이에간격이없으면수식폰트와한글폰트사이에약간어색한상충이생긴다. 이문제를해결하기위한다양한연구와토론이 KTUG에서이루어졌다. 그결과, [finemath] 라는새로운옵션이생기게되었다. [finemath] 옵션을주면대부분의행중수식과의간격을자동으로설정한다. 이효과는수식, 영문자, 괄호등에도영향을미친다. 다음은 [finemath] 로조판한결과이다. 한글문자와이어지는위치에미세한간격이추가되고있음을확인해보라. x 에임의의값이주어지면 f (x) 를통해서그 x 에대응하는 y 를계산 할수있다. 예를들어 x = 2 로 x 값이주어졌다면 x + y 는.... 숫자 01234567 과영문 ( 알파벳 ) 자모 abcd 와괄호에도영향을미친다. 5.2 한글폰트스펙한글문서의조판에서영문폰트와의불일치또는부조화가오래도록문제가되어왔다. 이문제를근원적으로해결하려면한글폰트의사용방법과디자인전반에걸친재검토가요구된다. 궁극적으로만족할만한해결책을얻기까지는더많은연구와노력, 폰트디자인등이필요할것으로생각하나, 우선이문제를피해가면서아름다운한글문서를조판하기위하여 ko.tex/utf는한글폰트스펙이라는개념을도입하였다. 10 한글폰트스펙은 hfontspec.?? 라는별도의파일로지정한다. 이파일에적어넣을수있는스펙값들은대략다음과같다. 10 폰트스펙은 finemath 옵션을선언해야활성화된다. 52

hangul unit 값 (hu) 한글기본자간 (interhchar) 문장부호수직위치조정값 한글및한자폰트패밀리명칭예를들면, hfontspec.ut이라는기본글꼴폰트스펙의내용은다음과같이되어있다. hu =.057175em interhchar = -.0852em fullstoplower =.15ex exclamationlower =.2ex questionlower =.2ex serifhangulfont = utbt sanshangulfont = utgt monohangulfont = uttz serifhanjafont = utbt sanshanjafont = utgt monohanjafont = uttz 위의모든값이지정되어야한다. hu (hangul unit) 이라는단위는 ko.tex 이내부적으로사용하는 ( 논리적인 ) 길이단위로서, 한글 1전각폭의 1/16 로정의된다. 여기서 1전각이란 1em을의미하는것이아니라폰트디자인상평균적인가로폭의길이를의미하는것인데, 위의기본설정에서이값을.057175em 으로잡은것은 ko.tex 의기본자간 0.0852em 을제외한 0.9148em 을 16등분한값이다. 즉, 16 hu + interhchar = 1em 이되도록되어있다. 이길이단위의필요성과사용에대해서 ( 김강수, 2007b) 에서논의된바있다. hu는 [finemath] 의수평간격에영향을미친다. 사용자가이폰트스펙값을임의로바꾸는것은판면에심각한영향을미칠수있으므로, 자신이무슨일을하고있는가확신이있을때만변경하도록하라. 폰트스펙값들은폰트패키지를만드는사람이제공하는것이옳을것이다. 위에적은값을이용하여자간을설정하고문장부호의수직위치를조절하게하려면, [finemath] 옵션을활성화하면된다. 문서전체에대해서또는일부에대해서문장부호수직위치조절이적용되지않게하려면 \disablehangulfontspec 53

이라고선언한다. 특정폰트스펙을적용하도록하는매크로는다음과같다. 예를들어 xx라는폰트에대하여 hfontspec.xx가준비되어있다면, \usehangulfontspec{xx} 를선언하면된다. 기본글꼴 ( 은글꼴 type 1) 에대한폰트스펙 (ut) 은 kotex을 \usepackage하는시점에서자동으로불러들인다. 아래예문은각각의경우문장부호및자간등이어떻게달라지는가를예시한것이다. 문장부호의타이포그래피에대해서는 ( 김강수, 2007b) 에서그간의토론을요약하고의견을제시하였고이것을 ko.tex 에서구현한것이다. 한글문장부호에영문폰트의것을쓸때는베이스라인불일치등을교정해주어야한다. 예를들어, 온점, 느낌표, 물음표등의수직위치가그러하다. 자! 비교해볼까? 한글문장부호에영문폰트의것을쓸때는베이스라인불일치등을교정해주어야한다. 예를들어, 온점, 느낌표, 물음표등의수직위치가그러하다. 자! 비교해볼까? 5.3 Micro Typography pdftex 의저자인 Hàn Th ê Thành 의박사학위논문 Micro-typographic extensions to the TEX typesetting system(thành, 2000) 은 pdftex 이라는엔진으로 margin kerning 과 font expansion 을가능하게해주는마이크로타이포그래피개념을 TEX 세계에도입하였다. 마진커닝 (margin kerning) 이란, 여백공간이가지런히보이도록하기 위해글자들을텍스트블록의마진쪽으로아주조금이동시켜주는테크 닉이다. 마진커닝을적용하지않으면일부문자들이마진경계가시작 하기전에끝나기때문에오히려울퉁불퉁하게보인다. 이것은문장부호 끌어내기 (hanging punctuation) 와비슷한것이지만문장부호만이아니라 일반적인글자에도적용할수있다. 이를적용함으로써텍스트블록의모 양을현저히개선할수있다. 폰트확장 (font expansion) 이란단어간격이좀더균일하게보이도록 하기위해폰트의폭을약간좁게혹은넓게만드는테크닉이다.... 폰트 를넓게혹은좁게만듦으로써개행엔진이더나은행나눔을할수있게 된다. 11 11 Hàn Th ê Thành, (Thành, 2001), p. 146. 54

나는여름방학이되어집선이나음식솜씨도나타내에내려오면한번씩은이기시작했다. 나는사랑에집을찾는다. 이집에는나들어가어른들을뵙고수인보다한살아래인, 열세살사겸이런이야기저런이되는누이뻘되는소녀가있야기로얼마지체한뒤에, 었다. 실상촌수를따져가안건넌방으로안내를받았며통내외까지할절척도아다. 점심대접을하려는것니지만, 서로가깝게지내는이다. 사랑방은머슴이며일터수라, 내가가면여간반꾼들이드나들고어수선했가워하지아니했고, 으레그으나, 건넌방은조용하고깨소녀를오빠가왔다고불러끗하다. 방도말짱히치워내어인사를시키곤했다. 져있고, 자리도깔려있었소녀의몸매며옷매무새는다. 아주머니는오빠에게나제법색시꼴이박히어가기와인사하라고소녀를불러시작했다. 그때만해도시골냈다. 서좀범절있다는가정에서는열살만되면벌써처녀로서의예모를갖추었고침 font expansion 적용안함 1 나는여름방학이되어집이나음식솜씨도나타내기에내려오면한번씩은이시작했다. 나는사랑에들어집을찾는다. 이집에는나가어른들을뵙고수인사겸보다한살아래인, 열세살이런이야기저런이야기로되는누이뻘되는소녀가있얼마지체한뒤에, 안건넌었다. 실상촌수를따져가방으로안내를받았다. 점심며통내외까지할절척도아대접을하려는것이다. 사랑니지만, 서로가깝게지내는방은머슴이며일꾼들이드터수라, 내가가면여간반나들고어수선했으나, 건넌가워하지아니했고, 으레그방은조용하고깨끗하다. 방소녀를오빠가왔다고불러도말짱히치워져있고, 자내어인사를시키곤했다. 소리도깔려있었다. 아주머니녀의몸매며옷매무새는제는오빠에게나와인사하라법색시꼴이박히어가기시고소녀를불러냈다. 작했다. 그때만해도시골서좀범절있다는가정에서는열살만되면벌써처녀로서의예모를갖추었고침선 font expansion 적용 1 그림 4.4: Font Expansion 한글문서에있어서행나눔을결정할때부득이하게 벙벙한 공백을남기고개행해야하는경우가빈번했다. 또한문장부호가행끝에걸리는경우여백의모양이균일하지않게보이는것을어찌할수없었다. 마진커닝과폰트확장이매우요긴하게요청되는바였지만, 이를쉽게구현하기어려웠으며, 간간이마진커닝정도가쓰이는데그쳤다. ko.tex/utf v0.1.0은 pdftex 의폰트확장을활용할수있게한다. 12 폰트확장을한글에적용하기위해서는다음조건이갖추어져야한다. 1. pdfl A TEX 으로컴파일할것 2. type 1 혹은트루타입글꼴이사용될것 3. microtype 패키지에의한설정이활성화될것그림 4.4는폰트확장을적용하지않은경우와그것을적용한경우의행나눔과스페이스간격을비교해본것이다. 더균일하고아름다운판면이생성되는것을눈으로확인할수있을것이다. 샘플문서의소스중에서 font expansion과관련된부분은다음과같다. \usepackage[verbose=true]{microtype} 12 김도현, microtype 을아시나요, http://kts.ktug.kr/node/207. 55