summaryrefslogtreecommitdiff
path: root/language/korean/kotex-plain/hangulcweb.tex
blob: 84a0ee26b689066a0f7110c4558120accb3d4a8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
%% File hangulcweb.tex
%%
%% (C) Copyright 2007-2013 Dohyun Kim <nomos at ktug org>
%%                         Soojin Nam <sjnam at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%  http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2006/05/20 or later.
%%
\input kotexplain

\ifpdftex
  \ifdefined\pdfgentounicode
    \input glyphtounicode
    \pdfgentounicode=1
  \fi
\fi

\baselineskip 15pt

% 기본 폰트를 한글을 포함하도록 다시 정의합니다.
\expandafter\def\expandafter\tt\expandafter{\tt\hfontname{nanumgtm}}
\expandafter\def\expandafter\sl\expandafter{\sl\hfontname{nanummjmo}}
\expandafter\def\expandafter\it\expandafter{\it\hfontname{nanummjmo}}
\expandafter\def\expandafter\bf\expandafter{\bf\hfontname{nanummjb}}

% 각종 폰트를 한글을 포함하도록 재정의
\let\otitlefont=\titlefont \def\titlefont{\hfont{nanummjm}{at 13pt}\otitlefont}
\let\ottitlefont=\ttitlefont \def\ttitlefont{\hfont{nanumgtm}{at 13pt}\ottitlefont}
\let\orgninerm=\ninerm \def\ninerm{\hfont{nanummjm}{at 9pt}\orgninerm}
\let\orgeightrm=\eightrm \def\eightrm{\hfont{nanummjm}{at 8pt}\orgeightrm}
\let\orgsc=\sc \def\sc{\hfont{nanummjm}{at 8pt}\orgsc}
\let\orgtentex=\tentex \def\tentex{\hfontname{nanumgtm}\orgtentex}

\expandafter\edef\csname AT(@):catcode\endcsname
  {\noexpand\catcode`@\the\catcode`@}
