diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/cjk/CJK.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/cjk/CJK.sty | 1114 |
1 files changed, 0 insertions, 1114 deletions
diff --git a/Master/texmf-dist/tex/latex/cjk/CJK.sty b/Master/texmf-dist/tex/latex/cjk/CJK.sty deleted file mode 100644 index af9534e3da6..00000000000 --- a/Master/texmf-dist/tex/latex/cjk/CJK.sty +++ /dev/null @@ -1,1114 +0,0 @@ -% This is the file CJK.sty of the CJK package -% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e -% -% created by Werner Lemberg <wl@gnu.org> -% -% Version 4.8.1 (10-Aug-2008) - -% Copyright (C) 1994-2008 Werner Lemberg <wl@gnu.org> -% -% This program is free software; you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation; either version 2 of the License, or -% (at your option) any later version. -% -% This program is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with this program in doc/COPYING; if not, write to the Free -% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, -% MA 02110-1301 USA - -\NeedsTeXFormat{LaTeX2e}[2001/06/01] -\def\fileversion{4.8.1} -\def\filedate{2008/08/10} -\ProvidesPackage{CJK}[\filedate\space\fileversion] - -\RequirePackage{MULEenc} - -\newif\ifCJK@lowercase@ -\CJK@lowercase@false -\DeclareOption{lowercase}{\CJK@lowercase@true} - -\DeclareOption{global}{\let\CJK@global \global - \let\CJK@active \global - \let\CJK@local \global} -\DeclareOption{local}{\let\CJK@global \relax - \let\CJK@active \global - \let\CJK@local \global} -\DeclareOption{active}{\let\CJK@global \relax - \let\CJK@active \relax - \let\CJK@local \global} -\DeclareOption{encapsulated}{\let\CJK@global \relax - \let\CJK@active \relax - \let\CJK@local \relax} - -\ExecuteOptions{local} - -\ProcessOptions - - -% we suppress any unwanted spaces produced by linefeeds. - -\endlinechar \m@ne - - -% the use of the internal LaTeX macro `\@ifundefined' can be slightly -% irritating. After it has been called, the tested macro is no -% longer undefined but expands to \relax. Where possible, we use -% the following macro which doesn't have this side effect. - -\def\CJK@ifundefined#1{ - \ifx #1\@undefined - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} - - -% our input macro. For compatibility with ArabTeX, the catcode of `<' -% is preserved. - -\def\CJK@input#1{ - \makeatletter - \edef\CJK@lesscatcode{\noexpand\catcode`< \the\catcode`<} - \catcode`\< 12\relax - \endlinechar \m@ne - \input #1\relax - \endlinechar `\^^M - \CJK@lesscatcode - \makeatother} - - -% our symbol macro. It honours the \ifCJK@bold@ flag (to be set in the .fd -% files) for producing poor-man's bold fonts; if it is raised we print -% the character three times with a small horizontal shift. -% -% The user commands to set and unset \ifCJK@bold@ are \CJKbold and -% \CJKnormal respectively. -% -% \CJKboldshift defines the shift used to imitate bold fonts. - -\newif\ifCJK@bold@ -\newcommand{\CJKbold}{\global\CJK@bold@true} -\newcommand{\CJKnormal}{\global\CJK@bold@false} -\newcommand{\CJKboldshift}{0.015em} - -\DeclareRobustCommand{\CJKsymbol}[1]{ - \symbol{#1} - \ifCJK@bold@ - \hbox to \CJKboldshift{\hss\symbol{#1}} - \hbox to \CJKboldshift{\hss\symbol{#1}} - \fi} -\let\CJKpunctsymbol\CJKsymbol - -% the same for HLaTeX which uses the ligature mechanism - -\DeclareRobustCommand{\CJKsymbols}[2]{ - \char #1\char #2\relax - \ifCJK@bold@ - \hbox to \CJKboldshift{\hss\char #1\char #2} - \hbox to \CJKboldshift{\hss\char #1\char #2} - \fi} - - -% the auxiliary macro \CJK@numbToHex converts number #2 into a two-digit -% hex string and assigns it globally to #1. - -\def\CJK@numbToHex#1#2{ - {\count\z@ #2\relax - \count\tw@ \count\z@ - \divide\count\z@ \sixt@@n - - \count@ \count\z@ - \multiply\count@ \sixt@@n - \advance\count\tw@ -\count@ - - \xdef#1{ - \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}}} - - -% the auxiliary macro \CJK@numbxToHex converts number #2 into a four-digit -% hex string and assigns it globally to #1. - -\def\CJK@numbxToHex#1#2{ - {\count\thr@@ #2\relax - \count\tw@ \count\thr@@ - \divide\count\tw@ \sixt@@n - \count\@ne \count\tw@ - \divide\count\@ne \sixt@@n - \count\z@ \count\@ne - \divide\count\z@ \sixt@@n - - \count@ \count\tw@ - \multiply\count@ \sixt@@n - \advance\count\thr@@ -\count@ - \count@ \count\@ne - \multiply\count@ \sixt@@n - \advance\count\tw@ -\count@ - \count@ \count\z@ - \multiply\count@ \sixt@@n - \advance\count\@ne -\count@ - - \xdef#1{ - \hexnumber@{\count\z@} - \hexnumber@{\count\@ne} - \hexnumber@{\count\tw@} - \hexnumber@{\count\thr@@}}}} - - -% the encoding of the `UTF8' environment -- the xCJK package overwrites -% this. - -\edef\CJK@UnicodeEnc{UTF8} - - -% with \CJKchar you can access a character directly at a low level: -% the parameters are the first and the second byte of the CJK character -% code. The second parameter will be ignored if you address one-byte -% encoded characters in SJIS. -% -% the optional parameter selects the encoding (using \CJKenc). -% -% for Unicode characters you must select UTF-8 encoding (but enter real -% Unicode values). -% -% you can enter character codes with or without the 8th bit set (GL or -% GR form) except for SJIS, Bg5 and UTF-8 encodings. - -\DeclareRobustCommand{\CJKchar}[3][]{ - {\CJK@nobind@true - - \edef\CJK@tempenc{#1} - \ifx\CJK@tempenc \@empty - \else - \let\CJK@oldenc \CJK@@@enc - \CJKenc{#1} - \fi - - \edef\CJK@temp{UTF8} - \ifx\CJK@temp \CJK@@@enc - \Unicode{#2}{#3} - \else - \@tempcnta #2 - \edef\CJK@tempa{#3} - \ifx\CJK@tempa \@empty% % test for one-byte SJIS characters - \else - \@tempcntb #3 - \ifnum \CJK@min > 160\relax - \ifnum\@tempcnta < 128\relax - \advance\@tempcnta 128\relax - \advance\@tempcntb 128\relax - \fi - \fi - \edef\CJK@tempa{\the\@tempcntb} - \fi - - \edef\CJK@temp{\the\@tempcnta} - \expandafter\csname CJK@\CJK@temp\expandafter\endcsname - \expandafter{\CJK@tempa} - \fi - - \ifx\CJK@tempenc \@empty - \else - \ifx\CJK@global \global - \CJKenc{\CJK@oldenc} - \fi - \fi} - - \CJK@ignorespaces} - - -% with \Unicode you can access a Unicode character directly at a low level: -% the parameters are the first and the second byte of the Unicode (real -% Unicode values, not UTF-8). -% -% If the Unicode value is greater than U+FFFF, put the first two bytes -% into #1, and the third byte into #2. - -\DeclareRobustCommand{\Unicode}[2]{ - {\edef\CJK@temp{UTF8} - \ifx\CJK@temp \CJK@@@enc - \else - \PackageError{CJK}{ - You can't use \protect\Unicode\space here}{ - You must activate UTF-8 encoding to use \protect\Unicode.} - \fi - \ifnum #1 > 255\relax - \CJK@numbxToHex{\CJK@gtemp}{#1} - \else - \CJK@numbToHex{\CJK@gtemp}{#1} - \fi - \def\CJK@tempa##1{ - \lowercase{\edef\CJK@plane{##1}}} - \expandafter\CJK@tempa\expandafter{\CJK@gtemp} - \usefont{\CJK@enc}{\CJK@family}{\CJK@series}{\CJK@shape} - - \ifCJK@CJK@ - \CJKsymbol{#2} - \else - \expandafter\CJK@testInList\expandafter\CJK@uniPunct - \expandafter{\CJK@plane} - \ifCJK@% % punctuation character - \CJK@numbToHex{\CJK@gtemp}{#2} - \CJK@testLastCJK - \ifCJK@ - \CJK@testPostPunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp} - \ifCJK@ - \ifCJK@CJK@ - \CJK@nobreakglue - \fi - \else - \ifCJK@hangul@ - \discretionary{}{}{} - \else - \CJKglue - \fi - \fi - \fi - \ifCJK@CJK@ - \CJK@testLastKern - \ifCJK@ - \CJK@nobreakglue - \fi - \fi - - \CJKsymbol{#2} - - \CJK@testPrePunct{\CJK@@@enc}{\CJK@plane}{\CJK@gtemp} - \ifCJK@ - \CJK@kern - \else - \CJK@CJK - \fi - \else% % not a punctuation character - \CJK@testLastCJK - \ifCJK@ - \ifCJK@hangul@ - \discretionary{}{}{} - \else - \CJKglue - \fi - \fi - \ifCJK@CJK@ - \CJK@testLastKern - \ifCJK@ - \CJK@nobreakglue - \fi - \fi - \CJKsymbol{#2} - \CJK@CJK - \fi - \fi} - - \CJK@ignorespaces} - - -% the following commands are needed for UTF-8 encoding to select the proper -% intercharacter glue. - -\newif\ifCJK@CJK@ -\newif\ifCJK@hangul@ -\newif\ifCJK@latin@ - -\newcommand{\CJKCJKchar}{ - \CJK@global\CJK@CJK@true - \CJK@global\CJK@hangul@false - \CJK@global\CJK@latin@false} - -\newcommand{\CJKhangulchar}{ - \CJK@global\CJK@CJK@false - \CJK@global\CJK@hangul@true - \CJK@global\CJK@latin@false} - -\newcommand{\CJKlatinchar}{ - \CJK@global\CJK@CJK@false - \CJK@global\CJK@hangul@false - \CJK@global\CJK@latin@true} - -\CJKCJKchar - - -% the next commands control mapping of half-width katakana to full-width -% glyphs within SJIS encoding. - -\newif\ifCJK@hwkatakana@ - -\newcommand{\CJKhwkatakana}{\CJK@global\CJK@hwkatakana@true} - -\newcommand{\CJKnohwkatakana}{\CJK@global\CJK@hwkatakana@false} - -\CJKhwkatakana - - -% you will find the innermost routines of the macros defined above in the -% xxx.chr files. These routines are -% -% \CJK@char, \CJK@charx, -% \CJK@altchar, \CJK@altcharx, -% \CJK@punctchar, \CJK@punctcharx, -% \CJK@sjischar, \CJK@sjispunctchar . - - -% we need to scan comma separated lists of character codes (represented as -% hexadecimal strings), testing whether a particular character is in the -% list. The macro \CJK@testInList sets the flag \ifCJK@ globally if true. -% Parameter #1 is the list, #2 the actual character code to test. -% -% see the documentation of the \ifnot@excluded macro in the doc package of -% the standard LaTeX2e distribution for a detailed explanation of the -% following tricky definitions. - -\newif\ifCJK@ - -\def\CJK@stop{\CJK@stop} - -\def\CJK@testInList#1#2{ - \def\CJK@tempa##1,#2,##2\CJK@stop{ - \def\CJK@tempb{##2} - \global\CJK@true - \ifx\CJK@tempb \@empty - \global\CJK@false - \fi} - \expandafter\CJK@tempa\expandafter,#1,#2,\CJK@stop} - - -% lists defined in CJK.enc for plane yy with encoding xx are assigned to -% global macros \CJK@xx@yy@prePunct and \CJK@xx@yy@postPunct. - -\def\CJK@prePunct#1#2#3{ - \expandafter\gdef\csname CJK@#1@#2@prePunct\endcsname{#3}} - -\def\CJK@postPunct#1#2#3{ - \expandafter\gdef\csname CJK@#1@#2@postPunct\endcsname{#3}} - - -% the next two functions scan the lists of punctuation characters of a -% particular plane which should not occur at the beginning or at the end -% of a line. They will be used in the xxx.chr files. Parameters are the -% encoding, the plane and the character to be tested. Again these macros -% raise or lower \ifCJK@. - -\def\CJK@testPrePunct#1#2#3{ - \expandafter\expandafter\expandafter - \CJK@testInList - \expandafter\csname CJK@#1@#2@prePunct\expandafter\endcsname - \expandafter{#3}} - -\def\CJK@testPostPunct#1#2#3{ - \expandafter\expandafter\expandafter - \CJK@testInList - \expandafter\csname CJK@#1@#2@postPunct\expandafter\endcsname - \expandafter{#3}} - - -% the macro \CJKenc changes the encoding inside of a CJK environment. It -% always uses the fontencoding defined with \CJKfontenc (this -% behaviour is intentionally different from the similar command pair -% \CJKfamily and \CJKencfamily). - -\DeclareRobustCommand{\CJKenc}[1]{ - \expandafter\ifx\csname CJK@#1@fontenc\endcsname \relax - \PackageError{CJK}{ - Encoding `#1' is not defined}{} - \fi - - \edef\CJK@temp{\csname CJK@#1@fontenc\endcsname} - - \expandafter\ifx\csname CJK@#1\CJK@temp @enc\endcsname \relax - \PackageError{CJK}{ - Encoding `#1\CJK@temp' is not defined}{} - \else - \CJK@global\edef\CJK@@@enc{#1} - \CJK@selectEnc - \fi} - -\edef\CJK@@@enc{} - -% to change a fontencoding yyy for a specific encoding xxx say -% \CJKfontenc{xxx}{yyy}. If you then change the encoding forth and back, -% this fontencoding is still valid. You will need this command only in -% cases where the fonts are not CJK-fontencoded, such as pmC or dnp -% fontencodings. -% -% if you define a new encoding `foo', you *must* supply the command -% `\CJKfontenc{foo}{}' (note the empty second parameter) since the -% encoding existence test relies on this. - -\DeclareRobustCommand{\CJKfontenc}[2]{ - \expandafter\CJK@global\expandafter\edef - \csname CJK@#1@fontenc\endcsname{#2} - \CJK@selectEnc} - -% \CJKfamily{xxx} selects the shape xxx for all encodings. It will override -% \CJKencfamily, i.e., if you change the encoding, the family will be -% the same. To reactivate \CJKencfamily, say `\CJKfamily{}'. -% -% For backward compatibility the macros \CJKshape and \CJKencshape are set -% to \CJKfamily and \CJKencfamily, respectively. - -\DeclareRobustCommand{\CJKfamily}[1]{ - \CJK@global\edef\CJK@globalfamily{#1} - \CJK@selectFamily} - -\edef\CJK@globalfamily{} - -% to change a family for a specific encoding xxx (and a font encoding yyy), -% use \CJKencfamily. If you then change the encoding forth and back, -% this family is still valid. This macro is especially useful with -% cjk-enc.el since it allows to change the encoding without the need to -% select a (possibly different) family each time. See the various -% encoding definitions in CJK.enc for the default values. -% -% note that it is equivalent to say \CJKencfamily[yyy]{xxx}{...} and -% \CJKencfamily{xxxyyy}{...}. - -\DeclareRobustCommand{\CJKencfamily}[3][]{ - \expandafter\CJK@global\expandafter\edef - \csname CJK@#2#1@family\endcsname{#3} - \CJK@selectFamily} - - -\let\CJKshape \CJKfamily -\let\CJKencshape \CJKencfamily - - -% the next commands select the actual family and encoding. - -\def\CJK@selFam{ - \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname} - - \ifx\CJK@globalfamily \@empty - \CJK@global\edef\CJK@family{ - \csname CJK@\CJK@@@enc\CJK@temp @family\endcsname} - \else - \CJK@global\edef\CJK@family{\CJK@globalfamily} - \fi} - - -% \CJK@@@enc is the encoding selected by the user, \CJK@enc will be really -% used. With the internal hook \CJK@@@xxx@hook we can modify \CJK@enc -% for the encoding xxx if necessary. With the hook \CJK@xxx@hook other -% packages can add stuff which should be executed immediately after the -% encoding has changed. - -\def\CJK@selEnc{ - \edef\CJK@temp{\csname CJK@\CJK@@@enc @fontenc\endcsname} - - \CJK@global\edef\CJK@enc{ - \csname CJK@\CJK@@@enc\CJK@temp @nfssenc\endcsname} - \csname CJK@@@\CJK@@@enc\CJK@temp @hook\endcsname - - \csname CJK@\CJK@@@enc\CJK@temp @enc\endcsname - \CJK@selectFamily - \csname CJK@\CJK@@@enc @hook\endcsname} - -% and here the user-visible macro to add something to the encoding hook. -% First parameter is the encoding, second parameter the data to be -% appended. - -\def\CJKaddEncHook#1#2{ - \expandafter\let\expandafter\CJK@temp \csname CJK@#1@hook\endcsname - \expandafter\def\expandafter\CJK@temp\expandafter{ - \CJK@temp #2} - \expandafter\let\csname CJK@#1@hook\endcsname \CJK@temp} - - -% we disable \CJK@selectFamily and \CJK@selectEnc until a CJK environment -% starts to avoid side effects while defining default values for -% encodings (outside of a CJK environment). - -\let\CJK@selectFamily \relax -\let\CJK@selectEnc \relax - - -% CJK.enc contains the \CJK@...@enc macros and the punctuation lists. - -\input CJK.enc - - -% the macros \CJK@testLastKern and \CJK@testLastCJK check the last kern and -% raise or lower \ifCJK@. - -\edef\CJK@kern{\kern -2sp\kern 2sp} -\edef\CJK@CJK{\kern -1sp\kern 1sp} - -\let\CJKkern \CJK@kern - -% does previous CJK character request nonbreakable glue? - -\def\CJK@testLastKern{ - \global\CJK@false - \ifnum\lastkern = \tw@ - \global\CJK@true - \fi - \ifnum\lastkern = 5% % request from ruby.sty - \global\CJK@true - \fi} - -% is previous character a CJK character? - -\def\CJK@testLastCJK{ - \global\CJK@false - \ifnum\lastkern = \@ne - \global\CJK@true - \fi} - - -% we only check for lower and upper bounds, not for possible gaps in the -% range of the second byte, as it happens for Big5 and SJIS encoding. - -\def\CJK@err{ - \PackageError{CJK}{ - Invalid character code}{ - The second byte of the CJK code is out of range.\MessageBreak - Do you use the right encoding scheme?}} - -\def\CJK@errx{ - \PackageError{CJK}{ - Invalid character code}{ - The third byte of the CJK code is out of range.\MessageBreak - Do you use the right encoding scheme?}} - -\def\CJK@errxx{ - \PackageError{CJK}{ - Invalid character code}{ - The CJK code is out of range for this font encoding.\MessageBreak - Do you use the right encoding scheme?}} - - -% we now define a set of new size functions: -% `CJK', `sCJK', `CJKfixed', and `sCJKfixed' are similar to `' (empty), -% `s', `fixed', and `sfixed' except that the value of \CJK@plane is -% appended to \font@name. -% -% `CJKsub', `CJKssub' are similar to `sub' and `ssub' except that the font -% substitution warning appears only once per CJK fontset. -% -% `CJKb', `sCJKb', `CJKfixedb', and `sCJKfixedb' are absolutely identical -% to the functions without the final `b'; they just exist to overcome -% a special feature of LaTeX: -% -% consider this example: -% -% \DeclareFontShape{C00}{kai}{m}{n}{<-> CJK * ntukai}{} -% \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJK * ntukai}{\CJKbold} -% -% the internal name of the macro which executes the last parameter -% (\CJKbold) is identical to the fifth parameter (without spaces), in -% this case `<->CJK*ntukai' -- the same name for both font shapes! This -% means that the latter font shape definition overwrites the former. -% Thus we have to write -% -% \DeclareFontShape{C00}{kai}{bx}{n}{<-> CJKb * ntukai}{\CJKbold} -% -% to get a different internal macro name. - -\def\CJK@curr@fontshape{CJK@\f@encoding/\f@family/\f@series/\f@shape} - -\DeclareSizeFunction{CJK}{\CJK@empty\@font@warning} -\DeclareSizeFunction{CJKb}{\CJK@empty\@font@warning} -\DeclareSizeFunction{sCJK}{\CJK@empty\@font@info} -\DeclareSizeFunction{sCJKb}{\CJK@empty\@font@info} - -\def\CJK@empty#1{ - \@tempdimb \f@size\p@ - \ifx\optional@arg \@empty - \else - \expandafter\ifx - \csname CJK@\mandatory@arg/\f@size/\the\@tempdimb\endcsname \relax - \@tempdimb \optional@arg\@tempdimb - #1{Font\space shape\space `\curr@fontshape'\space - will\space be\MessageBreak - scaled\space to\space size\space \the\@tempdimb} - \expandafter - \gdef\csname CJK@\mandatory@arg/\f@size/\the\@tempdimb\endcsname{} - \fi - \fi - \edef\external@font{ - \mandatory@arg\CJK@plane\space at \the\@tempdimb} - \xdef\font@name{ - \csname \curr@fontshape/\f@size/\CJK@plane\endcsname} - \expandafter\global\expandafter\let - \csname \CJK@curr@fontshape\expandafter\endcsname - \csname \curr@fontshape\endcsname} - -\DeclareSizeFunction{CJKfixed}{\CJK@fixed\@font@warning} -\DeclareSizeFunction{CJKfixedb}{\CJK@fixed\@font@warning} -\DeclareSizeFunction{sCJKfixed}{\CJK@fixed\@font@info} -\DeclareSizeFunction{sCJKfixedb}{\CJK@fixed\@font@info} - -\def\CJK@fixed#1{ - \ifx\optional@arg \@empty - \edef\external@font{ - \mandatory@arg\CJK@plane} - \else - \edef\external@font{ - \mandatory@arg\CJK@plane\space at \optional@arg pt} - \fi - \xdef\font@name{ - \csname \curr@fontshape/\f@size/\CJK@plane\endcsname} - #1{External\space font\space `\external@font'\space loaded\space - for\space size\MessageBreak - <\f@size>} - \expandafter\global\expandafter\let - \csname \CJK@curr@fontshape\expandafter\endcsname - \csname \curr@fontshape\endcsname} - -\DeclareSizeFunction{CJKsub}{\CJK@sub\@font@warning} -\DeclareSizeFunction{CJKssub}{\CJK@sub\@font@info} - -\def\CJK@sub#1{ - \edef\mandatory@arg{\f@encoding/\mandatory@arg} - \begingroup - \expandafter\split@name\mandatory@arg/\@nil - \try@load@fontshape - \endgroup - \let\f@user@size\f@size - \expandafter\ifx\csname\mandatory@arg\endcsname \relax - \errmessage{No\space declaration\space for\space shape\space - \mandatory@arg} - \error@fontshape - \else - \expandafter\ifx\csname CJK@\mandatory@arg/\f@size\endcsname \relax - #1{Font\space shape\space `\curr@fontshape'\MessageBreak - in\space size\space <\f@size>\space not\space available.\MessageBreak - Font\space shape\space `\mandatory@arg'\MessageBreak - tried\space instead} - \expandafter\gdef\csname CJK@\mandatory@arg/\f@size\endcsname{} - \fi - \expandafter\split@name\mandatory@arg/\@nil - \fi - \edef\f@size{\f@user@size} - \get@external@font - \do@subst@correction - \expandafter\global\expandafter\let - \csname \CJK@curr@fontshape\expandafter\endcsname - \csname \curr@fontshape\endcsname} - -% the following size functions are needed for the DNP fonts in JIS encoding. -% `DNPgen' is similar to `gen' but ignores the optional argument. -% `DNP' is similar to `gen' but the optional argument is used to -% indicate the designsize. -% -% see the comment above for an explanation of DNPb and DNPgenb. - -\DeclareSizeFunction{DNPgen}{\CJK@DNPgen} -\DeclareSizeFunction{DNPgenb}{\CJK@DNPgen} - -\def\CJK@DNPgen{ - \edef\external@font{ - \mandatory@arg\CJK@plane\f@size} - \xdef\font@name{ - \csname \curr@fontshape/\f@size/\CJK@plane\endcsname} - \expandafter\global\expandafter\let - \csname \CJK@curr@fontshape\expandafter\endcsname - \csname \curr@fontshape\endcsname} - -\DeclareSizeFunction{DNP}{\CJK@DNP} -\DeclareSizeFunction{DNPb}{\CJK@DNP} - -\def\CJK@DNP{ - \@tempdimb \f@size\p@ - \edef\external@font{ - \mandatory@arg\CJK@plane\optional@arg\space at \the\@tempdimb} - \xdef\font@name{ - \csname \curr@fontshape/\f@size/\CJK@plane\endcsname} - \expandafter\global\expandafter\let - \csname \CJK@curr@fontshape\expandafter\endcsname - \csname \curr@fontshape\endcsname} - - -% we also must redefine \pickup@font to append \CJK@plane to the font name -% if the particular subfont is already known. - -\def\pickup@font{ - \CJK@ifundefined\CJK@plane - {\expandafter\ifx\font@name \relax% % old definition - \define@newfont - \fi} - {\expandafter% % CJK extension - \ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname \relax - \define@newfont - \else - \xdef\font@name{ - \csname \curr@fontshape/\f@size/\CJK@plane\endcsname} - \fi}} - -% the other LaTeX2e command we must redefine is \selectfont. It will -% now reset \ifCJK@bold@ and calls \CJK@curr@fontshape additionally -% (if it exists) to execute the loading-setting parameter of -% \DeclareFontShape each time we switch to this font. -% \CJK@curr@fontshape has been defined by the above size functions. - -\DeclareRobustCommand{\selectfont}{ - \ifx\f@linespread \baselinestretch - \else - \set@fontsize\baselinestretch\f@size\f@baselineskip - \fi - \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname} - \pickup@font - \font@name - \expandafter% % CJK extension - \ifx\csname CJK@\curr@fontshape\endcsname \relax - \else - \CJK@bold@false - \csname CJK@\curr@fontshape\endcsname - \fi - \size@update - \enc@update} - - -% additional vertical and horizontal information for a font is stored in -% files with the extension `.fdx'. We extend LaTeX's -% \try@load@fontshape@ macro to load them. -% -% the macros \CJKhdef, \CJKvdef, \CJKhlet and \CJKvlet should be used to -% handle commands in `.fdx' files. - -\def\CJK@load@fdx{ - \expandafter\ifx\csname \f@encoding+\f@family+x\endcsname \relax - \global\expandafter\let\csname \f@encoding+\f@family+x\endcsname \@empty - \def\CJKhdef##1##2{ - \expandafter\gdef\csname \CJK@enc/\CJK@family/##1/h\endcsname{##2}} - \def\CJKhlet##1##2{ - \edef\reserved@a{\CJK@enc/\CJK@family/##1/h} - \edef\reserved@b{\CJK@enc/\CJK@family/##2/h} - \global\expandafter\let - \csname\reserved@a\expandafter\endcsname \csname\reserved@b\endcsname} - \def\CJKvdef##1##2{ - \expandafter\gdef\csname \CJK@enc/\CJK@family/##1/v\endcsname{##2}} - \def\CJKvlet##1##2{ - \edef\reserved@a{\CJK@enc/\CJK@family/##1/v} - \edef\reserved@b{\CJK@enc/\CJK@family/##2/v} - \global\expandafter\let - \csname\reserved@a\expandafter\endcsname \csname\reserved@b\endcsname} - \edef\reserved@a{ - \lowercase{\noexpand\InputIfFileExists{\f@encoding\f@family.fdx}}} - \reserved@a{}{} - \fi} - -\expandafter\def\expandafter\try@load@fontshape\expandafter{ - \try@load@fontshape - \CJK@load@fdx} - - -% \CJKglue defines the stretchability of CJK characters. - -\newcommand{\CJKglue}{\hskip \z@ \@plus .08\baselineskip} - -\def\CJK@nobreakglue{ - \nobreak - \CJKglue - \nobreak} - -% if the `verbatim' package is loaded it is possible to improve the output -% automatically, namely, to avoid breaking of overfull lines in a -% verbatim environment. The following command will install a hook to -% suppress insertion of glue between CJK glyphs. MULEenc.sty will extend -% it for Thai glyphs. - -\def\CJK@verbatim{ - \addto@hook{\every@verbatim}{ - \renewcommand{\CJKglue}{}}} -\CJK@ifundefined\mule@verbatim - {\mule@verbatim{}} - {} - -\def\CJKverbatim{ - \mule@verbatim - \CJK@verbatim} - - -% increasing \CJKtolerance will allow more space between Hangul words. - -\newcommand{\CJKtolerance}{400} - - -% \CJKtilde changes the definition of the active `~' character to embed -% non-CJK words into CJK text. The horizontal space defined here has -% a smaller width than an ordinary space character and is breakable. -% It will suppress spaces afterwards. -% The original definition will be preserved within \nbs, which is -% a shorthand for the LaTeX command \nobreakspace. -% -% \standardtilde is the opposite command. - -\let\nbs \nobreakspace - -\newcommand{\CJKtilde}{ - \CJK@global\def~{\hspace{0.25em plus 0.125em minus 0.08em}\ignorespaces}} -\newcommand{\standardtilde}{ - \CJK@global\def~{\nobreakspace{}}} - - -% \CJKspace and \CJKnospace enables the user to switch between a CJK and a -% CJK* environment without leaving the actual environment: -% -% \CJKnospace switches from CJK to CJK* -% \CJKspace switches from CJK* to CJK -% -% the definitions are in MULEenc.sty also. - -\providecommand{\CJKspace}{ - \CJK@global\let\CJK@ignorespaces \@empty} -\providecommand{\CJKnospace}{ - \CJK@global\let\CJK@ignorespaces \ignorespaces} - - -% \CJKindent sets \parindent to two ideographic spaces. \CJK@spaceChar -% is defined in CJK.enc for all encodings. - -\newbox\CJK@indent - -\providecommand{\CJKindent}{ - \setbox\CJK@indent\hbox{\CJK@spaceChar\CJK@spaceChar} - \parindent\wd\CJK@indent -} - - -% make all characters possibly used active so they can become macros. - -\def\CJK@makeActive{ - \@tempcnta "080\relax - \loop - \CJK@active\catcode\@tempcnta \active - \ifnum\@tempcnta < "0FE\relax - \advance\@tempcnta \@ne - \repeat} - -\def\CJK@makeInactive{ - \@tempcnta "080\relax - \loop - \CJK@active\catcode\@tempcnta 12\relax - \ifnum\@tempcnta < "0FE\relax - \advance\@tempcnta \@ne - \repeat} - - -% the following macro is a signature for `CJKspace.sty'. - -\def\CJK@@@{} - - -% we assign to each active character ^^xx the macro \CJK@XX (if expansion -% occurs); this will be done in the .bdg files. Then the various .enc -% files define \CJK@.. (using \CJK@namegdef) with encoding-specific -% macros. - -\def\CJK@namedef#1{ - \CJK@active\def#1{ - \CJK@@@ - \ifx\protect \@typeset@protect - \string #1 - \else - \noexpand #1 - \fi}} - -\def\CJK@namepdef#1{ - \CJK@active\def#1{ - \CJK@@@ - \ifx\protect \@typeset@protect - \expandafter\expandafter\expandafter\CJK@X - \expandafter\string\expandafter#1 - \else - \noexpand #1 - \fi}} - -\def\CJK@nameppdef#1{ - \CJK@active\def#1{ - \CJK@@@ - \ifx\protect \@typeset@protect - \expandafter\expandafter\expandafter\CJK@XX - \expandafter\string\expandafter#1 - \else - \noexpand #1 - \fi}} - -\def\CJK@namepppdef#1{ - \CJK@active\def#1{ - \CJK@@@ - \ifx\protect \@typeset@protect - \expandafter\expandafter\expandafter\CJK@XXX - \expandafter\string\expandafter#1 - \else - \noexpand #1 - \fi}} - -\def\CJK@nameppppdef#1{ - \CJK@active\def#1{ - \CJK@@@ - \ifx\protect \@typeset@protect - \expandafter\expandafter\expandafter\CJK@XXXX - \expandafter\string\expandafter#1 - \else - \noexpand #1 - \fi}} - - -\def\CJK@X#1{ - \csname CJK@\number `#1\endcsname\CJK@ignorespaces} - -% two possibilities: -% either \CJK@XX <arg1> <arg2> -% or \CJK@XX <arg1> \protect <arg2> -\def\CJK@XX#1#2{ - \ifx #2\protect - \expandafter\CJK@XXp\expandafter#1 - \else - \csname CJK@\number `#1\endcsname{`#2}\CJK@ignorespaces - \fi} -\def\CJK@XXp#1#2{ - \csname CJK@\number `#1\endcsname{`#2}\CJK@ignorespaces} - -% two possibilities: -% either \CJK@XXX <arg1> <arg2> <arg3> -% or \CJK@XXX <arg1> \protect <arg2> \protect <arg3> -\def\CJK@XXX#1#2#3{ - \ifx #2\protect - \expandafter\CJK@XXXp\expandafter#1#3 - \else - \csname CJK@\number `#1\endcsname{`#2}{`#3}\CJK@ignorespaces - \fi} -\def\CJK@XXXp#1#2#3#4{ - \csname CJK@\number `#1\endcsname{`#2}{`#4}\CJK@ignorespaces} - -% two possibilities: -% either \CJK@XXXX <arg1> <arg2> <arg3> <arg4> -% or \CJK@XXXX <arg1> \protect <arg2> \protect <arg3> \protect <arg4> -\def\CJK@XXXX#1#2#3#4{ - \ifx #2\protect - \expandafter\CJK@XXXXp\expandafter#1#3 - \else - \csname CJK@\number `#1\endcsname{`#2}{`#3}{`#4}\CJK@ignorespaces - \fi} -\def\CJK@XXXXp#1#2#3#4#5{ - \csname CJK@\number `#1\endcsname{`#2}{`#3}{`#5}\CJK@ignorespaces} - - -% these auxiliary macros reset \lccode's and \uccode's of characters -% 0x80-0xFF. This overrides the values set by LaTeX2e. - -\def\CJK@upperReset{ - \@tempcnta "080\relax - \loop - \CJK@local\uccode\@tempcnta \z@ - \ifnum\@tempcnta < "0FF\relax - \advance\@tempcnta \@ne - \repeat} - -\def\CJK@lowerReset{ - \@tempcnta "080\relax - \loop - \CJK@local\lccode\@tempcnta \z@ - \ifnum\@tempcnta < "0FF\relax - \advance\@tempcnta \@ne - \repeat} - - -% finally come the CJK environments: -% -% CJK* will swallow spaces after a CJK character, whereas CJK will not. -% -% the first parameter selects the CJK encoding, the second the CJK font -% family; the optional argument selects the fontencoding. -% -% each time a CJK or CJK* environment will be opened the hook \CJKhook will -% be called (this feature is used by cjk-enc.el). -% -% always end the line after saying \begin{CJK} or \begin{CJK*}; -% any characters on the same line will have already been read with -% their non-CJK meanings. - -\def\CJK@envStart#1#2#3{ - \CJK@upperReset - \ifCJK@lowercase@ - \CJK@lowerReset - \fi - - \CJK@makeActive - - % we enable \CJK@selectFamily and \CJK@selectEnc. - - \CJK@global\let\CJK@selectFamily \CJK@selFam - \CJK@global\let\CJK@selectEnc \CJK@selEnc - - \def\CJK@@@enc{#2} - \ifx\CJK@@@enc \@empty - \PackageInfo{CJK}{ - no encoding parameter given,\MessageBreak - waiting for \protect\CJKenc\space commands} - \else - \CJKenc{#2} - \fi - \CJKfontenc{#2}{#1} - \CJKfamily{#3} - \def\CJK@series{\f@series} - \def\CJK@shape{\f@shape} - - \csname CJKhook\endcsname} - -\def\CJK@envEnd{ - \ifx\CJK@global \global - \CJK@makeInactive - \CJK@global\let\CJK@selectFamily \relax - \CJK@global\let\CJK@selectEnc \relax - \fi} - -\newenvironment{CJK}[3][]{ - \CJKspace - \CJK@envStart{#1}{#2}{#3} - }{ - \CJK@envEnd} - -\newenvironment{CJK*}[3][]{ - \CJKnospace - \CJK@envStart{#1}{#2}{#3} - }{ - \CJK@envEnd} - - -% \CJKcaption{caption} will test whether we are in a CJK environment; if yes, -% it tries to load `<caption>.cpx' (this is <caption>.cap in preprocessed -% mode). - -\newcommand{\CJKcaption}[1]{ - \ifx\CJK@actualBinding \@empty - \PackageError{CJK}{ - You must be inside of a CJK environment to use \protect\CJKcaption}{} - \else - \makeatletter - \InputIfFileExists{#1.cpx}{}{ - \PackageError{CJK}{ - Can't find #1.cpx}{ - The default captions are used if you continue.}} - \makeatother - \fi} - - -% the writing direction. - -\def\CJK@direction{h} - - -% reset endline character. - -\endlinechar `\^^M - - -% in case some customization is necessary it should be done in the -% configuration file `CJK.cfg' and *not* here. - -\InputIfFileExists{CJK.cfg} - {\typeout{^^J - *****************************************^^J - * Local configuration file CJK.cfg used *^^J - *****************************************^^J}} - {} - - -\endinput |