%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/cjk/texinput/ |
| Current File : //proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/cjk/texinput/CJKnumb.sty |
% This is the file CJKnumb.sty of the CJK package
% for typesetting numbers with CJK glyphs.
%
% created by Werner Lemberg <wl@gnu.org>
%
% Version 4.8.3 (07-May-2012)
% Copyright (C) 1994-2012 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
\def\fileversion{4.8.3}
\def\filedate{2012/05/07}
\ProvidesPackage{CJKnumb}[\filedate\space\fileversion]
\RequirePackage{CJK}[2012/05/07]
% we suppress any unwanted spaces produced by linefeeds.
\endlinechar \m@ne
% the amount of space to be inserted before and after the circle
% representing zero
\def\CJKnullspace{0pt}
% generic number macros. We add them to the CJK encoding hooks.
\def\CJK@traditionalNumbers{
% circle used for zero
\def\CJK@null{\kern\CJKnullspace\CJKchar{161}{179}\kern\CJKnullspace}
% character used for zero
\def\CJK@zero{\CJKchar{185}{115}}
\def\CJK@one{\CJKchar{164}{64}}
\def\CJK@two{\CJKchar{164}{71}}
\def\CJK@three{\CJKchar{164}{84}}
\def\CJK@four{\CJKchar{165}{124}}
\def\CJK@five{\CJKchar{164}{173}}
\def\CJK@six{\CJKchar{164}{187}}
\def\CJK@seven{\CJKchar{164}{67}}
\def\CJK@eight{\CJKchar{164}{75}}
\def\CJK@nine{\CJKchar{164}{69}}
\def\CJK@ten{\CJKchar{164}{81}}
\def\CJK@hundred{\CJKchar{166}{202}}
\def\CJK@thousand{\CJKchar{164}{100}}
\def\CJK@tenthousand{\CJKchar{184}{85}}
\def\CJK@hundredmillion{\CJKchar{187}{245}}
\def\CJK@minus{\CJKchar{161}{208}}}
\CJKaddEncHook{Bg5}{\CJK@traditionalNumbers}
\CJKaddEncHook{Bg5+}{\CJK@traditionalNumbers}
\CJKaddEncHook{HK}{\CJK@traditionalNumbers}
\def\CJK@simplifiedNumbers{
\def\CJK@null{\kern\CJKnullspace\CJKchar{161}{240}\kern\CJKnullspace}
\def\CJK@zero{\CJKchar{193}{227}}
\def\CJK@one{\CJKchar{210}{187}}
\def\CJK@two{\CJKchar{182}{254}}
\def\CJK@three{\CJKchar{200}{253}}
\def\CJK@four{\CJKchar{203}{196}}
\def\CJK@five{\CJKchar{206}{229}}
\def\CJK@six{\CJKchar{193}{249}}
\def\CJK@seven{\CJKchar{198}{223}}
\def\CJK@eight{\CJKchar{176}{203}}
\def\CJK@nine{\CJKchar{190}{197}}
\def\CJK@ten{\CJKchar{202}{174}}
\def\CJK@hundred{\CJKchar{176}{217}}
\def\CJK@thousand{\CJKchar{199}{167}}
\def\CJK@tenthousand{\CJKchar{205}{242}}
\def\CJK@hundredmillion{\CJKchar{210}{218}}
\def\CJK@minus{\CJKchar{163}{173}}}
\CJKaddEncHook{GB}{\CJK@simplifiedNumbers}
\CJKaddEncHook{GBK}{\CJK@simplifiedNumbers}
\CJKaddEncHook{JIS}{
\def\CJK@null{\kern\CJKnullspace\CJKchar{161}{251}\kern\CJKnullspace}
\def\CJK@zero{\CJKchar{206}{237}}
\def\CJK@one{\CJKchar{176}{236}}
\def\CJK@two{\CJKchar{198}{243}}
\def\CJK@three{\CJKchar{187}{176}}
\def\CJK@four{\CJKchar{187}{205}}
\def\CJK@five{\CJKchar{184}{222}}
\def\CJK@six{\CJKchar{207}{187}}
\def\CJK@seven{\CJKchar{188}{183}}
\def\CJK@eight{\CJKchar{200}{172}}
\def\CJK@nine{\CJKchar{182}{229}}
\def\CJK@ten{\CJKchar{189}{189}}
\def\CJK@hundred{\CJKchar{201}{180}}
\def\CJK@thousand{\CJKchar{192}{233}}
\def\CJK@tenthousand{\CJKchar{232}{223}}
\def\CJK@hundredmillion{\CJKchar{178}{175}}
\def\CJK@minus{\CJKchar{161}{221}}}
\CJKaddEncHook{KS}{
\def\CJK@null{\kern\CJKnullspace\CJKchar{161}{219}\kern\CJKnullspace}
\def\CJK@zero{\CJKchar{214}{195}}
\def\CJK@one{\CJKchar{236}{233}}
\def\CJK@two{\CJKchar{236}{163}}
\def\CJK@three{\CJKchar{223}{178}}
\def\CJK@four{\CJKchar{222}{204}}
\def\CJK@five{\CJKchar{231}{233}}
\def\CJK@six{\CJKchar{215}{191}}
\def\CJK@seven{\CJKchar{246}{210}}
\def\CJK@eight{\CJKchar{248}{162}}
\def\CJK@nine{\CJKchar{206}{250}}
\def\CJK@ten{\CJKchar{228}{168}}
\def\CJK@hundred{\CJKchar{219}{221}}
\def\CJK@thousand{\CJKchar{244}{182}}
\def\CJK@tenthousand{\CJKchar{216}{191}}
\def\CJK@hundredmillion{\CJKchar{229}{226}}
\def\CJK@minus{\CJKchar{163}{173}}}
\CJKaddEncHook{SJIS}{
\def\CJK@null{\kern\CJKnullspace\CJKchar{129}{155}\kern\CJKnullspace}
\def\CJK@zero{\CJKchar{151}{235}}
\def\CJK@one{\CJKchar{136}{234}}
\def\CJK@two{\CJKchar{147}{241}}
\def\CJK@three{\CJKchar{142}{79}}
\def\CJK@four{\CJKchar{142}{108}}
\def\CJK@five{\CJKchar{140}{220}}
\def\CJK@six{\CJKchar{152}{90}}
\def\CJK@seven{\CJKchar{142}{181}}
\def\CJK@eight{\CJKchar{148}{170}}
\def\CJK@nine{\CJKchar{139}{227}}
\def\CJK@ten{\CJKchar{143}{92}}
\def\CJK@hundred{\CJKchar{149}{83}}
\def\CJK@thousand{\CJKchar{144}{231}}
\def\CJK@tenthousand{\CJKchar{228}{221}}
\def\CJK@hundredmillion{\CJKchar{137}{173}}
\def\CJK@minus{\CJKchar{129}{124}}}
\CJKaddEncHook{\CJK@UnicodeEnc}{
\def\CJK@null{\Unicode{48}{7}}
\def\CJK@zero{\Unicode{150}{246}}
\def\CJK@one{\Unicode{78}{0}}
\def\CJK@two{\Unicode{78}{140}}
\def\CJK@three{\Unicode{78}{9}}
\def\CJK@four{\Unicode{86}{219}}
\def\CJK@five{\Unicode{78}{148}}
\def\CJK@six{\Unicode{81}{109}}
\def\CJK@seven{\Unicode{78}{3}}
\def\CJK@eight{\Unicode{81}{107}}
\def\CJK@nine{\Unicode{78}{93}}
\def\CJK@ten{\Unicode{83}{65}}
\def\CJK@hundred{\Unicode{118}{126}}
\def\CJK@thousand{\Unicode{83}{67}}
\def\CJK@tenthousand{\Unicode{132}{44}}
\def\CJK@hundredmillion{\Unicode{81}{4}}
\def\CJK@minus{\Unicode{255}{13}}}
\newif\ifCJK@zero@
\newif\ifCJK@previous@
\newif\ifCJK@null@
\newcount\CJK@q
\newcount\CJK@r
\def\CJK@digit#1{
\ifcase #1\relax
\ifCJK@null@ \CJK@null \else \CJK@zero \fi \or
\CJK@one \or
\CJK@two \or
\CJK@three \or
\CJK@four \or
\CJK@five \or
\CJK@six \or
\CJK@seven \or
\CJK@eight \or
\CJK@nine
\fi}
% This macro splits the number in zzyyyyxxxx (2^^31-1 is the largest
% possible integer in TeX); zz is \CJK@yi, yyyy is \CJK@high, and
% xxxx is \CJK@low.
\def\CJK@splitnumber#1{
\CJK@q #1
\CJK@r #1
\divide\CJK@q \@M
\begingroup
\multiply\CJK@q \@M
\advance\CJK@r -\CJK@q
\ifnum\CJK@r = \z@
\xdef\CJK@low{}
\else
\xdef\CJK@low{\number\CJK@r}
\fi
\endgroup
\ifnum\CJK@q > \z@
\CJK@r \CJK@q
\divide\CJK@q \@M
\begingroup
\multiply\CJK@q \@M
\advance\CJK@r -\CJK@q
\ifnum\CJK@r = \z@
\xdef\CJK@high{}
\else
\xdef\CJK@high{\number\CJK@r}
\fi
\endgroup
\ifnum\CJK@q > \z@
\xdef\CJK@yi{\number\CJK@q}
\else
\xdef\CJK@yi{}
\fi
\else
\xdef\CJK@high{}
\xdef\CJK@yi{}
\fi
}
% Here we process four digits
\def\CJK@processnumber#1{
\CJK@zero@false
\CJK@q #1
\CJK@r #1
\divide\CJK@q \@m
\ifnum\CJK@q = \z@
\ifCJK@previous@
\CJK@zero@true
\fi
\else
\ifCJK@zero@
\CJK@zero
\fi
\CJK@digit{\CJK@q}
\CJK@thousand
\CJK@previous@true
\CJK@zero@false
\fi
\multiply\CJK@q \@m
\advance\CJK@r -\CJK@q
\CJK@q \CJK@r
\divide\CJK@q 100\relax
\ifnum\CJK@q = \z@
\ifCJK@previous@
\CJK@zero@true
\fi
\else
\ifCJK@zero@
\CJK@zero
\fi
\CJK@digit{\CJK@q}
\CJK@hundred
\CJK@previous@true
\CJK@zero@false
\fi
\multiply\CJK@q 100
\advance\CJK@r -\CJK@q
\CJK@q \CJK@r
\divide \CJK@q 10\relax
\ifnum\CJK@q = \z@
\ifCJK@previous@
\CJK@zero@true
\fi
\else
\ifCJK@zero@
\CJK@zero
\fi
\ifnum\CJK@q = \@ne
\ifCJK@previous@
\CJK@one
\fi
\else
\CJK@digit{\CJK@q}
\fi
\CJK@ten
\CJK@previous@true
\CJK@zero@false
\fi
\multiply\CJK@q 10
\advance\CJK@r -\CJK@q
\ifnum\CJK@r = \z@
\else
\ifCJK@zero@
\CJK@zero
\fi
\CJK@digit{\CJK@r}
\CJK@previous@true
\fi
}
% this command provides a full CJK representation of a number.
\DeclareRobustCommand\CJKnumber[1]{
\CJK@null@false
\CJK@q #1\relax
\ifnum\CJK@q < \z@
\multiply\CJK@q \m@ne
\CJK@minus
\CJKkern
\fi
\CJK@previous@false
\CJK@zero@false
\ifnum\CJK@q = \z@
\CJK@zero
\else
\CJK@splitnumber{\CJK@q}
\ifx\CJK@yi \@empty
\else
\CJK@processnumber{\CJK@yi}
\CJK@hundredmillion
\fi
\ifx\CJK@high \@empty
\else
\CJK@processnumber{\CJK@high}
\CJK@tenthousand
\fi
\ifx\CJK@low \@empty
\else
\ifx\CJK@yi \@empty
\else
\ifx\CJK@high \@empty
\CJK@zero % this catches 100002345
\fi
\fi
\CJK@processnumber{\CJK@low}
\fi
\fi}
% this command simply converts the given string into CJK digits;
% the starred version uses the traditional glyph for digit zero.
\DeclareRobustCommand\CJKdigits{
\@ifstar{\CJK@null@false\CJK@digits}
{\CJK@null@true\CJK@digits}}
\def\CJK@digits#1{
{\edef\CJK@tempa{}
\edef\CJK@tempb{#1}
\ifx\CJK@tempb \@empty
\else
\loop
\expandafter\CJK@getDigit\CJK@tempb\CJK@stop
\CJK@digit\CJK@tempa
\ifx\CJK@tempb \@empty
\else
\repeat
\fi}}
\def\CJK@getDigit#1#2\CJK@stop{
\edef\CJK@tempa{#1}
\edef\CJK@tempb{#2}}
% reset endline character.
\endlinechar `\^^M
\endinput