summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/ctex/def/ctex-common.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/ctex/def/ctex-common.def')
-rw-r--r--Master/texmf-dist/tex/latex/ctex/def/ctex-common.def385
1 files changed, 385 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ctex/def/ctex-common.def b/Master/texmf-dist/tex/latex/ctex/def/ctex-common.def
new file mode 100644
index 00000000000..d6d32eac64f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/ctex/def/ctex-common.def
@@ -0,0 +1,385 @@
+% ctex-common.def: common definitions for all ctex packages/classes
+% vim:ft=tex
+
+\@ifclassloaded{article}{\def\CTEX@cls@article{}}{}
+\@ifclassloaded{report}{\def\CTEX@cls@report{}}{}
+\@ifclassloaded{book}{\def\CTEX@cls@book{}}{}
+
+% Load some extra packages
+
+\RequirePackage{ifxetex}
+\RequirePackage{keyval}[1999/03/16]
+\ifCTEX@indent
+ \RequirePackage{indentfirst}
+\fi
+\RequirePackage{fix-cm}
+\ifCTEX@fancyhdr
+ \RequirePackage{fancyhdr}
+\fi
+
+% Useful definitions
+
+\DeclareRobustCommand\CTeX{C\kern-.05em\TeX{}}
+\newcommand*\CTEX@key{\define@key{CTEX}}
+\newcommand*\CTEXoptions[1][]{\setkeys{CTEX}{#1}}
+\newcommand*\CTEX@subkey[1]{\define@key{CTEX#1}}
+\newcommand*\CTEXsetup[2][]{\setkeys{CTEX#2}{#1}}
+
+\def\ifCTEX@cls#1{%
+ \expandafter\ifx\csname CTEX@cls@#1\endcsname\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+\def\CTEX@replacecommand#1#2#3{%
+ \expandafter\expandafter\expandafter\let\expandafter
+ \csname #1#3\expandafter\endcsname
+ \csname #2#3\endcsname
+ \expandafter\expandafter\expandafter\def\expandafter
+ \csname #2#3\expandafter\endcsname
+ {\csname #1#3\endcsname}}
+
+% Select engine: xetex has the highest priority, if not,
+% then try cct, otherwise we use traditional cjk.
+
+\ifxetex
+ \input{ctex-xecjk-engine.def}
+\else
+ \ifCTEX@cct
+ \input{ctex-cct-engine.def}
+ \else
+ \input{ctex-cjk-engine.def}
+ \fi
+\fi
+
+\AtEndOfPackage{%
+ \makeatletter
+ \ifCTEX@GBK
+ \input{ctex-gbk.def}
+ \else
+ \input{ctex-utf8.def}
+ \fi\makeatother}
+
+\newcommand*\CTEXindent{\CTEXsetfont\parindent2\ccwd}
+\newcommand*\CTEXnoindent{\parindent\z@}
+\ifCTEX@indent
+ \AtBeginDocument{\CTEXindent}
+\fi
+\def\CTEX@spaceChar{\hskip \f@size \p@}
+\def\baselinestretch{1.3}
+
+% About font sizing
+
+\def\CTEX@fs@eight{5.02} \def\CTEX@fs@eightskip{6.02} %八号字 5bp
+\def\CTEX@fs@seven{5.52} \def\CTEX@fs@sevenskip{6.62} %七号字 5.5bp
+\def\CTEX@fs@ssix{6.52} \def\CTEX@fs@ssixskip{7.83} %小六号 6.5bp
+\def\CTEX@fs@six{7.53} \def\CTEX@fs@sixskip{9.03} %六号字 7.5bp
+\def\CTEX@fs@sfive{9.03} \def\CTEX@fs@sfiveskip{10.84} %小五号 9bp
+\def\CTEX@fs@five{10.54} \def\CTEX@fs@fiveskip{12.65} %五号字 10.5bp
+\def\CTEX@fs@sfour{12.05} \def\CTEX@fs@sfourskip{14.45} %小四号 12bp
+\def\CTEX@fs@four{14.05} \def\CTEX@fs@fourskip{16.86} %四号字 14bp
+\def\CTEX@fs@sthree{15.06} \def\CTEX@fs@sthreeskip{18.07} %小三号 15bp
+\def\CTEX@fs@three{16.06} \def\CTEX@fs@threeskip{19.27} %三号字 16bp
+\def\CTEX@fs@stwo{18.07} \def\CTEX@fs@stwoskip{21.68} %小二号 18bp
+\def\CTEX@fs@two{22.08} \def\CTEX@fs@twoskip{26.50} %二号字 22bp
+\def\CTEX@fs@sone{24.09} \def\CTEX@fs@soneskip{28.91} %小一号 24bp
+\def\CTEX@fs@one{26.10} \def\CTEX@fs@oneskip{31.32} %一号字 26bp
+\def\CTEX@fs@szero{36.14} \def\CTEX@fs@szeroskip{43.36} %小初号 36bp
+\def\CTEX@fs@zero{42.16} \def\CTEX@fs@zeroskip{50.59} %初号字 42bp
+\DeclareMathSizes{\CTEX@fs@eight}{\CTEX@fs@eight}{5}{5}
+\DeclareMathSizes{\CTEX@fs@seven}{\CTEX@fs@seven}{5}{5}
+\DeclareMathSizes{\CTEX@fs@ssix}{\CTEX@fs@ssix}{5}{5}
+\DeclareMathSizes{\CTEX@fs@six}{\CTEX@fs@six}{5}{5}
+\DeclareMathSizes{\CTEX@fs@sfive}{\CTEX@fs@sfive}{6}{5}
+\DeclareMathSizes{\CTEX@fs@five}{\CTEX@fs@five}{7}{5}
+\DeclareMathSizes{\CTEX@fs@sfour}{\CTEX@fs@sfour}{8}{6}
+\DeclareMathSizes{\CTEX@fs@four}
+ {\CTEX@fs@four}{\CTEX@fs@five}{\CTEX@fs@six}
+\DeclareMathSizes{\CTEX@fs@sthree}
+ {\CTEX@fs@sthree}{\CTEX@fs@sfour}{\CTEX@fs@sfive}
+\DeclareMathSizes{\CTEX@fs@three}
+ {\CTEX@fs@three}{\CTEX@fs@four}{\CTEX@fs@five}
+\DeclareMathSizes{\CTEX@fs@stwo}
+ {\CTEX@fs@stwo}{\CTEX@fs@sthree}{\CTEX@fs@sfour}
+\DeclareMathSizes{\CTEX@fs@two}
+ {\CTEX@fs@two}{\CTEX@fs@three}{\CTEX@fs@four}
+\DeclareMathSizes{\CTEX@fs@sone}
+ {\CTEX@fs@sone}{\CTEX@fs@stwo}{\CTEX@fs@sthree}
+\DeclareMathSizes{\CTEX@fs@one}
+ {\CTEX@fs@one}{\CTEX@fs@two}{\CTEX@fs@three}
+\DeclareMathSizes{\CTEX@fs@szero}
+ {\CTEX@fs@szero}{\CTEX@fs@sone}{\CTEX@fs@stwo}
+\DeclareMathSizes{\CTEX@fs@zero}
+ {\CTEX@fs@zero}{\CTEX@fs@one}{\CTEX@fs@two}
+\def\CTEX@zihao{}
+\DeclareRobustCommand*\zihao[1]{\def\CTEX@zihao{#1}%
+ \ifnum #11<0%
+ \@tempcnta=-#1
+ \ifcase\@tempcnta%
+ \fontsize\CTEX@fs@szero\CTEX@fs@szeroskip%
+ \or \fontsize\CTEX@fs@sone\CTEX@fs@soneskip%
+ \or \fontsize\CTEX@fs@stwo\CTEX@fs@stwoskip%
+ \or \fontsize\CTEX@fs@sthree\CTEX@fs@sthreeskip%
+ \or \fontsize\CTEX@fs@sfour\CTEX@fs@sfourskip%
+ \or \fontsize\CTEX@fs@sfive\CTEX@fs@sfiveskip%
+ \or \fontsize\CTEX@fs@ssix\CTEX@fs@ssixskip%
+ \else \PackageError{ctex}{%
+ Undefined Chinese font size in command \protect\zihao}{%
+ The old font size is used if you continue.}%
+ \fi%
+ \else%
+ \@tempcnta=#1
+ \ifcase\@tempcnta%
+ \fontsize\CTEX@fs@zero\CTEX@fs@zeroskip%
+ \or \fontsize\CTEX@fs@one\CTEX@fs@oneskip%
+ \or \fontsize\CTEX@fs@two\CTEX@fs@twoskip%
+ \or \fontsize\CTEX@fs@three\CTEX@fs@threeskip%
+ \or \fontsize\CTEX@fs@four\CTEX@fs@fourskip%
+ \or \fontsize\CTEX@fs@five\CTEX@fs@fiveskip%
+ \or \fontsize\CTEX@fs@six\CTEX@fs@sixskip%
+ \or \fontsize\CTEX@fs@seven\CTEX@fs@sevenskip%
+ \or \fontsize\CTEX@fs@eight\CTEX@fs@eightskip%
+ \else \PackageError{ctex}{%
+ Undefined Chinese font size in command \protect\zihao}{%
+ The old font size is used if you continue.}%
+ \fi%
+ \fi%
+ \selectfont\ignorespaces}
+
+% About numbers
+
+\newif\ifCTEX@zero@
+\newif\ifCTEX@previous@
+\newif\ifCTEX@null@
+\newcount\CTEX@q
+\newcount\CTEX@r
+\def\CTEX@appendstring#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2}}
+\def\CTEX@appendnumber#1#2{%
+ \ifcase #2\relax
+ \ifCTEX@null@
+ \CTEX@appendstring{#1}{\CTEX@null}%
+ \else
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \fi
+ \or \CTEX@appendstring{#1}{\CTEX@one}%
+ \or \CTEX@appendstring{#1}{\CTEX@two}%
+ \or \CTEX@appendstring{#1}{\CTEX@three}%
+ \or \CTEX@appendstring{#1}{\CTEX@four}%
+ \or \CTEX@appendstring{#1}{\CTEX@five}%
+ \or \CTEX@appendstring{#1}{\CTEX@six}%
+ \or \CTEX@appendstring{#1}{\CTEX@seven}%
+ \or \CTEX@appendstring{#1}{\CTEX@eight}%
+ \or \CTEX@appendstring{#1}{\CTEX@nine}%
+ \fi}
+\def\CTEX@splitnumber#1{%
+ \CTEX@q #1\relax
+ \CTEX@r #1\relax
+ \divide\CTEX@q \@M
+ \begingroup
+ \multiply\CTEX@q \@M
+ \advance\CTEX@r -\CTEX@q
+ \ifnum\CTEX@r = \z@
+ \xdef\CTEX@low{}%
+ \else
+ \xdef\CTEX@low{\number\CTEX@r}%
+ \fi
+ \endgroup
+ \ifnum\CTEX@q > \z@
+ \CTEX@r \CTEX@q
+ \divide\CTEX@q \@M
+ \begingroup
+ \multiply\CTEX@q \@M
+ \advance\CTEX@r -\CTEX@q
+ \ifnum\CTEX@r = \z@
+ \xdef\CTEX@high{}%
+ \else
+ \xdef\CTEX@high{\number\CTEX@r}%
+ \fi
+ \endgroup
+ \ifnum\CTEX@q > \z@
+ \xdef\CTEX@yi{\number\CTEX@q}%
+ \else
+ \xdef\CTEX@yi{}%
+ \fi
+ \else
+ \xdef\CTEX@high{}%
+ \xdef\CTEX@yi{}%
+ \fi
+}
+\def\CTEX@processnumber#1#2{%
+ \CTEX@zero@false
+ \CTEX@q #2\relax
+ \CTEX@r #2\relax
+ \divide\CTEX@q \@m
+ \ifnum\CTEX@q = \z@
+ \ifCTEX@previous@
+ \CTEX@zero@true
+ \fi
+ \else
+ \ifCTEX@zero@
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \fi
+ \CTEX@appendnumber{#1}{\CTEX@q}%
+ \CTEX@appendstring{#1}{\CTEX@thousand}%
+ \CTEX@previous@true
+ \CTEX@zero@false
+ \fi
+ \multiply\CTEX@q \@m
+ \advance\CTEX@r -\CTEX@q
+ \CTEX@q \CTEX@r
+ \divide\CTEX@q 100\relax
+ \ifnum\CTEX@q = \z@
+ \ifCTEX@previous@
+ \CTEX@zero@true
+ \fi
+ \else
+ \ifCTEX@zero@
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \fi
+ \CTEX@appendnumber{#1}{\CTEX@q}%
+ \CTEX@appendstring{#1}{\CTEX@hundred}%
+ \CTEX@previous@true
+ \CTEX@zero@false
+ \fi
+ \multiply\CTEX@q 100
+ \advance\CTEX@r -\CTEX@q
+ \CTEX@q \CTEX@r
+ \divide \CTEX@q 10\relax
+ \ifnum\CTEX@q = \z@
+ \ifCTEX@previous@
+ \CTEX@zero@true
+ \fi
+ \else
+ \ifCTEX@zero@
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \fi
+ \ifnum\CTEX@q = \@ne
+ \ifCTEX@previous@
+ \CTEX@appendstring{#1}{\CTEX@one}%
+ \fi
+ \else
+ \CTEX@appendnumber{#1}{\CTEX@q}%
+ \fi
+ \CTEX@appendstring{#1}{\CTEX@ten}%
+ \CTEX@previous@true
+ \CTEX@zero@false
+ \fi
+ \multiply\CTEX@q 10
+ \advance\CTEX@r -\CTEX@q
+ \ifnum\CTEX@r = \z@
+ \else
+ \ifCTEX@zero@
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \fi
+ \CTEX@appendnumber{#1}{\CTEX@r}%
+ \CTEX@previous@true
+ \fi}
+\DeclareRobustCommand\CTEXnumber[2]{%
+ \def#1{}%
+ \CTEX@null@false
+ \CTEX@q #2\relax
+ \ifnum\CTEX@q < \z@
+ \multiply\CTEX@q \m@ne
+ \CTEX@appendstring{#1}{\CTEX@minus}%
+ \fi
+ \CTEX@previous@false
+ \CTEX@zero@false
+ \ifnum\CTEX@q = \z@
+ \CTEX@appendstring{#1}{\CTEX@zero}%
+ \else
+ \CTEX@splitnumber{\CTEX@q}%
+ \ifx\CTEX@yi \@empty
+ \else
+ \CTEX@processnumber{#1}{\CTEX@yi}%
+ \CTEX@appendstring{#1}{\CTEX@hundredmillion}%
+ \fi
+ \ifx\CTEX@high \@empty
+ \else
+ \CTEX@processnumber{#1}{\CTEX@high}%
+ \CTEX@appendstring{#1}{\CTEX@tenthousand}%
+ \fi
+ \ifx\CTEX@low \@empty
+ \else
+ \ifx\CTEX@yi \@empty
+ \else
+ \ifx\CTEX@high \@empty
+ \CTEX@appendstring{#1}{\CTEX@zero}% this catches 100002345
+ \fi
+ \fi
+ \CTEX@processnumber{#1}{\CTEX@low}%
+ \fi
+ \fi}
+\def\CTEX@getdigit#1#2\@nil{%
+ \edef\CTEX@tempa{#1}%
+ \edef\CTEX@tempb{#2}}
+\DeclareRobustCommand\CTEXdigits[2]{%
+ \def#1{}%
+ \CTEX@null@true
+ \edef\CTEX@tempa{}%
+ \edef\CTEX@tempb{#2}%
+ \ifx\CTEX@tempb \@empty
+ \else
+ \loop
+ \expandafter\CTEX@getdigit\CTEX@tempb\@nil
+ \CTEX@appendnumber{#1}{\CTEX@tempa}%
+ \ifx\CTEX@tempb \@empty
+ \else
+ \repeat
+ \fi}
+\DeclareRobustCommand\CTEXcounter[1]{%
+ \@ifundefined{c@#1}{}{%
+ \CTEXnumber{\reserved@a}{\@arabic\csname c@#1\endcsname}%
+ \expandafter\expandafter\expandafter\def%
+ \expandafter\expandafter\csname cc@#1\endcsname%
+ \expandafter{\reserved@a}}}
+\AtBeginDocument{%
+ \makeatletter%
+ \@ifundefined{CTEX@save@setcounter}{%
+ \let\CTEX@save@setcounter\setcounter%
+ \def\setcounter#1#2{%
+ \CTEX@save@setcounter{#1}{#2}%
+ \CTEXcounter{#1}}}{}
+ \@ifundefined{CTEX@save@addtocounter}{%
+ \let\CTEX@save@addtocounter\addtocounter%
+ \def\addtocounter#1#2{%
+ \CTEX@save@addtocounter{#1}{#2}%
+ \CTEXcounter{#1}}}{}
+ \@ifundefined{CTEX@save@stepcounter}{%
+ \let\CTEX@save@stepcounter\stepcounter%
+ \def\stepcounter#1{%
+ \CTEX@save@stepcounter{#1}%
+ \CTEXcounter{#1}}}{}
+ \makeatother}
+\def\chinese#1{%
+ \@ifundefined{cc@#1}{\CTEX@null}{\csname cc@#1\endcsname}}
+
+% About caption
+
+\ifCTEX@caption
+ \let\CTEX@save@refstepcounter\refstepcounter
+ \def\refstepcounter#1{\stepcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\endcsname%
+ \@ifundefined{CTEX@the#1}%
+ {\csname the#1\endcsname}%
+ {\csname CTEX@the#1\endcsname}%
+ }}%
+\fi
+
+% `today' definitions
+
+\let\CTEX@todayold\today
+\ifCTEX@caption
+ \renewcommand*\today{\CTEX@todaysmall}
+\fi
+\CTEX@key{today}{\CTEX@settoday{#1}}
+\newcommand*\CTEX@settoday[1]{%
+ \@ifundefined{CTEX@today#1}
+ {\PackageError{ctex}{%
+ unknown today format}{%
+ Available today format are "old", "small", and "big".}}
+ {\renewcommand*\today{\csname CTEX@today#1\endcsname}}}
+
+\endinput
+