From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty | 400 +++++++++++++++++++++ 1 file changed, 400 insertions(+) create mode 100644 language/chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty (limited to 'language/chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty') diff --git a/language/chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty b/language/chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty new file mode 100644 index 0000000000..68494d0ffc --- /dev/null +++ b/language/chinese/CJK/cjk-4.8.4/texinput/CJKnumb.sty @@ -0,0 +1,400 @@ +% This is the file CJKnumb.sty of the CJK package +% for typesetting numbers with CJK glyphs. +% +% created by Werner Lemberg +% +% Version 4.8.4 (18-Apr-2015) + +% Copyright (C) 1994-2015 Werner Lemberg +% +% 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.4} +\def\filedate{2015/04/18} +\ProvidesPackage{CJKnumb}[\filedate\space\fileversion] + +\RequirePackage{CJK}[2015/04/18] + + +% 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 -- cgit v1.2.3