3源代码说明21

197198199

\\input{ctexcjk.clo}\\fi

??/ctex|cls??

所有包含中文字符的定义都需要从ctex.def读入。

200201202203204205206207208

???ctex|cls??

\\AtEndOfPackage{%\\makeatletter

\\InputIfFileExists{ctex.def}{}{%\\PackageError{ctex}{ên’tfindctex.def}{%

Therewillbeunexpectederrorsifyoucontinue.}}\\makeatother}??/ctex|cls??

如果使用中文标题,则还要读入ctexcap.cfg的内容。

209210211212213214215216217218219

???ctexcap|cls??\\ifCTEX@caption

\\AtEndOfPackage{%\\makeatletter

\\InputIfFileExists{ctexcap.cfg}{}{%\\PackageError{ctex}{%

Can’tfindctexcap.cfg}{%

Theenglishcaptionsareusedifyoucontinue.}}\\makeatother}\\fi

??/ctexcap|cls??

最后再从ctex.cfg读入用户的自定义设置。

220221222223224225226227

???ctex|cls??

\\AtEndOfPackage{%\\makeatletter

\\InputIfFileExists{ctex.cfg}{}{%\\PackageWarning{ctex}{ên’tfindctex.cfg}}\\makeatother}??/ctex|cls??

\\CTEXindent\\CTEXnoindent

段首缩进2个汉字的距离,需要考虑到字距。

228229230231232233234

???ctex|cls??

\\newcommand*\\CTEXindent{\\CTEXsetfont\\parindent2\\ccwd}\\newcommand*\\CTEXnoindent{\\parindent\\z@}\\ifCTEX@indent

\\AtBeginDocument{\\CTEXindent}\\fi

??/ctex|cls??

3源代码说明22

\\CTEX@spaceChar

235

??ctex|cls??\\def\\CTEX@spaceChar{\\hskip\\f@size\\p@}

\\baselinestretch通常中文文档需要较宽的行距。

236

??ctex|cls??\\def\\baselinestretch{1.3}

3.4.1中文字号

首先给出中文字号和TEX字体大小的对应关系。定义中使用pt为单位。中文字号大小参考Word的定义。

1in=72bp=72.27pt行距=字体大小×1.2

237238239240241242243244245246247248249250251252253254

???ctex|cls??

\\def\\CTEX@fs@eight{5.02}\\def\\CTEX@fs@seven{5.52}\\def\\CTEX@fs@ssix{6.52}\\def\\CTEX@fs@six{7.53}\\def\\CTEX@fs@sfive{9.03}\\def\\CTEX@fs@five{10.54}\\def\\CTEX@fs@sfour{12.05}\\def\\CTEX@fs@four{14.05}\\def\\CTEX@fs@sthree{15.06}\\def\\CTEX@fs@three{16.06}\\def\\CTEX@fs@stwo{18.07}\\def\\CTEX@fs@two{22.08}\\def\\CTEX@fs@sone{24.09}\\def\\CTEX@fs@one{26.10}\\def\\CTEX@fs@szero{36.14}\\def\\CTEX@fs@zero{42.16}??/ctex|cls??

\\def\\CTEX@fs@eightskip{6.02}\\def\\CTEX@fs@sevenskip{6.62}\\def\\CTEX@fs@ssixskip{7.83}\\def\\CTEX@fs@sixskip{9.03}\\def\\CTEX@fs@sfiveskip{10.84}\\def\\CTEX@fs@fiveskip{12.65}\\def\\CTEX@fs@sfourskip{14.45}\\def\\CTEX@fs@fourskip{16.86}\\def\\CTEX@fs@sthreeskip{18.07}\\def\\CTEX@fs@threeskip{19.27}\\def\\CTEX@fs@stwoskip{21.68}\\def\\CTEX@fs@twoskip{26.50}\\def\\CTEX@fs@soneskip{28.91}\\def\\CTEX@fs@oneskip{31.32}\\def\\CTEX@fs@szeroskip{43.36}\\def\\CTEX@fs@zeroskip{50.59}%八号字5bp%七号字5.5bp%小六号6.5bp%六号字7.5bp%小五号9bp%五号字10.5bp%小四号12bp%四号字14bp%小三号15bp%三号字16bp%小二号18bp%二号字22bp%小一号24bp%一号字26bp%小初号36bp%初号字42bp

定义相应的数学字体的大小(用于上下脚标)。

255256257258259260261262263264

???ctex|cls??

\\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}

3源代码说明23

265266267268269270271272273274275276277278279280281

\\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}

??/ctex|cls??

\\zihao这个命令用于改变中文字号。当前中文字号保存在\\CTEX@zihao中。注意,如果没用过\\zihao命令,则\\CTEX@zihao没有定义。

\\CTEX@zihao

282283

???ctex|cls??

\\def\\CTEX@zihao{}

如果是负数,表示是小号字体

284285286287288289290291292293294

\\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%

如果不在预定义的字号范围(-0–-6),则报告一个错误

295296297298

\\else\\PackageError{ctex}{%

UndefinedChinesefontsizeincommand\\protect\\zihao}{%Theoldfontsizeisusedifyoucontinue.}%

\\fi%

否则是正常字号

3源代码说明24

299300301302303304305306307308309310

\\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%

如果不在预定义的字号范围(0–8),则报告一个错误

311312313314315316317

\\else\\PackageError{ctex}{%

UndefinedChinesefontsizeincommand\\protect\\zihao}{%Theoldfontsizeisusedifyoucontinue.}%

\\fi%\\fi%

\\selectfont\\ignorespaces}??/ctex|cls??

3.4.2缺省字号大小

缺省字体只对文档类有效,下面使用中文小四号字时的设置。

318319320321322323324325326327328329330331332333334335336337

???cls??

\\ifCTEX@sfoursize

\\renewcommand\\normalsize{bp

\\@setfontsize\\normalsize{\\CTEX@fs@sfour}{\\CTEX@fs@sfourskip}%\\abovedisplayskip12\\p@\\@plus3\\p@\\@minus7\\p@\\abovedisplayshortskip\\z@\\@plus3\\p@

\\belowdisplayshortskip6.5\\p@\\@plus3.5\\p@\\@minus3\\p@\\belowdisplayskip\\abovedisplayskip\\let\\@listi\\@listI}\\normalsize

\\renewcommand\\small{.5bp

\\@setfontsize\\small{\\CTEX@fs@five}{\\CTEX@fs@fiveskip}%\\abovedisplayskip11\\p@\\@plus3\\p@\\@minus6\\p@\\abovedisplayshortskip\\z@\\@plus3\\p@

\\belowdisplayshortskip6.5\\p@\\@plus3.5\\p@\\@minus3\\p@\\def\\@listi{\\leftmargin\\leftmargini

\\topsep9\\p@\\@plus3\\p@\\@minus5\\p@\\parsep4.5\\p@\\@plus2\\p@\\@minus\\p@\\itemsep\\parsep}%

\\belowdisplayskip\\abovedisplayskip}