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}