ctex宏包说明吴凌云打印日期:2007年5月6日Abstractctex宏包提供了一个统一的中文LATEX文档框架,底层支持CCT和CJK两种中文LATEX系统.
ctex宏包提供了编写中文LATEX文档常用的一些宏定义和命令.
ctex宏包需要CCT系统或者CJK宏包的支持.
主要文件包括ctexart.
cls、ctexrep.
cls、ctexbook.
cls和ctex.
sty、ctexcap.
sty.
ctex宏包由ctex.
org制作并负责维护.
Contents1简介32使用帮助32.
1使用CJK42.
2使用CCT42.
3选项52.
4基本命令62.
4.
1字体设置62.
4.
2字号、字距、字宽和缩进72.
4.
3中文数字转换72.
5高级设置82.
5.
1章节标题设置82.
5.
2部分修改标题格式122.
5.
3附录标题设置132.
5.
4其他标题设置132.
5.
5其他设置142.
6配置文件14本文件版本号为v0.
8a,最后修改日期2007/05/06.
aloft@ctex.
org13源代码说明153.
1选项153.
2宏包183.
3辅助定义203.
4通用中文设置203.
4.
1中文字号223.
4.
2缺省字号大小243.
5CCT相关配置263.
5.
1CCT环境设置263.
5.
2常用的中文字体273.
5.
3中文字号273.
5.
4其他字体命令273.
5.
5CCTfntef宏包接口283.
6CJK相关配置283.
6.
1CJK环境设置293.
6.
2常用的中文字体293.
6.
3中文字号293.
6.
4其他字体命令303.
6.
5CJKfntef宏包接口303.
7中文数字处理313.
8中文化的标题结构373.
8.
1章节标题基本结构373.
8.
2part的标题413.
8.
3chapter的标题433.
8.
4section的标题453.
8.
5页眉信息的修改473.
8.
6标签引用的中文化513.
8.
7其他中文标题定义513.
8.
8用户设置命令523.
8.
9标题配置文件543.
9文档类583.
10其它功能5823.
10.
1中文日期格式583.
10.
2图表标题的分隔符593.
11用标准字体命令修改中文字体593.
11.
1字体定义文件593.
11.
2字体命令修改601简介这个宏包的部分原始代码来自于由王磊编写cjkbook.
cls文档类,还有一小部分原始代码来自于吴凌云编写的GB.
cap文件.
原来的这些工作都是零零碎碎编写的,没有认真、系统的设计,也没有用户文档,非常不利于维护和改进.
所以我们用doc和docstrip工具重新编写了整个文档,并增加了许多新的功能.
最初Knuth设计开发TEX的时候没有考虑到支持多国语言,特别是多字节的中日韩语言.
这使得TEX以至后来的LATEX对中文的支持一直不是很好.
即使在CJK解决了中文字符处理的问题以后,中文用户使用LATEX仍然要面对许多困难.
最常见的就是中文化的标题.
由于中文习惯和西方语言的不同,使得很难直接使用原有的标题结构来表示中文标题.
因此需要对标准LATEX宏包做较大的修改.
此外,还有诸如中文字号的对应关系等等.
ctex宏包正是尝试着解决这些问题.
中间很多地方用到了在ctex.
org论坛上的讨论结果,在此对参与讨论的朋友们表示感谢.
ctex宏包由五个主要文件构成:ctexart.
cls、ctexrep.
cls、ctexbook.
cls和ctex.
sty、ctexcap.
sty.
ctex.
sty主要是提供整合的中文环境,可以配合大多数文档类使用.
而ctexcap.
sty则是对LATEX的三个标准文档类的格式进行修改以符合中文习惯,该宏包只能配合这三个标准文档类使用.
ctexart.
cls、ctexrep.
cls、ctexbook.
cls则是ctex.
sty、ctexcap.
sty分别和三个标准文档类结合产生的新文档类,除了包含ctex.
sty、ctexcap.
sty的所有功能,还加入了一些修改文档类缺省设置的内容(如使用五号字体为缺省字体).
这份说明文档可以通过用LATEX编译ctex.
dtx文件来得到.
编译说明文档需要CJK宏包和ctex宏包.
为了生成正确的索引和版本记录,需要使用如下命令makeindex-sgind.
ist-octex.
indctex.
idxmakeindex-sgglo.
ist-octex.
glsctex.
glo2使用帮助ctex宏包的使用十分简单.
如果是使用ctex的文档类,只需用ctexart、ctexrep或者ctexbook替换原来的文档类就可以了.
你也可以继续使用原来的文档类,而用ctex.
sty3和ctexcap.
sty宏包来配合使用,两者的效果是一样的(除了不能修改一些文档设置如缺省字体大小).
2.
1使用CJK这是ctex宏包的缺省设置.
ctex宏包会自动调用CJK宏包,你无需再自己调用.
此外,ctex宏包会在\begin{document}和\end{document}之间自动加入一个CJK环境,你无需再添加CJK环境.
CJK宏包的命令都可以在\begin{document}和\end{document}之间正常使用.
例子1:使用文档类宏包\documentclass{ctexart}\begin{document}中文宏包测试\end{document}例子2:使用普通宏包\documentclass{article}\usepackage{ctex}\begin{document}中文宏包测试\end{document}2.
2使用CCTctex宏包也可以配合新版的CCT使用,只需在使用ctex宏包时加上CCT选项即可.
缺省CCT会使用CJK字库,因为这种字库方式比传统CCT字库更方便,兼容性也更好.
如果要使用传统CCT字库,则还要加上CCTfont选项.
例子3:使用CJK方式字库\documentclass[CCT]{ctexart}\begin{document}中文宏包测试\end{document}例子2:使用CCT方式字库\documentclass[CCT,CCTfont]{ctexart}\begin{document}中文宏包测试\end{document}42.
3选项宏包的选项用于改变一些缺省风格的设置.
缺省的设置已经针对中文的习惯进行了尽量的修改,所以一般用户无需使用这些选项.
如果你觉得某些设置不合适,可以向作者反映.
我们会考虑在后面的版本中予以改进.
我们也欢迎关于增加或者删减选项的建议.
下面的选项可能会是最经常使用的.
但是它们只能用于文档类(ctexart、ctexrep和ctexbook).
cs4size使用小四字号为缺省字体大小.
c5size使用五号字为缺省字体大小.
这个是ctex文档类的缺省格式.
下面这些则可以在文档类宏包和ctex.
sty上使用.
CCT使用CCT代替CJK做为底层的中文支持系统.
CCTfont使用传统的CCT字库方式,该选项会自动激活CCT选项.
punct对中文标点的位置(宽度)进行调整.
nopunct不对中文标点的位置进行调整(每个标点占有相同的宽度).
space使用CJK的保留空格模式,保留中文字符间的空格(类似英文的习惯).
你需要自己处理中文字符间的空格以及换行产生的空格(在行尾加上%符号可以避免),否则排版结果可能不符合中文习惯.
这种模式可以通过\CTEXnospace转换到nospace模式.
nospace使用CJK的忽略空格模式,也就是CJK*环境的模式.
CJK会自动忽略中文字符间的空格,比较符合中文习惯.
在这种模式下,可以使用来分隔中英文字符,产生的间距稍小于普通空格,排版效果比较美观.
这种模式可以通过\CTEXspace命令转换到space模式.
这个是ctex宏包的缺省模式.
cap使用中文的标题样式.
这个是文档类宏包的缺省模式.
nocap保留使用英文的标题样式.
indent使用中文的段首缩进模式,即缩进两个汉字宽度,同时每个段落都缩进.
这个是ctex宏包的缺省模式.
noindent使用原来的段首缩进模式,章节标题后的第一段不缩进.
psfont使用PostScript字库来代替CM字库.
这个选项只影响英文字库的使用,对中文没有作用.
fancyhdr保持和fancyhdr宏包的兼容性.
该选项将使得fancyhdr宏包被自动调用.
amstex保持和AMS-LATEX宏包的兼容性.
5fntef为CJKfntef宏包和CCTfntef宏包提供统一接口.
该选项将使得CJKfntef宏包或者CCTfntef宏包被自动调用.
下面这些则可以在文档类宏包和ctexcap.
sty上使用.
cap使用中文的标题样式,缺省格式由ctexcap.
cfg配置文件内的定义给出.
这个是文档类宏包的缺省模式.
nocap保留使用英文的标题样式.
sub3section将\paragraph命令产生的标题改为section类格式.
此时\subparagraph命令产生的标题会具有原来\paragraph的格式.
sub4section将\paragraph和\subparagraph命令产生的标题都改为section类格式.
总结:ctex宏包的缺省选项是nospacecapindent,文档类的缺省选项是nospacecapindentc5size.
2.
4基本命令ctex宏包给用户提供一个通用的文档框架,使得用户可以自由地在不同的底层中文系统间切换.
为此,我们为CJK定制了一些模拟CCT的命令,也对部分CCT命令进行了修改,使得两者保持一致.
此外,我们还定义了用于设置文档参数的高级设置命令.
2.
4.
1字体设置中文字体很多,但是常用的就那么几个.
我们为CJK常用的六种中文字体定义了简单易用的命令.
它们是:宋体:\songti,CJK等价命令\CJKfamily{song}\songti黑体:\heiti,CJK等价命令\CJKfamily{hei}\heiti仿宋:\fangsong,CJK等价命令\CJKfamily{fs}\fangsong楷书:\kaishu,CJK等价命令\CJKfamily{kai}\kaishu隶书:\lishu,CJK等价命令\CJKfamily{li}\lishu幼圆:\youyuan,CJK等价命令\CJKfamily{you}\youyuanTEX系统中必须已经定义好这六种中文字体,并且使用和CTEX套装中一致的字体名称.
(参见上面CJK等价命令的参数)上面的字体命令和CCT中的一致,但传统的CCT字库中没有隶书和仿宋两种字体,需要用户自行安装定义.
如果使用CCT时选择CJK字库方式,则可以使用这两种中文字体.
62.
4.
2字号、字距、字宽和缩进中文字号的设置命令是\zihao{字号},例如\zihao{3}.
可以使用的参数有16个,小\zihao号字体在前面加负号表示,从大到小依次为初号小初一号小一二号小二三号小三0-01-12-23-3四号小四五号小五六号小六七号八号4-45-56-678英文字体大小会始终保持和中文字体一致.
汉字字距的调整使用命令\ziju{字宽的倍数}.
参数可以是任意的数字,例如\ziju\ziju{5}设置汉字字距为当前汉字字宽的5倍,\ziju{0.
5}设置汉字字距为当前汉字字宽的一半.
这里的汉字字宽指的是实际汉字的宽度,不包含当前字距.
该命令不影响英文字距.
当前汉字的字宽保存在宏\ccwd中.
字宽是相邻两个汉字中心的距离,也就是说字距会\ccwd被计算在内.
正常的缩进两个汉字字宽的距离,同时在汉字大小和字距改变的情况都可以自动修改缩\CTEXindent进距离.
取消缩进.
\CTEXnoindent\CTEXsetfont命令用于更新当前的中文字体信息,包括当前字距和缩进距离.
一般来\CTEXsetfont说,用户无需使用这个命令.
2.
4.
3中文数字转换使用CJK提供的\CJKnumber命令可以将阿拉伯数字转换为中文数字.
由于LATEX臭\CTEXnumber名昭著的脆弱命令的原因,当\CJKnumber被用在章节标题等地方的时候,要么出现错误无法使用,要么无法达到预期目的,例如在产生PDF书签的时候.
于是我们定义了一个\CTEXnumber命令,可以将产生的中文数字保存下来.
该命令的格式为\CTEXnumber{result}{number}其中result必须是一个TEX宏的名字,不需要预先定义.
例如\CTEXnumber{\test}{100002005}则\test中的内容就是"一亿零二千零五"(不包括引号).
\CTEXdigits命令和\CTEXnumber命令类似,用于代替CJK提供的\CJKdigits命令.
\CTEXdigits它和\CTEXnumber命令的不同之处在于转换后结果是中文数字串,而不是按照中文习惯的数字.
该命令的格式为7\CTEXdigits{result}{number}其中result必须是一个TEX宏的名字,不需要预先定义.
例如\CTEXnumber{\test}{100002005}则\test中的内容就是"一二五"(不包括引号).
对于经常需要转换的计数器,我们特别定义了一个\chinese命令.
该命令可以象罗马\chinese数字转换命令\roman、\Roman一样使用.
具体格式是\chinese{counter}其中counter是一个LATEX计数器(counter),即由\newcounter命令产生的,例如section,figure等.
2.
5高级设置ctex宏包中一般的设置通过\CTEXoptions命令完成.
这个命令的基本格式是\CTEXoptions\CTEXoptions[key1=val1,key2=val2,.
.
.
]其中key1,key2是设置选项,val1,val2则是对应选项的设置内容.
多个选项可以在一个语句中完成设置.
部分设置如章节标题则通过\CTEXsetup命令完成.
这个命令比\CTEXoptions多一个\CTEXsetup参数,用于指定设置对象.
基本格式是\CTEXsetup[key1=val1,key2=val2,.
.
.
]{type}其中type是设置的对象类型,如part,chapter,section,subsection,subsubsection,paragraph,subparagraph等.
key1,key2是设置选项,如name,number,format,nameformat,numberformat,aftername,titleformat等.
val1,val2则是对应选项的设置内容.
同一个目标类型的多个选项可以在一个语句中完成设置.
如果以上命令的参数中包含中文字符,则命令必须放在\begin{document}之后才能正常工作.
12.
5.
1章节标题设置普通章节标题的格式全部通过\CTEXsetup命令完成.
章节类型在\CTEXsetup命令的第二个参数中指定.
如果使用了宏包选项cap(缺省情况即是如此),则所有对章节标题的修改必须在\begin{document}以后进行.
原因是缺省的中文标题设置文件ctexcap.
cfg文件是在\begin{document}之后才会自动装入,因而之前的修改都会被覆盖而无效.
这一限制对后面的附录标题以及其他标题设置一样有效.
21从v0.
7版本开始支持在导言区使用中文.
2从v0.
7版本开始,ctexcap.
cfg文件在宏包文件结束时就已经被装入,因此可以在导言区使用设置命令.
8name={prename,postname}该选项用于设置章节的名字,包括章节编号前后的词语,两个之间用逗号分开.
例如\CTEXsetup[name={第,节}]{section}会使得section的标题使用形如"第1节"的名字.
注意不要使用中文的逗号.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart{第,部分}{Part\space,}chapter{第,章}{Chapter\space,}section同右{,}subsection同右{,}subsubsection同右{,}paragraph同右{,}subparagraph同右{,}number={number}该选项用于设置章节编号的数字样式.
例如\CTEXsetup[number={\roman{section}}]{section}会使得section的标题使用小写罗马数字作为编号.
常用的数字样式命令有\chinese{counter}:一,二,三,.
.
.
\arabic{counter}:1,2,3,.
.
.
\roman{counter}:i,ii,iii,.
.
.
\Roman{counter}:I,II,III,.
.
.
\alph{counter}:a,b,c,.
.
.
\Alph{counter}:A,B,C,.
.
.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart{\chinese{part}}{\Roman{part}}chapter{\chinese{chapter}}{\arabic{chapter}}section同右{\thesection}subsection同右{\thesubsection}subsubsection同右{\thesubsubsection}paragraph同右{\theparagraph}subparagraph同右{\thesubparagraph}9format={format}用于控制章节标题的全局格式,作用域为章节名字和随后的标题内容.
常用于控制章节标题的对齐方式.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article){\centering}{\raggedright}part{\centering}{\centering}chapter{\centering}{\raggedright}section{\Large\bfseries\centering}{\Large\bfseries}subsection{\large\bfseries\centering}{\large\bfseries}subsubsection{\normalsize\bfseries\centering}{\normalsize\bfseries}paragraph{\normalsize\bfseries\centering}{\normalsize\bfseries}subparagraph{\normalsize\bfseries\centering}{\normalsize\bfseries}nameformat={nameformat}用于控制章节名字的格式,作用域为章节名字,包括编号.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article)同右{\Large\bfseries}part同右{\huge\bfseries}chapter同右{\huge\bfseries}section同右{}subsection同右{}subsubsection同右{}paragraph同右{}subparagraph同右{}numberformat={numberformat}用于控制章节编号的格式.
一般为空,当你需要编号的格式和前后的章节名字不一样时使用.
aftername={aftername}用于控制章节标题中章节名字和随后的标题内容之间的格式变换.
常用于控制标题内容是否另起一行.
该选项的缺省设置是10使用宏包选项cap使用宏包选项nocappart(article){\quad}{\par\nobreak}part同右{\par\vskip20pt}chapter{\quad}{\par\vskip20pt}section同右{}subsection同右{}subsubsection同右{}paragraph同右{}subparagraph同右{}titleformat={titleformat}用于控制标题内容的格式,作用域为章节标题内容.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article){\Large\bfseries}{\huge\bfseries}part{\huge\bfseries}{\Huge\bfseries}chapter{\huge\bfseries}{\Huge\bfseries}section同右{}subsection同右{}subsubsection同右{}paragraph同右{}subparagraph同右{}beforeskip={beforeskip}用于控制章节标题前的空距.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article)同右{4ex}part无效无效chapter同右{50pt}section同右{-3.
5explus-1exminus-.
2ex}subsection同右{-3.
25explus-1exminus-.
2ex}subsubsection同右{-3.
25explus-1exminus-.
2ex}paragraph同右{3.
25explus1exminus.
2ex}subparagraph同右{3.
25explus1exminus.
2ex}在section及以下的标题中,使用负的距离表示标题后的段落不缩进(如标准的英文LaTeX文档),否则缩进.
标题上方真正的空距是该参数的绝对值.
11afterskip={afterskip}用于控制章节标题后的空距.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article)同右{3ex}part无效无效chapter同右{40pt}section同右{2.
3explus.
2ex}subsection同右{1.
5explus.
2ex}subsubsection同右{1.
5explus.
2ex}paragraph同右{-1em}subparagraph同右{-1em}在section及以下的标题中,正的距离表示向下留出的空距(如标准的section标题),使用负的距离则表示向右留出的空距的负值(如标准的paragraph标题).
indent={indent}用于控制章节标题本身的缩进.
该选项的缺省设置是使用宏包选项cap使用宏包选项nocappart(article)同右{0pt}part无效无效chapter同右{0pt}section同右{0pt}subsection同右{0pt}subsubsection同右{0pt}paragraph同右{0pt}subparagraph同右{\parindent}2.
5.
2部分修改标题格式如果只想修改标题格式中的某些参数而不是完全重新设置,可以使用带+号的设置选项.
例如\CTEXsetup[format+={\zihao{1}}]{section}则section的标题使用一号字体,而其他格式设置保持不变.
标题格式相关的选项都支持这一功能,包括format,nameformat,numberformat,aftername和titleformat,而且对所有文档类型都有效.
122.
5.
3附录标题设置附录(appendix)的标题也使用\CTEXsetup命令进行设置,第二个参数设为appendix.
但是只能使用name和number两个设置选项.
在使用了\appendix命令之后,附录的名字和编号会被自动使用.
附录的名字和前面的章节不同,它只有一个部分,放在编号之前.
野草云月末准备了一些促销,主推独立服务器,也有部分云服务器,价格比较有性价比,佣金是10%循环,如果有时间请帮我们推推,感谢!公司名:LucidaCloud Limited官方网站:https://www.yecaoyun.com/香港独立服务器:CPU型号内存硬盘带宽价格购买地址E3-1230v216G240GB SSD或1TB 企盘30M299元/月点击购买E5-265016G240GB SS...
特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。官方网站:https://www.56dr.com/ 10年老品牌 值得信赖 有需要的请联系======================特网云推出多IP云主机...
近日Friendhosting发布了最新的消息,新上线了美国迈阿密的云产品,之前的夏季优惠活动还在进行中,全场一次性45折优惠,最高可购买半年,超过半年优惠力度就不高了,Friendhosting商家的优势就是100Mbps带宽不限流量,有需要的朋友可以尝试一下。Friendhosting怎么样?Friendhosting服务器好不好?Friendhosting服务器值不值得购买?Friendho...