3源代码说明17

\\ifCTEX@fivesize用于判断是否使用中文五号字,缺省是使用。

51525354

???cls??

\\newif\\ifCTEX@fivesize\\CTEX@fivesizetrue

\\DeclareOption{c5size}{\\CTEX@fivesizetrue\\CTEX@sfoursizefalse}??/cls??

A如果指定了标准的LTEX字体大小(10pt/11pt/12pt),则不使用中文字号作为缺省大

小。

5556575859606162636465666768697071727374

???cls??

\\DeclareOption{10pt}{%

\\CTEX@sfoursizefalse\\CTEX@fivesizefalse%\\PassOptionsToClass{\\CurrentOption}%??article??{article}}??report??{report}}??book??{book}}

\\DeclareOption{11pt}{%

\\CTEX@sfoursizefalse\\CTEX@fivesizefalse%\\PassOptionsToClass{\\CurrentOption}%??article??{article}}??report??{report}}??book??{book}}

\\DeclareOption{12pt}{%

\\CTEX@sfoursizefalse\\CTEX@fivesizefalse%\\PassOptionsToClass{\\CurrentOption}%??article??{article}}??report??{report}}??book??{book}}??/cls??

把没有定义的选项传递给缺省的文档类

75767778

??cls??\\DeclareOption*{\\PassOptionsToClass{\\CurrentOption}%??article??{article}}??report??{report}}??book??{book}}

处理选项

79

??sty|cls??\\ProcessOptions

A如果使用中文的缺省字号大小,则需要传递合适的参数给标准的LTEX文档类。

8081828384

???cls??

\\ifCTEX@sfoursize

\\PassOptionsToClass{12pt}%??article??{article}??report??{report}

3源代码说明18

858687888990919293

??book??{book}\\fi

\\ifCTEX@fivesize

\\PassOptionsToClass{10pt}%??article??{article}??report??{report}??book??{book}\\fi??/cls??

装入缺省的文档类

949596

??article??\\LoadClass{article}??report??\\LoadClass{report}??book??\\LoadClass{book}

3.2宏包

我们需要使用的一些宏包,其中cctbase和CJK用来处理中文:

979899100101102103104105106107108109110111112113114115116117118119120121122123

???cct??

\\ifCTEX@cctfont

\\RequirePackage{cctbase}[2003/04/05]\\else

\\RequirePackage[CJK]{cctbase}[2003/04/05]\\fi

\\ifCTEX@punct\\CCTpuncttrue\\else

\\CCTpunctfalse\\fi??/cct?????cjk??

\\RequirePackage{CJK}[2003/03/28]

\\RequirePackage{CJKnumb}[2003/03/28]\\ifCTEX@punct

\\RequirePackage{CJKpunct}[2004/02/13]\\fi??/cjk??%

%以及一些其他工具宏包:???ctex|cls??

\\RequirePackage{keyval}[1999/03/16]\\ifCTEX@indent

\\RequirePackage{indentfirst}\\fi

\\ifCTEX@psfont

3源代码说明19

124125126127128129130131132

\\RequirePackage[T1]{fontenc}\\RequirePackage{textcomp}\\RequirePackage{mathptmx}

\\RequirePackage[scaled]{helvet}\\RequirePackage{courier}\\else

\\RequirePackage{type1cm}\\fi

??/ctex|cls??

fancyhdr宏包,控制页眉页脚的设置

133134135136137

???ctex|cls??

\\ifCTEX@fancyhdr

\\RequirePackage{fancyhdr}\\fi

??/ctex|cls??

CCTfntef宏包和CJKfntef宏包

138139140141142143144145146147148149

???cct??

\\ifCTEX@fntef

\\RequirePackage{CCTfntef}\\normalem\\fi??/cct?????cjk??

\\ifCTEX@fntef

\\RequirePackage{CJKfntef}\\normalem\\fi??/cjk??

ctexcap宏包需要先装入ctex宏包。

150151152153154155

???ctexcap??

\\ifCTEX@caption

\\PassOptionsToPackage{cap}{ctex}\\fi

\\RequirePackage{ctex}??/ctexcap??

文档类还需要的宏包:

156157

???cls????/cls??

3.3辅助定义

我们定义一些将在后面使用的宏。

3源代码说明20

158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192

???ctex|cls??

\\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}}??/ctex|cls??

???ctex|cls??

??article??\\def\\CTEX@cls@article{}??report??\\def\\CTEX@cls@report{}??book??\\def\\CTEX@cls@book{}???ctex??

\\@ifclassloaded{article}{\\def\\CTEX@cls@article{}}{}\\@ifclassloaded{report}{\\def\\CTEX@cls@report{}}{}\\@ifclassloaded{book}{\\def\\CTEX@cls@book{}}{}??/ctex??

\\def\\ifCTEX@cls#1{%

\\expandafter\\ifx\\csnameCTEX@cls@#1\\endcsname\\relax\\expandafter\\@secondoftwo\\else

\\expandafter\\@firstoftwo\\fi}??/ctex|cls??

???ctexcap??

\\@ifundefined{if@mainmatter}{\\let\\if@mainmatter\\iftrue}{}??/ctexcap??

???ctex|cls??

\\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}}??/ctex|cls??

3.4通用中文设置

和CCT以及CJK相关的内容分放在各自的.clo文件中

193194195196

???ctex|cls??\\ifCTEX@cct

\\input{ctexcct.clo}\\else