\catcode`\@=11

% names of the sections
\def\fin{\par\vfill\eject % this is done when we are ending the index
  \ifpagesaved\null\vfill\eject\fi % output a null index column
  \if L\lr\else\null\vfill\eject\fi % finish the current page
  \parfillskip 0pt plus 1fil
  \def\grouptitle{마디 목차}
  \let\topsecno=\nullsec
  \message{Section names:}
  \output={\normaloutput\page\lheader\rheader}
  \setpage
  \def\note##1##2.{\quad{\eightrm\ifacro{\pdfnote##2.}\else{##2}\fi##1.}}
  \def\Q{\note{번 마디에서 인용된다}} \let\Qs=\Q
  \def\U{\note{번 마디에서 사용된다}} \let\Us=\U
  \def\I{\par\hangindent 2em}\let\*=*
  \ifacro \def\outsecname{\bschar376\bschar377\bschar271\bschar310\bschar265\bschar024\bschar000 \bschar272\bschar251\bschar314\bschar050}% 마디 목차
    \let\Xpdf\X
  \ifpdftex
    \edef\0{\string\0}%
    \edef\1{\string\1}%
    \edef\2{\string\2}%
    \edef\3{\string\3}%
    \makebookmarks \pdfdest name {NOS} fitb
    \pdfoutline goto name {NOS} count -\secno {\outsecname}
    \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
      {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
      \pdfoutline goto num \the\toksA \expandafter{\the\toksE}}
  \else\ifpdf
    \special{pdf: outline -1 << /Title (\outsecname)
      /Dest [ @thispage /FitH @ypos ] >>}
    \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.%
      {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}%
      \special{pdf: outline 0 << /Title (\the\toksE)
        /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}}
  \fi\fi\fi
  \readsections}

% CWEB USER MANUAL의 부록C 14.에 해당하는 모든 매크로를 재정의 
\def\inote#1#2#3.{\Y\noindent{\hangindent2em%
  \baselineskip10pt\eightrm#1~\ifacro{\pdfnote#3.}\else#3\fi#2.\par}}
\def\rnote#1#2.{\Y\noindent{\hangindent2em%
  \baselineskip10pt\eightrm\ifacro{\pdfnote#2.}\else#2\fi#1.\par}}
\def\A{\rnote{번 마디도 살펴보라}} \let\As=\A
\def\Q{\inote{이 코드는}{번 마디에서 인용된다}} \let\Qs=\Q
\def\U{\inote{이 코드는}{번 마디에서 사용된다}} \let\Us=\U
\def\ET{,~} \def\ETs{\ET} 
\def\ATH{{\acrofalse\X\kern-.5em:전처리기 정의들\X}}
\def\ch{\note{Change 파일에서 변경된 마디들:}
  \let\*=\relax}
\def\today{\number\year 년 \number\month 월 \number\day 일}
\def\datethis{\def\startsection{\leftline{\sc\today\ \ \hours}\bigskip
  \let\startsection=\stsec\stsec}}
\def\datecontentspage{% changed in version 3.66
  \def\botofcontents{\vfill
   \centerline{\covernote}
   \bigskip
   \leftline{\sc\today\ \hours}}} % timestamps the contents page

% 단순한 한글화로 목차 재정의
\def\con{\par\vfill\eject % finish the section names
% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers
  \rightskip 0pt \hyphenpenalty 50 \tolerance 200
  \setpage \output={\normaloutput\page\lheader\rheader}
  \titletrue % prepare to output the table of contents
  \pageno=\contentspagenumber
  \def\grouptitle{목차}
  \message{Table of contents:}
  \topofcontents \startpdf
  \line{\hfil 마디\hbox to3em{\hss 쪽}}
  \let\ZZ=\contentsline
  \readcontents\relax % read the contents info
  \botofcontents \end} % print the contents page(s) and terminate

\ifacro\else\expandafter\endinput\fi % pdf mode에서만...
% ascii문자는 앞에 zero 붙여 ucs string으로 만든다.
\def\addF#1{\addtokens\toksF{\bschar000#1}\tokprocessedtrue}
\def\makeoutlinetoks{\Tnumfalse
  % BOM(0xfeff)을 outline string 맨 앞에 첨가한다.
  \addtokens\toksF{\bschar376\bschar377}%
  % ucs 패키지의 \unichar 재정의; 그룹내이므로 안전.
  \def\unihangulchar##1{\ucsoltooctal{##1}\makeolnexttok}%
  \afterassignment\makeolproctok\let\nxt=
}
\def\makeolproctok{\tokprocessedfalse
  \let\next\makeolnexttok % default
  \ifx\nxt\outlinedone\let\next\outlinedone
  \else\ifx{\nxt \else\ifx}\nxt \Tnumfalse \instrfalse % skip braces
  \else\ifx$\nxt % or a $ sign
  \else\ifx^\nxt \addF^\else\ifx_\nxt \addF_% sanitize ^ and _
  \else\ifx\nxt\spacechar \addF\space
  \else\if\noexpand\nxt\relax % we have a control sequence; is it one we know?
    \ifx\nxt~\addF\space
    \else\ifx\nxt\onespace\addF\space
    \else\the\usersanitizer
    \iftokprocessed\else\makeolproctokctli
    \iftokprocessed\else\makeolproctokctlii
    \iftokprocessed\else\makeolproctokctliii % if not recognised, skip it
    %%%%% skip 하지 않고 한글 처리!!!
    %\iftokprocessed\else\let\next\nxt\fi
    \iftokprocessed\else\makeolproctokhangul\fi
    %%%%%
    \fi\fi\fi\fi\fi
   \else  % we don't have a control sequence, it's an ordinary char
    \ifx/\nxt \addF{\string\/}% quote chars special to PDF with backslash
    \else\ifx(\nxt \addF{\string\(}\else\ifx)\nxt \addF{\string\)}%
    \else\ifx[\nxt \addF{\string\[}\else\ifx]\nxt \addF{\string\]}%
    \else\expandafter\makeolproctokchar\meaning\nxt
   \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  \next
}
\def\makeolproctokhangul{%
  % 음, 이렇게 단순무식하게 ifx 검사하는 것이 안전하긴 한데
  % 더 좋은 방법은 없을까?
  \ifx^^c2\nxt\let\next\nxt\else
  \ifx^^c3\nxt\let\next\nxt\else
  \ifx^^c4\nxt\let\next\nxt\else
  \ifx^^c5\nxt\let\next\nxt\else
  \ifx^^c6\nxt\let\next\nxt\else
  \ifx^^c7\nxt\let\next\nxt\else
  \ifx^^c8\nxt\let\next\nxt\else
  \ifx^^c9\nxt\let\next\nxt\else
  \ifx^^ca\nxt\let\next\nxt\else
  \ifx^^cb\nxt\let\next\nxt\else
  \ifx^^cc\nxt\let\next\nxt\else
  \ifx^^cd\nxt\let\next\nxt\else
  \ifx^^ce\nxt\let\next\nxt\else
  \ifx^^cf\nxt\let\next\nxt\else
  \ifx^^d0\nxt\let\next\nxt\else
  \ifx^^d1\nxt\let\next\nxt\else
  \ifx^^d2\nxt\let\next\nxt\else
  \ifx^^d3\nxt\let\next\nxt\else
  \ifx^^d4\nxt\let\next\nxt\else
  \ifx^^d5\nxt\let\next\nxt\else
  \ifx^^d6\nxt\let\next\nxt\else
  \ifx^^d7\nxt\let\next\nxt\else
  \ifx^^d8\nxt\let\next\nxt\else
  \ifx^^d9\nxt\let\next\nxt\else
  \ifx^^da\nxt\let\next\nxt\else
  \ifx^^db\nxt\let\next\nxt\else
  \ifx^^dc\nxt\let\next\nxt\else
  \ifx^^dd\nxt\let\next\nxt\else
  \ifx^^de\nxt\let\next\nxt\else
  \ifx^^df\nxt\let\next\nxt\else
  \ifx^^e0\nxt\let\next\nxt\else
  \ifx^^e1\nxt\let\next\nxt\else
  \ifx^^e2\nxt\let\next\nxt\else
  \ifx^^e3\nxt\let\next\nxt\else
  \ifx^^e4\nxt\let\next\nxt\else
  \ifx^^e5\nxt\let\next\nxt\else
  \ifx^^e6\nxt\let\next\nxt\else
  \ifx^^e7\nxt\let\next\nxt\else
  \ifx^^e8\nxt\let\next\nxt\else
  \ifx^^e9\nxt\let\next\nxt\else
  \ifx^^ea\nxt\let\next\nxt\else
  \ifx^^eb\nxt\let\next\nxt\else
  \ifx^^ec\nxt\let\next\nxt\else
  \ifx^^ed\nxt\let\next\nxt\else
  \ifx^^ee\nxt\let\next\nxt\else
  \ifx^^ef\nxt\let\next\nxt\else
  \ifx^^f0\nxt\let\next\nxt\else
  \ifx^^f1\nxt\let\next\nxt\else
  \ifx^^f2\nxt\let\next\nxt\else
  \ifx^^f3\nxt\let\next\nxt\else
  \ifx^^f4\nxt\let\next\nxt\else
  %%% really skip it.
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
}
\def\ucsoltooctal#1{%
  \count@\dimexpr.00006103515625\dimexpr#1sp\relax\relax
  \edef\ucsoltempa{\number\count@}%
  \@tempcnta\numexpr#1-'40000*\count@\relax
  \count@\dimexpr.00048828125\dimexpr\@tempcnta sp\relax\relax
  \edef\ucsoltempa{\ucsoltempa\number\count@}%
  \@tempcnta\numexpr\@tempcnta-'4000*\count@\relax
  \count@\dimexpr.00390625\dimexpr\@tempcnta sp\relax\relax
  \edef\ucsoltempa{\ucsoltempa\number\count@}%
  \@tempcnta\numexpr\@tempcnta-'400*\count@\relax
  \count@\dimexpr.015625\dimexpr\@tempcnta sp\relax\relax
  \edef\ucsoltempb{\number\count@}%
  \@tempcnta\numexpr\@tempcnta-'100*\count@\relax
  \count@\dimexpr.125\dimexpr\@tempcnta sp\relax\relax
  \edef\ucsoltempb{\ucsoltempb\number\count@}%
  \edef\ucsoltempb{\ucsoltempb\number\numexpr\@tempcnta-'10*\count@\relax}%
  \addtokens\toksF{\bschar\ucsoltempa\bschar\ucsoltempb}\tokprocessedtrue
}

\csname AT(@):catcode\endcsname

\endinput

%%% changes for ko.Tex 2.0, by Karnes.