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