您的当前位置:首页正文

ctex常见问题与解答

2024-06-06 来源:易榕旅网
CTEXFAQ(常见问题集)

Version0.4beta(86)

吴凌云(aloft@ctex.org)

2004年9月27日

Rev.1.22

一共收录有86个问题。这份常见问题本文的大部分内容都来自于CTEX论坛上的讨论。版本号为0.4,

集会不断更新,请到CTEX网站的主页下载它的最新版本。本文档的主要目的是帮助你快速的找到问题的答案,因此可能不是非常详细。如果你想系统的学习TEX

A和LTEX请参考专门的资料(见问题83和问题84)。

󰀁

A符号表示后面的内容需要比较深的LTEX知识。

󰀁󰀁

表示后面的内容带有试验性质,有时会带来意想不到的结果,应尽量避免在实际中使用。

新增17188082修订32038394352

c2003–2004CTEXandalltheContributorstoCTEXFAQ.Allrightsreserved.Copyright󰀁

目录

A关于FAQ

1234

CTEX是干什么的?.........................................CTEX网站包括几个部分?.....................................这个FAQ的目的是什么?.....................................我可以打印、传播、转载这份文档的内容吗?...........................

5555555666677

B基本概念

567891011

什么是TEX?............................................

ALTEX是什么?...........................................A什么是AMS-TEX/AMS-LTEX?.................................ATEX和LTEX是什么关系?.....................................

AALTEX2.09和LTEX2ε有什么区别?...............................

MiKTEX、fpTEX、teTEX、CTEX又是什么关系?........................什么是CTAN?...........................................

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

目录2

C安装升级

12131415161718

哪里可以下载CTEX中文套装软件?................................哪里可以下载MiKTEX的最新版本?...............................哪里能找到我想要的宏包?.....................................如何升级现有的MiKTEX?.....................................我下载了一些新的宏包,该如何安装到我的系统中去?......................CTEX中文套装软件的Basic、Pro、Full版本都有什么区别?..................CTEX-Fonts、CTEX-CS、CTEX-Ext都是干什么的?和CTEX中文套装有什么关系?.....

7778888999910101011111112121212131314141414141414151516171717

D新手入门

1920212223

我是新手,该如何开始?......................................能否举一个简单的英文排版例子?.................................

A用什么编辑工具来编辑LTEX文件?................................

什么是导言区(preamble)?....................................什么是文件名数据库?怎么刷新?.................................

E中文支持

2425262728293031323334

比较一下CJK与CCT的优缺点?.................................能否举一个简单的CCT中文排版例子?..............................能否举一个简单的CJK中文排版例子?..............................在CJK中如何使段首缩进两个中文字符宽度?..........................在CJK中如何调整汉字的间距?..................................CJK和CJK*有何不同?.......................................中英文混排时为何无法正确分行?.................................什么是点阵字库和矢量字库?....................................在CJK中都可以使用哪些矢量字库?...............................两种类型矢量字库会不会发生冲突?................................如何生成支持中文拷贝粘贴的PDF文件?............................

F文档排版

353637383940414243

如何使首段段首也缩进?......................................如何设置双倍或者更大的行间距?.................................如何注释掉一大段内容,不做编译?................................如何生成分栏的文档?.......................................如何使得双栏文档保持底部对齐?.................................如何在双栏文档中使用通栏的摘要?................................如何产生全部横排的文档?.....................................如何使文档中的某一页横排?....................................如何使用NewTimeRoman字体?................................

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

目录3

G数学公式G.1编号

44454647

如何实现定理、定义、推论等的统一编号?............................如何让公式编号中使用当前章节编号做前缀?...........................如何实现如(1a)(1b)这种公式编号?...............................如何让一个公式编号表示为另一个公式编号的变化形式?....................

171717181819191919191920212121222222222324242525252526262626272728

G.2字体

4849

实数域R或复数域C等的字体该用什么命令?..........................书中向量常用斜体加黑体表示,该用什么字体命令排版?....................

G.3其它

5051

如何使上下限出现在求和、积分符号的上下方而不是右边?...................如何实现上下方能输入公式文字且可伸长的等号或者箭头符号?................

H图形表格H.1图形

525354

ALTEX如何使用图形?........................................ALTEX支持哪些图形格式?.....................................

DVI里不能显示EPS图片?....................................

H.2表格

5556

表格中使用p参数的列如何改变对齐方式?............................如何生成固定宽度的表格?.....................................

H.3浮动对象

575859I

浮动对象和上下文之间的距离太大了,怎么办?.........................分栏文档中如何使用单栏或者通栏浮动对象?...........................分栏文档中为何不能设定通栏浮动对象的位置?.........................

参考文献60616263646566

如何将文献引用作为上标出现?..................................如何排序并压缩连续的引用,产生如[2,4–8]形式的引用?....................如何定制自己的参考文献样式?..................................如何才能把参考文献条目放在正文中?..............................能否生成反向引用(从参考文献指向引用的正文)?........................如何让每章或者每节都有单独的参考文献?............................如何产生多个参考文献列表?....................................

J其它专题

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

目录4

J.1脚注

67686970

如何在表格中使用脚注?......................................如何在章节标题中使用脚注?....................................如何在图表的标题中使用脚注?..................................如何重复使用相同内容的脚注?..................................

28282929293030303131313132323232323233333333333333343434364041

J.2目录

7172

怎样象第几章一样,将参考文献也加到目录?...........................手工加入的目录项页码错误,生成的书签链接也不对,怎么回事?...............

J.3特殊符号

737475

如何输出ˆ和˜符号?.......................................如何显示可见的空格符号?....................................如何显示带圈的符号?.......................................

K高级技术

7677

\\makeatletter和\\makeatother是干什么用的?........................

A如何查询LTEX命令和参数的缺省定义?.............................

L辅助工具

78798081

WinEdt和GSview经常出现过期和注册提示,如何解决?....................如何去掉WinEdt的自动断行和自动续行?............................如何让WinEdt显示行号?.....................................Yap里如何预览带有颜色的EPS图片?..............................

M错误处理

82

Error:pdflatex(filesimsun.ttf):can’tfindtable‘maxp’....................

N帮助文档

83848586参考文献索引

ContributorsChangeListofv0.4

能否推荐一些比较好的中文资料?.................................能否推荐一些比较好的英文资料?.................................

A有没有关于LTEX宏包的详细说明?................................

我的问题没找到答案,或者有答案但是解决不了我的问题,怎么办?..............

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

B基本概念5

A

关于FAQ

1

CTEX是干什么的?

CTEX是一个关于TEX的中文网站,CTEX是中文TEX的缩写。CTEX的宗旨是为中国广大的TEX用户提供力所能及的帮助。目前CTEX的主要工作包括维护CTEX网站,为用户提供学习交流的场所;开发中文TEX系统安装配置软件;致力于TEX文档的中文化工作。CTEX的服务器和网络接入得到了中国科学院数学与系统科学研究院的支持。2

CTEX网站包括几个部分?目前CTEX主要有三个部分:•http://www.ctex.org主页,发布最新软件、消息•http://bbs.ctex.org论坛,提问、讨论问题•ftp://ftp.ctex.orgFTP,提供软件资料下载、交流

3

这个FAQ的目的是什么?

本FAQ是为了收集CTEX论坛上经常出现的问题以及解答,以便大家遇到问题时能方便迅速地找到帮

助。本文档也适合初学者作为学习TEX和LATEX的参考资料。FAQ中的解答力求正确完整,大部分都经过

试验确认。

除了常见问题,本文档也收录一些难题和当前为止比较好的解决方法。如果你对FAQ中的问题有更好

的方法,欢迎到CTEX论坛上提出,

或者联系本文档的维护人。在经过确认以后,你的方法将被收录到FAQ的新版本中。4

我可以打印、传播、转载这份文档的内容吗?

可以。本文档采用自由软件组织颁布的GNU自由文档许可证。因此,你可以在保证文档的完整性前提下自由拷贝、传播这份文档。你也可以摘录、转载这份文档中的部分内容,但是要注明来源以及保证所有包含摘录内容的文档也都是自由文档,也就是可以免费得到的。详情请阅读GNU自由文档许可证。

B

基本概念

5

什么是TEX?

电子排版系统的出现给印刷出版业带来了一场革命,利用电子计算机及各种辅助设备,可以完成从文稿、图表的录入、编辑、修改、组版,直至得到各种不同用途、不同质量的输出结果。利用电子排版系统,可以减轻劳动强度,缩短出版周期。目前世界上有许多电子排版系统。这些系统各有特点,也各有自己的适用范围。TEX就是一种优秀的电子排版系统。

TEX提供了一套功能强大并且十分灵活的排版语言,它多达900多条指令,并且TEX有宏功能,用户可以不断地定义自己适用的新命令来扩展TEX系统的功能。许多人利用TEX提供的宏定义功能对TEX进行了二次开发,其中比较著名的有美国数学学会推荐的非常适合于数学家使用的AMS-TEX以及适合于一般文

章、报告、书籍的LATEX系统。

CTEXFAQ(常见问题集)v0.4betaCopyright󰀁

c2003–2004CTEX.ORGRevised

v0.4

B基本概念6

TEX系统是公认的数学公式排得最好的系统。美国数学学会(AMS)鼓励数学家们使用TEX系统向它的期刊投稿。世界上许多一流的出版社如Kluwer、Addison-Wesley、牛津大学出版社等也利用TEX系统出版书籍和期刊。

大部分的TEX系统都是免费的。Knuth教授还公开了他的全部源程序。TEX系统目前已经在数百种计算机系统上得到实现。TEX系统的排版结果DVI(DeViceIndependent)文件与输出设备无关。DVI文件可以显示、打印、照排,几乎可以在所有的输出设备上输出。TEX排版源文件及结果在各种计算机系统上互相兼容。6

ALTEX是什么?

ALeslieLamport开发的LTEX是当今世界上最流行和使用最为广泛的TEX宏集。它构筑在PlainTEX的

A基础之上,并加进了很多的功能以使得使用者可以更为方便的利用TEX的强大功能。使用LTEX基本上不需

A要使用者自己设计命令和宏等,因为LTEX已经替你做好了。因此,即使使用者并不是很了解TEX,也可以

A在短短的时间内生成高质量的文档。对于生成复杂的数学公式,LTEX表现的更为出色。ALTEX自从八十年代初问世以来,也在不断的发展。最初的正式版本为2.09,在经过几年的发展之后,许

A多新的功能,机制被引入到LTEX中。在享受这些新功能带来的便利的同时,它所伴随的副作用也开始显现,AAA这就是不兼容性。标准的LTEX2.09,引入了“新字体选择框架”(NFSS)的LTEX,SLiTEX,AMS-LTEX等

等,相互之间并不兼容。这给使用者和维护者都带来很大的麻烦。为结束这中糟糕的状况,FrankMittelbach

AA等人成立了LTEX3项目小组,目标是建立一个最优的,有效的,统一的,标准的命令集合。即得到LTEX的

AA一个新版本3。这是一个长期目标,向这个目标迈出第一步就是在1994年发布的LTEX2ε。LTEX2ε采用了

AANFSS作为标准,加入了很多新的功能,同时还兼容旧的LTEX2.09。LTEX2ε每6个月更新一次,修正发现

AAA的错误并加入一些新的功能。在LTEX3最终完成之前,LTEX2ε将是标准的LTEX版本。

7

A什么是AMS-TEX/AMS-LTEX?

AMS-TEX是美国数学会提供的,在PlainTEX基础上开发的TEX宏集。它主要用于排版含有很多数

学符号和公式的科技类文章或书籍。AMS-TEX给出了许多高级命令,可以让使用者很方便地排版大型的,

AA复杂的数学公式。AMS-TEX排版数学公式等的功能通过AMS-LTEX中的宏包amsmath在LTEX中得到实

现。AMS-TEX目前的版本为2.1。

AAMS-LTEX包括两部分,一是上面提到的amsmath宏包,主要的目的是用来排版数学符号和公式。另

A一部分是amscls,提供了美国数学会要求的论文和书籍的格式。AMS-LTEX目前的版本为2.0。ATEX的同时,美国数学会还提供一套数学符号的字库,AMSFonts。这套字在提供AMS-TEX和AMS-L

库中增加了很多TEX的标准字库ComputerModern所没有的一些数学符号,粗体数学符号等。AMSFonts现在的版本为2.2,有Metafont和Type1两种字库提供下载。

8

ATEX和LTEX是什么关系?

AALTEX是TEX中的一种格式(format),是建立在TEX基础上的宏语言,也就是说,每一个LTEX命令实际上最后都会被转换解释成几个甚至上百个TEX命令。但是,普通用户可以无需知道这中间的复杂联系。就象编程的时候如果使用一些已经编译好的函数库和模板可以使我们仅仅用几个命令就实现很多功能一样,ALTEX根据人们排版文章的习惯,定义了许多命令和模板,通过这些命令和模板,我们可以很快的得到漂亮的排版结果。

9

AALTEX2.09和LTEX2ε有什么区别?

AAAAA。LTEX2ε对LTEX2.09做了很大的改LTEX2.09是LTEX在LTEX2ε之前的一个版本(参见问题6)

A进,增加了很多新功能。从文件内容上看,两者最显著的不同在于LTEX2.09使用\\documentstyle命令定

义文档类型以及所包含宏包,如

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

C安装升级7

\\documentstyle[twoside,epsfig]{article}

A而LTEX2ε使用\\documentclass命令定义文档类型,用\ckage命令包含宏包,如

\\documentclass[twoside]{article}\ckage{epsfig}

AAA如果你使用的不是几十年前的老机器,你的系统的LTEX都是LTEX2ε版本。LTEX2.09文件一般都可以在

AALTEX2ε系统中以兼容方式编译。但是兼容方式编译速度慢,而且很多LTEX2ε的新功能无法使用。如果你

AAAA不是需要编译以前的LTEX2.09文件,你根本无需使用LTEX2.09,也不用知道LTEX2.09与LTEX2ε的差

A别。大部分LTEX2.09文件都可以通过用\\documentclass命令和\ckage命令代替\\documentstyleAA命令修改为LTEX2ε格式。有时可能需要一些特殊宏包,例如latexsym,对旧的LTEX2.09命令提供支持。

10

MiKTEX、fpTEX、teTEX、CTEX又是什么关系?

TEX在不同的硬件和操作系统上有不同的实现版本。这就像C语言,在不同的操作系统中有不同的编译

系统,例如Linux下的gcc,Windows下的VisualC++等。有时,一种操作系统里也会有好几种的TEX系统。目前常见的Unix/Linux下的TEX系统是teTEX,Windows下则有MiKTEX和fpTEX。CTEX指的是CTEX中文套装的简称,是把MiKTEX和一些常用的相关工具,如GSview,WinEdt等包装在一起制作的一个简易安装程序,并对其中的中文支持部分进行了配置,使得安装后马上就可以使用中文。11

什么是CTAN?

CTAN是英文ComprehensiveTEXArchiveNetwork的首字母缩写,直译成中文就是综合TEX文件网络,它包含有三个主服务器和几十个镜像服务器,以FTP和WWW方式向所有的TEX用户提供文件服务。CTAN可以说几乎收罗了世界上所有的TEX相关软件、文档,并保证不断更新。你可以访问

http://www.ctan.org

来得到更详细的信息。在CTAN中搜索文件可以参见问题14。

C

12

安装升级

哪里可以下载CTEX中文套装软件?CTEX首页上的下载中心:

http://www.ctex.org/modules.php?op=modload&name=Downloads&file=index

或者直接到CTEX的FTP服务器上下载:

ftp://ftp.ctex.org/pub/tex/systems/ctex/13

哪里可以下载MiKTEX的最新版本?可以到MiKTEX的主页:http://www.miktex.org或者CTEX提供的CTAN镜像中下载:

ftp://ftp.ctex.org/CTAN/systems/win32/miktex/setup/setup.exe

然后执行setup.exe,在其提供的站点列表中选择合适的网站(CTEXFTP是列表中唯一的中国大陆网站),按照程序提示即可完成下载。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

C安装升级8

14哪里能找到我想要的宏包?

CTAN(见问题11)可以说几乎收罗了世界上绝大多数的TEX相关软件、文档,并保持更新,为广大用户提供了方便。虽然CTAN的目录结构很有规则,并不算太难找,但对于许多对其目录结构不熟悉的人来说,还是一个问题。特别是很多初学者,经常找不到想要的东西。

CTAN提供了一个搜索引擎

http://www.ctan.org/search/?action=/index.html

通过它,你可以确定你需要的文件在CTAN目录中的相对位置,然后就可以在任何一个CTAN镜像中下载了。CTAN在全世界有几十个镜像服务器,每日同步更新,本站的FTP也是其中之一。你可以从搜索引擎提供的列表中挑选一个离你最近服务器下载。

注意一点:不同的镜像服务器存放CTAN的根目录可能不同。例如,CTEXFTP是在/CTAN/

目录下。把搜索引擎的结果加到这个目录后面,就是这个文件在我们的FTP上的路径了。15

如何升级现有的MiKTEX?

无论是CTEX中文套装包含的MiKTEX还是单独安装的MiKTEX都可以使用以下方法升级(只适用于MiKTEX2.2以后版本)运行开始菜单中MiKTEX组中的MiKTEXUpdateWizard,在其中提供的站点列表中选择合适的网站,则程序会自动完成下载所需的文件并升级。也可以使用安装时的程序setup.exe把最新的内容下载到你的硬盘上以后,再运行MiKTEXUpdateWizard并选择从本地(localfolder)升级。16

我下载了一些新的宏包,该如何安装到我的系统中去?

如果你得到的宏包已经是编译过的,也就是已经有.sty或者.cls文件,你只需把这些文件放在localtexmf\ex\\latex\\

下的某个子目录中,可以自己建一个。然后你还要让TEX系统知道这个新的宏包的存在,你需要刷新系统的文件名数据库(见问题23)。现在你可以使用这个宏包了。你也可以把这些宏包文件和你的TEX源文件放在同一目录下,这种情况下你不需要刷新系统的文件名数据库,但只有同一个目录下的文件可以使用这些宏包。如果你拿到的是宏包的源文件,一般来说都包含两个文件:一个扩展名为.ins,另一个扩展名为.dtx。此外,通常会有一个readme.txt对宏包进行简要的说明。你应该先阅读这个文件,接着对.ins文件运行LATEX命令,这会产生一个或者数个.sty文件以及其它相关文件。然后参照上面的方法结合宏包说明文件的

要求,把生成的文件加入你的TEX系统中。你还可以直接对.dtx文件运行LATEX从中产生宏包的帮助文档。

更详细的说明可以参见lshort[1]。17

CTEX中文套装软件的Basic、Pro、Full版本都有什么区别?

CTEX根据不同用户的要求制作了Basic、Pro、Full三个不同大小版本的CTEX中文套装。他们之间的

区别仅在于其中的MiKTEX包含的内容。Basic版本中的MiKTEX只有最基本的LATEX系统。如果你只是

想了解试用一下LATEX系统而不想安装太多东西,那么就可以安装这个版本,编译一些简单的LATEX文件已

经足够了。或者你想自己定制安装所需的LATEX组件和宏包,你也可以安装这个版本,然后加入需要的组件

和宏包。对于因为硬盘空间有限而无法安装Pro版本和Full版本的用户,也可以采用这个方法来解决。Basic版本所需的安装空间为一百多兆。

CTEXFAQ(常见问题集)v0.4beta

Copyright󰀁

c2003–2004CTEX.ORGNewv0.4

D新手入门9

Full版本中包含的是完整的MiKTEX,适用于需要很多功能而且有较大硬盘空间的用户。Full版本需要六百多兆的安装空间。

Pro版本是经过精心定制的,大小介于Basic版本和Full版本中间。其中包含了常用的MiKTEX内容,适用于绝大多数的中国用户。相对于Full版本,Pro版本可以节省一百多兆的安装空间。18

CTEX-Fonts、CTEX-CS、CTEX-Ext都是干什么的?和CTEX中文套装有什么关系?

除了CTEX中文套装,CTEX还制作了几个相关的安装包,分别是CTEX-Fonts、CTEX-CS和CTEX-Ext。CTEX-Fonts中包含了几种常用的中文字体的Type1字库和相应的配置文件。在没有安装CTEX-Fonts时,CTEX缺省使用Windows系统中的TrueType字库。关于两种字库的差别,参见问题31和问题32。此外,对于Windows2000以及之后的Windows操作系统,安装CTEX-Fonts还可以避开其中宋体字库的问题(参见问题82)。目前包含的字体有宋体、仿宋体、楷体、黑体、隶书和幼圆六种。CTEX-CS是CTEX套装中的中文安装部分,包括CJK和CCT的所有文件。对于使用CTEX套装的用户,CTEX-CS可以用于将中文相关的设置恢复到CTEX套装的初始状态。对于没有安装CTEX套装的用户,则可以在用户自行安装的MiKTEX中增加中文支持。此外,CTEX-CS还支持为fpTEX(即TEXLive)增加中文支持。

CTEX-Ext是CTEX套装的扩展部分,用于一些TEX相关工具的中文设置和安装。目前的版本包括ConTEXt的中文设置安装。

D

新手入门

19

我是新手,该如何开始?

首先,我们建议你至少阅读一些简单的教材,例如lshort中文版[1],对LATEX有一个基本的了解。

在安装系统方面,如果你不需要中文支持,可以安装MiKTEX或者fpTEX,如果需要用到中文,建议使用CTEX中文套装来学习使用。否则,光是中文的设置安装就可能使你焦头烂额。在Linux下,你可以使用teTEX。

在安装完系统以后,先输入一个最简单的例子(英文的例子参见问题20,中文的例子参见问题25和问题26)来看看系统是否正确安装了。之后你就可以开始使用了。

如果遇到问题,建议使用一个尽可能简单的例子来测试你的问题,否则的话,在一个复杂文件里排除错误会花掉你很多的精力。而且由于大的文档上下文的命令互相影响,会使得调试变得困难,特别是对初学者来说。

如果你使用的是别人的模板,那么遇到问题最好的解决办法就是问模板的作者,请求他的帮助。如果是一般的问题,你可以到CTEX论坛或者其他国内外的TEX网站上请求帮助。在CTEX网站上你可以找到这些网络链接。20

能否举一个简单的英文排版例子?

\\documentclass{article}\\begin{document}

Thisisatestfile.\\end{document}

这个例子需要保存为.tex后缀的文件,然后用LATEX编译,生成的DVI文件可以用DVI浏览器进行查看或

者用dvips转换成PostScript文件。假设文件名是test.tex,生成PostScript文件的完整编译过程是:

latextest

dvipstest

CTEXFAQ(常见问题集)v0.4beta

Copyright󰀁

c2003–2004CTEX.ORGNew

v0.4

Revisedv0.4

D新手入门10

21

A用什么编辑工具来编辑LTEX文件?

AALTEX文件是标准的文本文件,任何一个文本编辑工具都可以编辑LTEX文件。但是有些编辑器针对

AALTEX文件作了设置和优化,例如增加可以直接调用LTEX编译程序的菜单或者按钮,使得你可以更方便的进行编辑、编译工作。A在Windows中对LTEX支持最好的是WinEdt,针对MiKTEX和fpTEX都有预制好的菜单和工具条按钮,安装完就可以使用。WinEdt还可以通过工具条输入许多数学符号,免去了记忆的烦恼。在各种细节上,

A例如项目管理、彩色关键字、括号匹配等等,WinEdt对LTEX的支持都很完善,你可以在使用中慢慢发掘

他的强大功能。还有一部分用户喜欢使用UltraEdit和Editplus,这两个都是功能强大的通用编辑工具,你

A可以针对LTEX定制菜单和工具条。缺点就是这些都要你自己动手,在一些细的方面,也没有WinEdt考虑

A得周到,毕竟不是专门针对LTEX的编辑器。此外,还有一些其他的编辑器,如WinTeX、TeXnicCenter等,

A如果你感兴趣,可以一一尝试,挑一个自己喜欢的来编辑LTEX文件。

A在Linux/Unix下,我们推荐使用vi或者Emacs作为LTEX编辑器。

22什么是导言区(preamble)?

ALTEX文档的标准结构是

\\documentclass{article}

...

\\begin{document}...

\\end{document}...

在\\begin{document}和\\end{document}之间的是我们的正文部分。而在\\documentclass{article}和\\begin{document}之间的部分,通常用于定义一些全局命令和参数,这个部分就称为导言区,英文是

Apreamble。在\\end{document}之后的部分会被LTEX完全忽略,可以用来写一些关于文档的注释,或者暂

时不想包含到正文中去的内容,也有人把它叫做postamble,因为它和导言区(preamble)处在完全相对的位置。23

什么是文件名数据库?怎么刷新?

TEX系统通过这个数据库记录了所需要的各种文件的名字和具体目录位置。每次你往系统中添加文件后,都要记得刷新这个数据库,否则TEX有可能找不到需要的文件。

刷新文件名数据库的具体命令取决于你使用的TEX系统。teTEX和fpTEX的命令是texhash

MiKTEX用户可以在Dos窗口中输入以下命令

initexmf--update-fndb

或者使用MiKTEX提供的图形界面工具MiKTEXOptions。在开始菜单中找到MiKTEXOptions,打开点击General页上的RefreshNow按钮即可。

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

E中文支持11

E

24

中文支持

比较一下CJK与CCT的优缺点?CJK比CCT的优越之处有以下几点:

A1.字体定义采用LTEXNFSS标准,生成的DVI文件不必像CCT那样需要用patchdvi处理后才能预览

A和打印。而且一般GB编码的文件也不必进行预处理就可直接用LTEX命令进行编译。

2.可使用多种TrueType字体和Type1字体,生成的PDF文件更清楚、漂亮。3.能同时在文章中使用多种编码的文字,如中文简体、繁体、日文、韩文等。

当然,CCT在一些细节上,如字体可用中文字号,字距、段首缩进等更符合中文的习惯。而CJK就没有

针对中文习惯指定特殊的排版标准。

目前,CCT的作者已经推出了最新版的CCT,可以使用CJK的字库,从而也避免了预处理和patchdvi的过程,使用更方便,排版效果更美观了。最新版的CCT可以在

ftp://ftp.cc.ac.cn/pub/cct/

下载,或者使用CTEX提供的工具CTEX-CS升级。25

能否举一个简单的CCT中文排版例子?一个简单的老版本CCT格式的例子是:

\\documentclass{cctart}\\begin{document}

\\kaishu这是中文楷体字。\\end{document}

A这个例子需要保存为.ctx后缀的文件,然后用cct命令进行预处理,生成同名.tex文件。再用LTEX编译,

生成的DVI文件需要patchdvi进行处理后才能用DVI浏览器进行查看或者用dvips转换成PostScript文件。假设文件名是test.ctx,完整的编译过程是:

ccttest

latextest

patchdvi-r600x600-btest.dvitemp.dvideltest.dvi

rentemp.dvitest.dvidvipstest

新版的CCT除了保留原来的处理方式以外,增加了两种新的处理方式。第一种是用TEX的处理来代替原来的cct.exe的预处理。这种方式的源文件和老的文件相同,但是不用再存成.ctx为后缀的文件,也不用cct命令进行预处理。除此之外,其余和老的处理方式基本相同。第二种处理方式是采用CJK的中文字库,需要在系统中安装好CJK字库。与第一种方式的主要区别就在于去掉了patchdvi处理DVI文件的需要。使用上,是在\\documentclass命令中加上参数CJK。具体的例子如下:

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

E中文支持12

\\documentclass[CJK]{cctart}\\begin{document}\\kaishu

这是中文楷体字。\\end{document}

这个例子可以象英文文档一样的编译(见问题20)得到正确的输出。26

能否举一个简单的CJK中文排版例子?

在安装好CJK的系统中,下面这个例子可以象英文文档一样的编译(见问题20)得到正确的输出。

\\documentclass{article}\ckage{CJK}\\begin{document}

\\begin{CJK*}{GBK}{kai}这是中文楷体字。\\end{CJK*}

\\end{document}

27在CJK中如何使段首缩进两个中文字符宽度?在CJK环境中使用命令

\\CJKindent

28在CJK中如何调整汉字的间距?

CJK会在两个汉字之间插入一个\\CJKglue,因此我们修改\\CJKglue的定义就可以调整汉字的间距。用法是

\\renewcommand{\\CJKglue}{\\hskip󰀇b󰀈plus󰀇p󰀈minus󰀇m󰀈}

其中󰀅b󰀆、󰀅p󰀆和󰀅m󰀆都是TEX长度,如0.05pt。执行以上命令后,汉字的标准间距就是󰀅b󰀆,在需要的时候向上向下调整,调整幅度分别不超过󰀅p󰀆和󰀅m󰀆。

CJK的缺省值是\\hskip0ptplus0.08\\baselineskip。29

CJK和CJK*有何不同?

CJK宏包有两种不同的处理方式。一个是

\\begin{CJK}.......

\\end{CJK}

称为CJK模式;另一个是

\\begin{CJK*}.......

\\end{CJK*}

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

E中文支持13

称为CJK*模式。两个模式的区别在于CJK*会忽略CJK字符之间的空格,这是我们中文的习惯。而CJK则使用英文的习惯,即词之间保留空格,当然如果空格多于一个,TEX也会忽略多余的空格。无需对空格进行额外处两种方式各有利弊。首先来看CJK模式,它的好处是符合TEX的英文处理习惯,

理,坏处是不符合中文习惯。一个经常发生的问题就是,由于TEX将分行符也视为空格,因此就造成中文字符间产生多余的空格,使得排版结果很难看。解决方法是在行尾加上注释字符%来告诉TEX忽略两行间的分行符。因此,我们不建议使用CJK模式。CJK*模式由于自动忽略中文字符之间的所有空格,因此没有上面的这种副作用。但是这也带来了另一方面的问题,就是如果想在中文字符中间加入空格就必须加以保护,避免被忽略。加保护的方法是在空格前面加上\\字符。实际上CJK*模式忽略中文字符后面的空格,因此中文后面如果接着英文,必须加上保护的空格\\或者~符号,否则可能造成断行错误(参见问题30)。

两种模式还可以通过命令互相转换,使用

\\CJKnospace

则进入CJK*模式,用

\\CJKspace

则进入CJK模式。30

中英文混排时为何无法正确分行?

首先,英文标点符号后要留空格,这是英文的习惯,否则TEX无法断句。其次,要用空格隔开中英文字符,TEX才能正确分行。

但是如果是用正常的空格,由于空格间隙太大,容易造成比较难看的排版效果。因此,CJK宏包重新定义了符号~的意义。~的原始定义是不可断行的空格,CJK将其重定义成一个比较合适的弹性距离,大约相当于四分之一个汉字宽度,用于分隔中英文字符。我们通过使用命令

\\CJKtilde

来实现~的重定义。如果要恢复原始定义,可以用命令

\\standardtilde

注意:在CJK*模式下中文字符后面的空格会被忽略,因此中文字符后面必须加上保护的空格\\或者~符号来隔开英文字符。31

什么是点阵字库和矢量字库?

我们都知道,各种字符在电脑屏幕上都是以一些点来表示的,因此也叫点阵。最早的字库就是直接把这些点存储起来,就是点阵字库。常见的汉字点阵字库有16x16,24x24等。点阵字库也有很多种,主要区别在于其中存储编码的方式不同。点阵字库的最大缺点就是它是固定分辨率的,也就是每种字库都有固定的大小尺寸,在原始尺寸下使用,效果很好,但如果将其放大或缩小使用,效果就很糟糕了,就会出现我们通常说的锯齿现象。因为需要的字体大小组合有无数种,我们也不可能为每种大小都定义一个点阵字库。于是就出现了矢量字库。

矢量字库是把每个字符的笔划分解成各种直线和曲线,然后记下这些直线和曲线的参数,在显示的时候,再根据具体的尺寸大小,画出这些线条,就还原了原来的字符。它的好处就是可以随意放大缩小而不失真。而且所需存储量和字符大小无关。矢量字库有很多种,区别在于他们采用的不同数学模型来描述组成字符的线条。常见的矢量字库有Type1字库和TrueType字库。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

F文档排版14

32在CJK中都可以使用哪些矢量字库?

在CJK中可以使用Type1字库和TrueType字库,都能产生很好效果的输出,但有许多细微的差别,输出结果取决于所用的工具。下面根据转换工具和输出文件类型来比较它们的差异。1.使用dvips生成PostScript文件

•dvips可以直接使用Type1字库,生成的PostScript文件中包含了字符的矢量描述,具有很好的缩放效果。

•dvips不能直接使用TrueType字库,因此必须通过ttf2pk生成中间的pk字库,这是一种点阵字库,所以生成的PostScript文件在效果较差。2.使用dvipdfm生成PDF文件和dvips类似,可以直接使用Type1字库或者通过ttf2pk间接使用TrueType字库。

A3.使用pdfLTEX生成PDF文件可以直接使用两种字库,因此都可以产生效果很好的输出。

4.使用dvipdfmx生成PDF文件可以直接使用两种字库,因此都可以产生效果很好的输出。而且直接使

用TrueType字库时生成的PDF文件是唯一能支持对中文内容进行正常拷贝粘贴的。33

两种类型矢量字库会不会发生冲突?

不会,每个工具都有自己的config和map文件按一定的顺序查询有哪些字库可以使用,来决定使用哪种字库。34

如何生成支持中文拷贝粘贴的PDF文件?

生成可以拷贝粘贴中文的PDF文件目前只有dvipdfmx(原名dvipdfm-cjk)可以做到,它必须配置成直接使用中文TrueType字库。

F

35

文档排版

如何使首段段首也缩进?使用indentfirst宏包:

\ckage{indentfirst}

36如何设置双倍或者更大的行间距?使用命令

\\renewcommand{\\baselinestretch}{󰀇倍数󰀈}

37如何注释掉一大段内容,不做编译?用命令

\\iffalse

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

F文档排版15

\\fi

把需要注释的内容包含起来,这样LATEX编译的时候就会忽略这些内容,不做编译。

也可以使用verbatim宏包提供的comment环境:

...

\ckage{verbatim}...

\\begin{comment}Thisiscomment.\\end{comment}...

38如何生成分栏的文档?

如果全文都是双列分栏格式,可以在\\documentclass命令中加入参数twocolumn。例如:

\\documentclass[twocolumn]{article}

如果要生成单双列混合的分栏格式,或者超过两列的分栏格式,则要用到multicol宏包的multicols环境。

\ckage{multicol}

然后将需要多列的地方使用:

\\begin{multicols}{󰀇列数󰀈}

\\end{multicols}

包含起来。39

如何使得双栏文档保持底部对齐?

在LATEX标准文档类中使用twocolumn选项产生双栏格式文档的时候,如果一页的内容不足以排满页面时,LATEX的结果是先排满左栏,然后再排版右栏。这样就造成了两栏的长度不相等,底部不齐。很多时候

我们不希望这种排版结果。

这个问题只有在用标准文档类的twocolumn模式的时候才会遇到,使用multicol宏包就可以避免这个问题(参见问题38)。但是multicol宏包也有一些缺点,例如不允许单栏的浮动对象(参见问题58)。要使标准文档类的twocolumn模式下也能做到双栏底部对齐,可以通过手工调整分栏的位置。在

twocolumn模式下\\newpage命令使LATEX开始在新的一栏上排版,如果单前栏是左栏,就换到右栏上开始

排版。在合适的地方使用\\newpage命令可以使得双栏底部对齐(注意,不能用\\clearpage命令,这个命令会开始在新的一页上排版,而不管当前在哪一栏上)。几乎没有人愿意使用这种方法,不仅因为它需要你手工计算需要插入命令的位置,每次改动文档都有可能需要变动\\newpage命令的位置,而且对于一些自动生成的文档内容(例如参考文献和索引),要插入\\newpage命令十分困难。

flushend宏包通过修改LATEX核心定义来解决这个问题。使用它提供的\\flushend命令可以使得双栏底

部对齐,而\\raggedend命令则取消底部对齐。\\flushend命令会在宏包装入的时候自动运行。

flushend宏包只对文档最后一页有效,也就是说所有中间的强制换页,或者章节的自动换页导致的双栏底部不齐现象都无法解决。

CTEXFAQ(常见问题集)v0.4betaCopyright󰀁

c2003–2004CTEX.ORGRevised

v0.4

Revised

v0.4

F文档排版16

balance是另一个针对该问题的宏包,它比flushend宏包更加完善,而且对整个文档的任何位置都有效。balance宏包提供了\\balance命令来打开双栏底部对齐机制,\\nobalance命令来关闭这个机制。和flushend宏包不同,它在装入的时候缺省不打开对齐机制,因此需要在文档中加入\\balance命令来启用底部对齐。

在使用这些宏包的时候需要注意,单栏的浮动对象有可能破坏这些宏包的对齐机制。这种时候需要手工调整浮动对象的位置来改善排版效果。这也是multicol宏包不支持单栏浮动对象的原因之一。40

如何在双栏文档中使用通栏的摘要?

在排版双栏文章的时候最经常遇到的一个问题就是如何产生通栏(不分栏)的摘要。解决这个问题的方法是:

\\documentclass[twocolumn]{article}...

\\begin{document}...

\itle{...}\\author{...}\wocolumn[

\\begin{@twocolumnfalse}\\maketitle

\\begin{abstract}...

\\end{abstract}

\\end{@twocolumnfalse}]...

\\end{document}

注意,\\maketitle命令必须放在示例中的位置,否则标题结束后会另起一页。但是标题和作者的定义可以放在前面的位置。

上面这个方法会带来一个副作用,那就是\hanks命令在\itle和\\author中失去了作用,无法产生脚注。这个问题可以通过附加一小段代码来解决:

...

\itle{...}

\\author{...\hanks{}}%这里用一个空的\hanks\wocolumn[

...]{

\\renewcommand{\hefootnote}{\\fnsymbol{footnote}}%如果使用数字做脚注标号,则不需要这一行\\footnotetext[1]{真正的脚注内容}}...

abstract宏包提供了一个\\saythanks命令和onecolabstract环境来简化这个稍嫌复杂的过程。它们的用法是:

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

G数学公式17

...

\itle{...}

\\author{...\hanks{...}}\wocolumn[\\maketitle

\\begin{onecolabstract}...

\\end{onecolabstract}]

\\saythanks...

41如何产生全部横排的文档?使用文档类的landscape参数,例如

\\documentclass[landscape]{article}

为了产生正确的结果,dvips必须加上-tlandscpae参数,dvipdfm/dvipdfmx必须加上-l参数。42

如何使文档中的某一页横排?

使用lscape宏包提供的landscape环境,例如

...

\ckage{lscape}...

\\begin{landscape}

Thisisalandscapepage.\\end{landscape}...

将产生一个横排的页面,但是只有在PostScript或者PDF文件中才能看到正确的效果。43

如何使用NewTimeRoman字体?

用times宏包就可以把文本的缺省字体换成TimesNewRoman字体。如果你安装有MathTime字库,那么还可以使用mathtime宏包来把数学环境中的字体都变成TimesNewRoman字体。例如

\ckage{times}

\ckage[mtbold,mtpluscal,mtplusscr]{mathtime}

G

数学公式

G.1

编号

44

如何实现定理、定义、推论等的统一编号?

现在很多文章的定理、定义、推论、例子都采用统一编号,不再是独立编号。如定义1.1,接下来可能是定理1.2,然后推论1.3,等等。这可以用如下的定义来完成:

\\newtheorem{thm}{Theorem}[section]%如果不采用章节号做前缀,则不用[section]\\newtheorem{defn}[thm]{Definition}%这句定义使得defn环境和thm共享编号\\newtheorem{lem}[thm]{Lemma}%这句定义使得lem环境和thm共享编号

CTEXFAQ(常见问题集)v0.4betaCopyright󰀁

c2003–2004CTEX.ORGRevised

v0.4

G数学公式18

45如何让公式编号中使用当前章节编号做前缀?

A如果你想让LTEX产生的公式编号中包含当前的章节编号,例如第一节的公式编号是(1.1)(1.2),第二

节的公式编号是(2.1)(2.2)等等,你可以重新定义\heequation:

\\renewcommand{\heequation}{\hesection.\\arabic{equation}}

这么做有一个小问题,每当新的章节开始的时候,公式编号不会重新从1开始。你不得不使用\\setcounter在新的章节开始的时候把公式编号的计数器清零。

amsmath宏包提供了一个\\numberwithin命令来自动完成这些工作。

\\numberwithin{equation}{section}

使得公式编号和章节编号联系在一起,而且章节编号改变时公式编号自动清零。\\numberwithin命令不光可以用于修改公式编号的格式,也可以用于将任意的两个计数器联系在一起。46

如何实现如(1a)(1b)这种公式编号?

使用amsmath宏包中的subequations环境。例如:

\\begin{subequations}\\begin{equation}A=B

\\end{equation}\\begin{equation}C=D

\\end{equation}

\\end{subequations}

A=BC=D

(1a)(1b)

所有在同一个subequations环境中的公式共享一个主编号(例子中的1)。

如果想用数字代替字母作为公式的子编号,或者修改编号的格式,可以在subequations环境内部重新定义命令\heequation,例如

\\begin{subequations}

\\renewcommand{\heequation}

{\heparentequation-\\arabic{equation}}\\begin{equation}A=B

\\end{equation}\\begin{equation}C=D

\\end{equation}

\\end{subequations}

A=BC=D

(2-1)(2-2)

公式的主编号使用计数器parentequation,子编号使用计数器equation。如果这种公式很多,在每一个subequations中都加上这么一句命令不是一个好的方法。你可以重新定义一个新的环境:

\\newenvironment{mysubequations}

{\\begin{subequations}\\renewcommand{\heequation}{\heparentequation-\\arabic{equation}}}{\\end{subequations}}

然后使用自定义的环境代替subequations就可以了。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

G数学公式19

47如何让一个公式编号表示为另一个公式编号的变化形式?

我们经常使用一个公式编号加上某些符号如󰀁来表示公式的一个变化。这样的公式编号可以通过

Aamsmath宏包的\ag命令加上LTEX的引用机制来实现。例如

\\begin{equation}\\label{eq:original}

A=B

\\end{equation}...

\\begin{equation}

\ag{\\ref{eq:original}$’$}\\label{eq:origprime}A=B+1

\\end{equation}

...~公式~\\ref{eq:origprime}~是由公式~\\ref{eq:original}~变化而来~...

A=B

...

A=B+1

...公式3󰀁是由公式3变化而来...

(3)(3󰀁)

类似的,你也可以实现其他形式的编号变化。

G.2

48

字体

实数域R或复数域C等的字体该用什么命令?

使用amsfonts宏包提供的

\\mathbb{󰀇字母󰀈}

命令,例如:

$x\\in\\mathbb{R}$and$c\\in\\mathbb{C}$

x∈Randc∈C

49书中向量常用斜体加黑体表示,该用什么字体命令排版?使用bm宏包提供的

\\bm

命令,例如:

${\\bmx}^T{\\bmy}$

xTy

G.3

50

其它

如何使上下限出现在求和、积分符号的上下方而不是右边?

数学公式中求和、积分符号的上下限的位置取决于是行间公式还是独立公式。在行间公式中,类似的上下限出现在符号的右边,而在独立公式中出现在符号的上下方。这一规则可以通过命令

\\limits

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

G数学公式20

\\nolimits

来改变。行间公式缺省使用\\nolimits而独立公式缺省使用\\limits。如果要改变缺省规则,就在符号后面,上下限之前加入上面的两个命令之一。例如缺省情况是

nXi=1

$$\\sum_{i=1}^{n}i^2=0$$

If$\\sum_{i=1}^{n}i^2=0$then...

IfPn

i=1

i2=0

i2=0then...

我们可以修改为

Xn

i=1

nPi=1

$$\\sum\\nolimits_{i=1}^{n}i^2=0$$

If$\\sum\\limits_{i=1}^{n}i^2=0$then...

If

i2=0

i2=0then...

51如何实现上下方能输入公式文字且可伸长的等号或者箭头符号?宏包amsmath提供了两个可以伸长的单箭头符号

\\xleftarrow[󰀇下方公式󰀈]{󰀇上方公式󰀈}

\\xrightarrow[󰀇下方公式󰀈]{󰀇上方公式󰀈}

示例如下:

$A\\xleftarrow{n=0}B\\xrightarrow[T]{n>0}C$

−−−B−−−→CA←

T

n=0

n>0

󰀁

至于其他样式的符号,我们可以利用amsmath提供的一些内部命令定义几个通用的ExtendSymbol命

令来实现:

...

\ckage{amsmath}...

\\makeatletter

\\def\\ExtendSymbol#1#2#3#4#5{\\ext@arrow0099{\\arrowfill@#1#2#3}{#4}{#5}}

\\def\\RightExtendSymbol#1#2#3#4#5{\\ext@arrow0359{\\arrowfill@#1#2#3}{#4}{#5}}\\def\\LeftExtendSymbol#1#2#3#4#5{\\ext@arrow6095{\\arrowfill@#1#2#3}{#4}{#5}}\\makeatother

三个命令的差别只在于符号上下的字符位置处理上。简单解释一下五个参数的意义:前面三个参数用来组合生成最后的符号,第一个参数代表左端的符号,第二个参数的代表中间重复的符号,第三个参数代表右端的符号。最后两个参数分别是符号下的字符串和符号上的字符串。现在我们就可以利用ExtendSymbol来定义我们想要的符号了。例如,定义一个长的双箭头

\\newcommand\\myRightarrow[2][]{\\RightExtendSymbol{|}{=}{\\Rightarrow}{#1}{#2}}CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

H图形表格21

又如定义一个长的双向箭头

\\newcommand\\myArrow[2][]{\\ExtendSymbol{\\Leftarrow}{=}{\\Rightarrow}{#1}{#2}}

使用的时候可以用宽度为0的rule支撑指定符号的最小长度也可以根据符号上下的字符长度来确定符号长度

A|=======A====B

$$A\\myRightarrow[\\rule{3cm}{0cm}]{A=B}B$$======⇒B

$$A\\myArrow[A=B^2]{B=A^2}B$$$$A\\myArrow{B^2=A^2}B$$

A⇐

B====A⇒2

A=B2BA⇐B==2==A=⇒2

B

大家可以举一反三。

H

图形表格

H.1

图形

52

LATEX如何使用图形?

由于DVI文件经常被转为PostScript文件,所以LATEX支持最好的是EPS格式(EncapsulatedPost-Script,是PostScript语言的子集)的图形。目前的LATEX2ε包含两个功能相同的图形宏包:graphics和

graphicx宏包。两者的差异是graphics宏包使用标准的LATEX参数语法规则,而graphicx版本则使用更为简

便灵活的命名机制。

一个使用图形的简单例子是:

\\documentclass{article}\ckage{graphicx}\\begin{document}

\\includegraphics{file.eps}\\end{document}

因为\\includegraphics不会结束当前段落,所以它能够在文本行中放置图形。如果需要放置独立的图形,则需要用到figure浮动环境。例如:

\\documentclass{article}\ckage{graphicx}\\begin{document}\\begin{figure}

\\includegraphics{file.eps}

\\caption{Thisiscaptionoffigure}\\end{figure}\\end{document}

在figure环境中可以使用\\caption命令来制定图形的标题,这个标题将会出现在图形的上方或者下方,还会通过使用\\listoffigures命令出现在一个图形目录中。

我们建议LATEX用户详细阅读《LATEX图形指南》[3]一书,可以使得你对在LATEX中使用图形有一个全

面的了解,避免走弯路。

CTEXFAQ(常见问题集)v0.4betaCopyright󰀁

c2003–2004CTEX.ORGRevisedv0.4

H图形表格22

53

ALTEX支持哪些图形格式?

A目前LTEX只有EPS格式的图形在所有的TeX系统中都能得到全面的支持。而其他的图形,如JPEG可以在某些系统中使用,这取决于所用的DVI转换程序。因为一般最终要得到的都是PostScript或者PDF格式的文件,因此先将图形转换为EPS格式仍然是最有效、最方便的图形处理方法。

󰀁󰀁

虽然如此,我们在这里还是给出一个直接使用JPEG图形和PNG图形的方法。假设我们有

ctex-j.jpg和ctex-p.png图形,以及两个格式为

%%BoundingBox:00widthheight

的ctex-j.bb和ctex-p.bb文件,其中的width为对应图形的宽度,height为高度。这个文件也可以用ebb程序生成。ebb是dvipdfm带的一个工具,专门用来生成图形文件的BoundingBox。MiKTEX和fpTEX中都已带有这个程序。然后编译下面的例子:

\\documentclass{article}\ckage{graphicx}

\\DeclareGraphicsRule{.jpg}{eps}{.bb}{}\\DeclareGraphicsRule{.png}{eps}{.bb}{}\\begin{document}

\\includegraphics{ctex-j.jpg}\\includegraphics{ctex-p.png}\\end{document}

在\\includegraphics命令中可以使用各种参数,和EPS图形一样。编译后使用dvipdfm将DVI转换为PDF文件可以看到图形已被正确插入。用最新的MiKTEX中的dvips转换为PostScript文件或者用DVI预览工具yap0.99e也可以看到图形,不过图形的大小和颜色都不正确。而fpTEX的DVI预览工具windvi就完全看不见图形。54

DVI里不能显示EPS图片?

这是正常现象,因为EPS图形并没有真正被加到DVI文件中,它是在从DVI到PostScript转换时才被加到生成的PostScript文件中的。因此,所有用到的EPS文件必须和DVI文件在一起。大多数旧版本的DVI浏览器不支持显示EPS图形。这时,DVI浏览器一般会将EPS图形的BoundingBox用一方框显示出来,以方便使用者对图形进行定位。目前版本的一些TEX软件如MiKTEX、fpTEX和teTEX等所带的DVI浏览器(Yap,Windvi,Xdvi)可以借助于Ghostscript来显示EPS图形。即使是这样,它们对EPS的支持仍然是有限的,不支持psfrag之类的PostScript特殊处理效果,而且经常会出现不正常的显示。此时并不是你的DVI文件或者DVI浏览器损坏了,而是要将DVI文件转换成PostScript文件或者PDF文件进行察看和打印,才能得到最终的真正效果。

H.2

55

表格

表格中使用p参数的列如何改变对齐方式?

表格的列参数中的p参数可以指定列的宽度,但是由于无法和其他控制对齐方式的参数同时作用在一个列上,因此需要使用额外的方法来控制这些列的对齐方式。常用的控制对齐方式命令有:\\centering(居中)、\\flushleft(左对齐)和\\flushright(右对齐)等。真正的麻烦并不在这里,而在于换行命令。当p参数被用在最后一列时,如果在这一列中使用上面的这些对齐命令,例如

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

H图形表格23

...&\\centering...\\\\

就会遇到

...misplaced\\noalign...

或者类似的编译错误。问题的原因是换行命令\\\\在不同的环境下有着不同的定义。在tabular环境中,这个命令被重新定义以适合于控制表格的显示,而\\centering、\\flushleft和\\flushright命令把它修改成了另一个不兼容的定义。因为表格的每一个格子都是通过一个盒子(box)来实现的,格子内的定义在分隔符&或者\\\\之后都不再有效,因此上面的这个问题只会出现在每一行的最后一列上。

ALTEX2.09的解决方法是保存并在稍后恢复\\\\的定义:

\\def\\PBS#1{\\let\emp=\\\\%

#1%

\\let\\\\=\emp}

用法是

...&\\PBS\\centering...\\\\

这种技巧在使用array宏包提供的格式化列参数方法中也可以使用

\\begin{tabular}{...>{\\PBS\\centering}p{50mm}}...

\\end{tabular}

A而LTEX2ε则通过公开\\\\在表格中的内部定义来解决这个问题。这个定义被保存在命令

\abularnewline

中。于是你可以使用

...&\\centering...\abularnewline

56列。

如何生成固定宽度的表格?

A在LTEX中生成固定宽度的表格有两种方法,一种是通过扩展列之间的空隙,另一种是扩展某些指定的

第一种方法通过tabular*环境来实现。在tabular*环境的第一个参数中指定表格的总宽度,然后在表

格的列格式参数中使用\\extracolsep命令来增加列之间的空隙。

\\begin{tabular*}{5cm}{@{\\extracolsep{\\fill}}lllr}\\hline

1&2&3&4\\\\

21&22&23&24\\\\\\hline

\\end{tabular*}

121222323424

这种方法的一个缺点是列之间如果加入分隔符,则列之间的空隙是放在下一列的左边而不是在两列之间平均分配。我们来看上面的例子加入分隔符后的样子

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

H图形表格24

\\begin{tabular*}{5cm}

{@{\\extracolsep{\\fill}}|l|l|l|r|}\\hline

1&2&3&4\\\\

21&22&23&24\\\\\\hline

\\end{tabular*}

121222323424

另一种方法可以通过使用tabular环境的列格式参数之一p󰀅宽度󰀆来指定相应列的固定宽度。这种方法需要用户手工计算分配每个列的具体宽度。另外,由于p参数不能和其他控制对齐方式的参数同时作用在一个列上,因此需要使用额外的方法来控制这些列的对齐方式(参见问题55)。tabularx宏包提供了一个自动计算分配列宽度的表格环境tabularx。这个环境的使用方法和tabular*相同。不同之处在于它增加了一个X参数。所有使用X参数的列会平均分配多余的空间,然后转换为p参数来指定列的宽度。该宏包也提供了方法让你可以指定如何转换或者转换为其他的列参数。该宏包需要array宏包的支持。

ltxtable宏包则结合了longtable和tabularx宏包的特点。但是它的用法有点复杂,请仔细阅读它的文档。

H.3

57

浮动对象

浮动对象和上下文之间的距离太大了,怎么办?

经常有用户抱怨浮动对象figure或者table和上下文之间的距离太大了,以至他们不得不手工调整这个距离。但是大多数人没有意识到是他们自己使用的代码引入了这些额外的空间。

A问题出在center环境(以及类似的flushleft和flushright环境)上面,这些环境都是基于LTEX的

list定义的。list类型的环境都会在它们自己和上下文之间加入间隔,这个间隔的大小通过许多参数来决定。因此,如果我们是用下面的代码:

\\begin{figure}

\\begin{center}

\\includegraphics{...}\\caption{...}\\end{center}\\end{figure}

或者更糟糕的

\\begin{figure}\\begin{center}

\\includegraphics{...}\\end{center}\\caption{...}\\end{figure}

那么就会多出一些无法预料的空白。

解决的方法是使用一些基本命令,而不是使用它们经过list类型环境包装后的格式。例如

\\begin{figure}\\centering

\\includegraphics{...}\\caption{...}\\end{figure}

AA这个方法适合于所有的LTEX宏包,除了一些过时的LTEX2ε之前的宏包,如psfig和epsf。

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

I参考文献25

58分栏文档中如何使用单栏或者通栏浮动对象?

A如果你使用的是LTEX标准文档类的twocolumn模式,那么使用figure和table环境可以产生单列的

浮动图形或者表格,而使用figure*和table*环境则可以产生通栏的浮动图形或者表格。

如果你使用的是multicol宏包提供的multicols环境,那么就有一点小问题了。figure和table在这种方式下无法正常工作,会导致图形或者表格丢失。但是,figure*和table*仍然可以正常工作,产生通栏的浮动图形或者表格,就像在标准文档类的twocolumn模式下一样。

要在multicols环境中使用单栏的图形或者表格,可以使用float宏包提供的[H]位置选项。例如

\\begin{figure}[H]...

\\caption{...}\\end{figure}

但是要注意的是,这种方式产生的对象是不能“浮动”的,也就是说位置是固定的。因此,有时候你必须仔细调整它的位置,以免造成分栏的底部参差不齐。59

分栏文档中为何不能设定通栏浮动对象的位置?

如果你在在分栏的文档中设定一些通栏的浮动对象(参见问题58)的位置选项,你会发现[htbp]四个选项中的h和b选项是不起作用的。也就是说,通栏的浮动对象只能在页面的顶部(t选项)或者单独的页面上(p选项)。以上是对标准文档类的twocolumn模式而言。如果使用multicol宏包的multicols环境,b选项是有效的,但h选项也是不起作用。对于在标准文档类的twocolumn模式中需要把通栏浮动对象放置在页面底部,也就是让b选项有效,可以使用宏包stfloats。

而要让h选项有效,目前还没有好的办法。midfloat宏包提供的strip环境可以作为一种近似的解决方案,但效果并不是很好。

I

60

参考文献

如何将文献引用作为上标出现?

将文献引用作为上标出现可以使用overcite宏包

\ckage{overcite}

或者使用natbib宏包的super参数

\ckage[super]{natbib}

但是,这两种方法产生的上标引用都没有括号。要增加括号,可以修改这两个宏包中的相应定义。更简单的一个方法是使用如下命令

\\makeatletter

\\def\\@cite#1#2{\extsuperscript{[{#1\\if@tempswa,#2\\fi}]}}\\makeatother

而不需使用任何宏包。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

I参考文献26

61如何排序并压缩连续的引用,产生如[2,4–8]形式的引用?

AA如果你在LTEX中使用\\cite{a,b,c,d,e,f}则LTEX不会对条目进行排序,因此,可能会产生象[6,2,5,8,4,7]这样很难看的排版效果。大多数人都希望对引用的条目进行排序,并且对连续的条目使用压缩的表示方式,即用[2,4–8]表示上面的例子。使用cite宏包可以解决这个问题。另一种方法是使用宏包natbib并指定选项numbers和sort&compress,可以得到一样的效果。如果使用BibTEX则必须使用natbib所带的数字式参考文献风格(plainnat.bst和unsrtnat.bst)。

在使用hyperref宏包来生成超链接的时候会有点问题。cite宏包会完全失效,产生没有排序和压缩的引用。而natbib则可以得到排序但没有压缩的引用效果。如果你想得到排序而且压缩的效果,可以在加入natbib宏包后再使用宏包hypernat。62

如何定制自己的参考文献样式?

用户可以自己编写参考文献的样式文件(.bst文件)。但并不是所有的用户都能迅速掌握用于编写参考文献样式文件的语言。在这种情况下,修改现有的样式文件比较适合对该语言不熟悉的普通用户。如果你需要的样式和现有样式的差别不是太大的话,你可以考虑使用custom-bib工具。这个工具包含一个makebst.tex文件。在命令行上输入命令

latexmakebst

在回答一系列问题之后,一个按照你的要求定制的参考文件样式文件就诞生了。63

如何才能把参考文献条目放在正文中?

一些学术期刊和出版社要求把参考文献条目放在正文中,而另一些可能要求放在脚注里。可以帮助你把参考文献条目放入正文中的宏包有

•宏包bibentry,该宏包对你使用的.bst文件产生的参考文献条目格式有一些限制,但除此之外没有要求使用特定的样式文件。•宏包inlinebib,该宏包要求必须使用它自带的inlinebib.bst样式文件。•宏包jurabib,该宏包也要求使用它自带的四个样式文件之一。而用于把参考文献条目放入脚注中的宏包有•宏包footbib•宏包jurabib64

能否生成反向引用(从参考文献指向引用的正文)?

可以。有两个宏包可以使用,一个是citeref,另一个是backref宏包。citeref的代码似乎相对简单些(因此可能更稳定些),但是不能配合hyperref生成超链接。而backref是hyperref宏包附属的。backref有四个选项可以选择,缺省是pageref:•ref选项得到引用所在的节编号•pageref选项得到引用所在的页码•hyperref选项是超链接形式的ref

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

I参考文献27

•hyperpageref选项是超链接形式的pageref

配合hyperref宏包使用时可以通过指定hyperref的backref或者pagebackref选项来自动装入backref宏包。两个宏包都只能产生没有压缩的引用(如[5,6,7]不会被输出成[5–6]),同时对于对该参考文献多次引用的页面,也不会重复出现。65

如何让每章或者每节都有单独的参考文献?

使用chapterbib宏包可以让你在一个文档里产生多个参考文献。不过并不像它的名字所表示的那样,这些参考文献并不是和章或者节联系在一起,而是和\\include命令包含的子文件联系在一起。也就是说,每一个通过\\include命令包含的子文件可以拥有一个单独的参考文献,

bibunits宏包则允许用户使用\\bibliographyunit命令选择让每章还是每节拥有一个单独的参考文献。也可以通过它提供的bibunit环境和\\putbib命令使得任意的一段文档内容拥有一个单独的参考文献。bibunits必须配合BibTEX使用。详细的用法请参考宏包使用说明。66

如何产生多个参考文献列表?

如果你想让文档的某些部分(如章、节)拥有单独的参考文献,请参考问题65。这里讨论的是如何将文档的参考文献分割为多个部分,有三种方法可以选择,都必须配合BibTEX使用。multibbl宏包通过对标准命令的扩展来支持多个参考文献并存。用户可以用\\newbibliography来定义

A一个新的参考文献,该命令的参数将会用来生成单独的.aux文件,同时用在其他的相关命令中使得LTEX

知道使用哪个参考文献。而标准的参考文献命令和引用命令都被修改,增加额外的参数来区分不同的参考文献。其中\\bibliography命令还增加了用于修改参考文献的标题的参数。该宏包没有包含在MiKTEX中,用户可以从CTAN下载并安装。

而宏包multibib则通过\\newcites命令让用户定义新的参考文献分类以及分类的标题,而每定义一个新的分类都会产生这个分类专用的参考文献命令。例如,当用户定义了一个新的分类sec,就会产生四个相应的命令:\\bibliographysec、\\bibliographystylesec、\\citesec和\\nocitesec。使用这些命令,你就可以把来自一个或者多个参考文献库(.bib文件)的引用放入任意一个参考文献分类中。

与上面的两个宏包不同,bibtopic宏包采用另外一种解决方案。用户把参考文献按照自己的分类放入不同的参考文献库(.bib文件)中,然后通过宏包提供的btSect环境指定对应的参考文献库来生成参考文献列表。一个例子如下:

\\begin{btSect}{english}%使用english.bib\\section{References(English)}\\btPrintCited\\end{btSect}

\\begin{btSect}{chinese}%使用chinese.bib\\section{参考文献(中文)}\\btPrintCited\\end{btSect}

\\begin{btSect}{chinese}%使用chinese.bib\\section{未引用的参考文献(中文)}\\btPrintNotCited\\end{btSect}

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

J其它专题28

J

J.1

67

其它专题

脚注

如何在表格中使用脚注?

A在标准的LTEX表格环境中使用\\footnote会使得脚注内容被吞掉,而不是出现在页面底部。因此脚注

无法在表格中使用。如果你用的是浮动表格环境table,那么你只有将表格放到一个minipage环境中,这样所有的脚注会出现在表格的下方,例如

Thisistext...

\\begin{minipage}{\extwidth}\\begin{tabular}{|c|c|c|}\\hline

aaa\\footnote{test}&bbb&ccc\\\\\\hline

\\end{tabular}\\end{minipage}

Thisisanothertext...

Thisistext...aaaa

atest

bbbccc

Thisisanothertext...

另外一个办法是使用宏包threeparttable中定义的表格。

如果你没有使用浮动环境而只是用了tabular环境,那么可以使用下面几种方法对表格进行注释。1.使用

\\footnotemark[󰀇编号󰀈]

命令在需要的位置放置脚注的标记,然后在结束tabular环境以后使用命令

\\footnotetext[󰀇编号󰀈]{󰀇文字󰀈}

来加上脚注的内容。这是Lamport的书[6]中给出的方法。但是如果要做大量的脚注,这个方法就显得有点笨拙了。

A2.使用LTEX2ε的标准宏包tabularx或者longtable。这会比用标准的tabular环境麻烦一点,但是可以正常的使用脚注。

3.使用footnote宏包,把tabular环境放入一个savenotes环境中,或者在导言区使用

\\makesavenoteenv{tabular}

这样表格中的脚注就会被正确处理。

4.把表格放在minipage环境中,这种方法使得所有的脚注都出现在表格的下方(见上面的例子),比较难看。5.使用threeparttable宏包提供的表格。但该宏包是设计为浮动的表格使用的,用在非浮动的表格时会显得有些奇怪。6.使用mdwtab宏包提供的表格,也可以正确处理脚注,还有一些独特功能。但会使得某些和表格有关的宏包无法正常工作。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

J其它专题29

68如何在章节标题中使用脚注?

A\\footnote是一个脆弱的(fragile)LTEX命令,这使得当它出现在\\section这类命令的参数中时无法

A正常工作。在\\footnote之前使用\\protect命令来保护它可以使得LTEX正常编译,但是会有副作用:这

些脚注标记会出现在目录上,甚至在页眉上,这会进一步带来意想不到的结果!

你无法控制单独这些标记是否只出现在目录或者只出现在页眉上,但可以通过以下的方法使得脚注不出现在目录和页眉上。

•使用章节标题命令的可选参数,这样只有可选参数中的内容才会出现在目录和页眉中。例如

\\section[󰀇标题󰀈]{󰀇标题󰀈\\footnote{󰀇脚注󰀈}}

•使用footmisc宏包并加上stable参数。这样就可以避免脚注出现在目录和页眉上。69

如何在图表的标题中使用脚注?

在命令\\caption的参数中使用脚注相当麻烦,可以说是问题67和问题68的混合体,此外还有它自己的问题。所以决定在标题中使用脚注前最好认真考虑一下是否真的有必要这么做。你必须用可选参数或

A者其他方法来使得文件能够被LTEX处理而且脚注不会出现在目录中,同时也要把浮动的对象放入一个

minipage环境以使得脚注能够被显示出来。

同时你要小心你的脚注是否被打印了两次。假如你使用下面的语句

\\begin{figure}

\\begin{minipage}{\extwidth}...

\\caption[目录中的标题]{真正的标题\\footnote{脚注}}\\end{minipage}\\end{figure}

A而其中“真正的标题”足够长(具体的说,需要两行甚至更多行来排版)的时候,LTEX的结果中就会出现两

个一样的脚注。这个讨厌的现象可以通过使用不带caption2参数的ccaption宏包来避免。

70如何重复使用相同内容的脚注?

如果具有相同内容的脚注在文档中多次出现在不同地方,简单地重复输入脚注内容不是一个好办法。我们可以通过半自动的方法来避免重复输入,或者对需要重复的脚注加上标签然后在其他地方加以引用。但是没有完全自动的解决方法(自动发现重复的脚注并加以处理)。如果你的整个文档只有一个脚注,而且需要重复使用,那么最简单的方法就是使用\\footnotemark命令的可选参数,例如

...\\footnote{需要重复使用的脚注内容}

...

...\\footnotemark[1]

可以这么做的原因就是因为我们知道只有一个编号为1的脚注。如果脚注不止一个,但是顺序和位置是固定

A的,那么可以使用类似的技巧,只需重复使用LTEX给相应的脚注分配的编号即可。但是大多数时候这么做

会比较麻烦,因为文档内容的改变经常会导致脚注之间的关系改变。这时候,使用标签是一个更好的办法。

一个手工标签的方法是使用计数器来记住脚注的编号:

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

J其它专题30

\\newcounter{fnnumber}...

...\\footnote{需要重复使用的脚注内容}%\\setcounter{fnnumber}{\hefootnote}%...

...\\footnotemark[\hefnnumber]

A经常这么做确实有点繁琐。LTEX的标签引用机制可以帮助我们简化工作

...\\footnote{需要重复使用的脚注内容\\label{fn:repeat}}

...

...\\footnotemark[\\ref{fn:repeat}]

A但是又有另外一个问题,LTEX会在第一次运行时报告\\footnotemark命令的参数为空的错误,这是因

A为\\ref命令无法确定标签的内容而返回了一个空值造成的。这个错误会在第二次运行LTEX命令后消

失。footmisc宏包和memoir文档类中定义了一个\\footref命令来解决这个问题。这个命令还有一个额外的好处就是即使脚注使用了非数字的标记,它也能正确工作。使用\\footref命令后我们的例子变成了

...\\footnote{需要重复使用的脚注内容\\label{fn:repeat}}

...

...\\footref{fn:repeat}

这可能是最简洁的解决方法了。需要注意的是在以上的例子里\\label命令必须放在\\footnote的参数中。fixfoot宏包提供了另外一种解决机制:使用\\DeclareFixedFootnote命令预先定义好你需要重复使用的脚注,一般都放在导言区中,然后每次只需简单地使用定义好的命令就可以了。

\\DeclareFixedFootnote{\\rep}{需要重复使用的脚注内容}

...

...\\rep{}...\\rep{}

A这个宏包会保证每个重复的脚注在每一页最多出现一次。但是通常你需要运行多次LTEX来除去多余的脚

注。

J.2

71

目录

怎样象第几章一样,将参考文献也加到目录?在参考文献部分之前加入

\\clearpage%双面打印(openright)用\\cleardoublepage\\addcontentsline{toc}{chapter}{参考文献}

语句即可。类似的,你也可以手工加入其它目录项。72

手工加入的目录项页码错误,生成的书签链接也不对,怎么回事?

这是因为\\addcontentsline命令后面的命令换页造成的页码不一致。需要在\\addcontentsline命令之前加上

\\clearpage

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

J其它专题31

如果是book类或者用了openright参数的report类文档,新的章总是从奇数页开始,则要把命令改成

\\cleardoublepage

如果使用了hyperref宏包来生成PDF文件的书签链接,则还需要在上面的命令后再加上

\\phantomsection

J.3

73

特殊符号

如何输出ˆ和˜符号?

Aˆ和˜符号都是LTEX的特殊符号,可以在verbatim环境得到符号本身,例如

\\verb|^|and\\verb|~|isspecialcharacters.^and~isspecialcharacters.

还可以使用命令

\extasciicircum

得到ˆ符号,用

\extasciitilde

得到˜符号。74

如何显示可见的空格符号可以使用

\extvisiblespace

命令,例如

Hello\extvisiblespaceworld\extvisiblespace!

Helloworld!75如何显示带圈的符号?可以使用

\extcircled{󰀇letter󰀈}

为了产生比较美观的符号,可能要对其中的字体大小做一定的调整。

\extcircled{\\scriptsize\extcircled{\\scriptsize\extcircled{3}\extcircled{4}

\extcircled{\\scriptsize\extcircled{\\scriptsize\extcircled{c}\extcircled{d}

1}2}

a}b}

1󰀁2󰀁3󰀁4󰀁a󰀁b󰀁c󰀁d󰀁

c就是这么产生的,实际上版权符号󰀇只是为了方便用户专门预定义了命令\\copyright。你也可以为自己常

用的一些符号定义一个简短的命令。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

L辅助工具32

K

76

高级技术

\\makeatletter和\\makeatother是干什么用的?

A一些LTEX内部命令含有@字符,如\\@addtoreset,如果需要在文档中使用这些内部命令,就需要借

助于另两个命令\\makeatletter和\\makeatother。

下面的例子可以实现公式编号与节号的关联:

\\documentclass{article}...

\\makeatletter%@isnowanormal\"letter\"forTeX

\\renewcommand\heequation{\hesection.\\arabic{equation}}\\@addtoreset{equation}{section}

\\makeatother%@isrestoredasa\"non-letter\"characterforTeX\\begin{document}...

77

A如何查询LTEX命令和参数的缺省定义?

A首先你可以直接搜索相应的LTEX宏包以及同一目录下的其他文件。如果你有宏包的源文件(.dtx)的

A话,搜索源文件会更方便些。而且源文件中会有详细的说明。对于这些源文件,可以直接用LTEX编译,产生

A说明文档。LTEX宏包的源文件一般放在

texmf\\source\\latex\\

A目录下。例如LTEX标准文档类的源文件就是

texmf\\source\\latex\\base\\classes.dtx

A如果这些文件里都找不到定义,则有可能在LTEX内核中定义。你可以搜索

texmf\\source\\latex\\base\\

A目录下的其他.dtx文件,所有的LTEX内核定义都在那里了。如果还没有的话,那就可能是TEX的基本命

令或者定义了,查询DonaldE.Knuth的TheTEXbook[7],CTEXFTP上可以下载该书的源文件。

L

78

辅助工具

WinEdt和GSview经常出现过期和注册提示,如何解决?

WinEdt和GSview是共享软件,需要注册才能使用全部功能,如果你不能忍受它的提示,那就只有花钱注册了。79

如何去掉WinEdt的自动断行和自动续行?

点击WinEdt状态栏上的Wrap使其变为灰色可以完全禁止WinEdt的自动断行和自动续行。在行首加入空格或者Tab符可以防止自动续行(将本行并入上一行)。在WinEdt的菜单Options下选择Perferences,在弹出的对话框中的Editor页的右下角可以设置RightMargin来修改WinEdt判断自动断行的字符数。

CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

N帮助文档33

80如何让WinEdt显示行号?

点击WinEdt状态栏上的总行数(左数第四格)可以打开和关闭行号的显示。

81Yap里如何预览带有颜色的EPS图片?

打开Yap的菜单Views下的Options,在弹出的对话框中选择PostScript,然后在Quality的下拉框中选择16millioncolors。

M

错误处理

82

Error:pdflatex(filesimsun.ttf):can’tfindtable‘maxp’

这个错误是因为中文Windows2000及以后的操作系统的宋体字库使用了新的TrueType格式的文件simsun.ttc,而pdflatex不支持该文件格式。解决方法可以选以下四种之一:1.不使用pdflatex而改用其他方法生成PDF文件2.不使用宋体改用其他字体

3.不使用TrueType字库而改用Type1字库(安装CTEX-Fonts)

4.从中文Windows98下拷贝一个simsun.ttf到Windows安装目录下的fonts目录或者CTEX的安装目

录下的locatexmf的相应子目录下

N

帮助文档

83

能否推荐一些比较好的中文资料?

目前TEX和LATEX的中文资料还不是很多,特别是相对大量的英文资料而言。如果你刚开始学习LATEX,

我们推荐你使用《lshort中文版》[1]。这是一份很好的入门学习教材。它的最新版本可以在CTEX网站免费下载。

如果你需要一本详细的LATEX命令手册,我们推荐使用邓建松等人翻译整理的《LATEX2ε科技排版指

南》一书[2]。这本书可以说是目前国内正式出版的LATEX书籍中最值得购买的一本。它的一份电子版初稿也

可以在CTEX网站免费下载。

另外一本值得推荐的书是《LATEX2ε插图指南》[3]。它是由CTEX的王磊在KeithReckdahl编写的Using

ImportgraphicsinLATEX2ε(Ver.2,Dec.1997)一书的基础上翻译整理的。该书目前尚未正式出版,其电子

版可以在CTEX网站免费下载。

84能否推荐一些比较好的英文资料?

如果你刚开始学习LATEX,我们推荐使用lshort(TheNotSoShortIntroductiontoLATEX2ε)[5]。与其

他的书相比,这份小册子相对比较简短,但覆盖了所有常用的LATEX2ε命令,而且附有大量的实例。lshort

一直在不断更新,而且有十几个语言的翻译版本。你可以把英文版和中文版[1]对照着看,

这样会对一些专业名词更加容易理解。

如果你打算详细全面的学习LATEX,最经典的教材莫过于LATEX的作者LeslieLapmport的著作

LATEX:ADocumentPreparationSystem[6]了。另一本更加详细的介绍LATEX及其宏包的书就是TheLATEX

Companion[8],

这本500多页的书中包含了超过150个宏包的描述。这两本书没有在国内出版,但是你可以在一些图书馆中借到。TheLATEXCompanion的第八章是关于数学公式排版的介绍,有一份电子版可以在

CTAN上下载,路径是

CTEXFAQ(常见问题集)v0.4betaCopyright󰀁

c2003–2004CTEX.ORGNewv0.4

Newv0.4

参考文献34

CTAN:/info/companion-rev

或者用ch8.pdf在CTAN上进行搜索(参见问题14)。

AALTEX系统自带了许多文档,除了各个宏包的说明以外,还有一些是关于LTEX系统的说明。这些文档都放在

texmf\\doc\\latex\\base

AAA目录下。其中,LTEX2εforAuthors[9]是介绍如何用LTEX2ε来排版的,LTEX2εforClassandPackage

AATEX2ε来编写宏包,这两份文档侧重点都在于描述LTEX2ε的新特性。如Writers[10]则介绍了如何利用L

AAA果你是LTEX2.09的用户,这两份文档会有很大的帮助。LTEX2εFontSelection[11]则介绍了LTEX2ε的

A字体选择方案,它会帮助你了解LTEX2ε是如何定义、使用字体的。AA如果你对LTEX底层的东西开始感兴趣,或者你开始想自己修改或者编写一些LTEX宏包,那么TEX的

作者DonaldE.Knuth的巨著TheTEXbook实在是必不可少。TheTEXbook同时也是一部漂亮的排版杰作,而且还能让我们接触到一代宗师Knuth卓越不凡的思想与理念。

85

A有没有关于LTEX宏包的详细说明?

ATEX系统安装时候带的LTEX宏包,都可以在TEX的安装目录下的

texmf\\doc\\latex目录下找到帮助文件和例子。

ACTEX的在线文档提供了一份关于常见的LTEX宏包的列表和说明。另外,GrahamWilliams维护的

ATheTeXCatalogue[12]是一份全面的TEX和LTEX宏包分类目录,这份文档可以在CTAN的镜像服务器上

下载(参见问题11和问题14)。

86我的问题没找到答案,或者有答案但是解决不了我的问题,怎么办?

欢迎到CTEX论坛上提出你的问题,也欢迎指出这份文档中不正确或者不准确的地方。提问的时候请提供尽可能详细的信息,例如使用的TEX系统、操作系统、使用的文档类和宏包命令、简单而又可以重复错误现象的例子等等,而不是仅仅说“为什么我的DVI中看不到中文”这样一句话,这种问题没有人能够回答你。

参考文献

[1]CTEX翻译小组。lshort中文版3.20,2003。

A[2]邓建松,彭冉冉,陈长松。LTEX2ε科技排版指南,科学出版社,书号:7-03-009239-2/TP.1516,

2001。A[3]王磊。LTEX2ε插图指南,2000。

[4]张林波。关于新版CCT的说明,2003。

[5]TobiasOetiker,HubertPartl,IreneHynaandElisabethSchlegl.TheNotSoShortIntroductionAtoLTEX2ε4.12,2003.

A[6]LeslieLamport.LTEX:ADocumentPreparationSystem.Addison-Wesley,Reading,Massa-chusetts,secondedition,1994,ISBN0-201-52983-1.

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

参考文献35

[7]DonaldE.Knuth.TheTEXbook,VolumeAofComputersandTypesetting.Addison-Wesley,Reading,

Massachusetts,secondedition,1984,ISBN0-201-13448-9.

A[8]MichelGoossens,FrankMittelbachandAlexanderSamarin.TheLTEXCompanion.Addison-Wesley,

Reading,Massachusetts,1994,ISBN0-201-54199-8.AAA[9]LTEX3ProjectTeam.LTEX2εforAuthors.LTEX2ε随机文档usrguide.tex

AAA[10]LTEX3ProjectTeam.LTEX2εforClassandPackageWriters.LTEX2ε随机文档clsguide.texAAA[11]LTEX3ProjectTeam.LTEX2εFontSelection.LTEX2ε随机文档fntguide.tex

[12]GrahamWilliams.TheTEXCatalogue.

CTAN:/help/Catalogue/catalogue.html

A一份全面的TEX和LTEX宏包分类目录,在线访问

[13]RobinFairbairns.TheUKTEXFAQ.英国TEX用户协会FAQ.

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

索引

\\\\,23

abstract,16

\\addcontentsline,30amsfonts,19

amsmath,6,18–20array,23,24\\author,16

backref,26,27balance,15,16\\balance,16

\\baselinestretch,14bibentry,26

\\bibliographyunit,27bibtopic,27bibunit,27bibunits,27bm,19\\bm,19

btSect,27

\\caption,21,29ccaption,29center,24

\\centering,22,23chapterbib,27cite,26\\cite,26citeref,26CJK,12–14CJK,12,13CJK*,12,13\\CJKglue,12\\CJKindent,12\\CJKnospace,13\\CJKspace,13\\CJKtilde,13

\\cleardoublepage,31\\clearpage,15,30comment,15\\copyright,31

\\DeclareFixedFootnote,30

CTEXFAQ(常见问题集)v0.4beta

\\documentclass,7,11,15\\documentstyle,6,7DVI,22

dvipdfmx,14ebb,22EPS,22,33epsf,24

\\extracolsep,23\\fi,15

figure,24,25figure*,25fixfoot,30float,25

flushend,15,16\\flushend,15

\\flushleft,22,23flushleft,24

\\flushright,22,23flushright,24footbib,26

footmisc,29,30footnote,28

\\footnote,28–30

\\footnotemark,28–30\\footnotetext,28\\footref,30\\hskip,12hypernat,26hyperref,26,27

\\iffalse,14\\include,27

\\includegraphics,21,22indentfirst,14inlinebib,26jurabib,26\\label,30

landscape,17latexsym,7\\limits,19,20

Copyright󰀁

c2003–2004CTEX.ORG索引list,24

\\listoffigures,21longtable,24,28lscape,17ltxtable,24

\\makeatletter,32\\makeatother,32makebst,26

\\makesavenoteenv,28\\maketitle,16\\mathbb,19mathtime,17mdwtab,28memoir,30midfloat,25

minipage,28,29multibbl,27multibib,27

multicol,15,16,25multicols,15,25natbib,25,26

\\newbibliography,27\\newcites,27\\newpage,15\\nobalance,16\\nolimits,20

\\numberwithin,18onecolabstract,16overcite,25

PDF,14

\\phantomsection,31preamble,10\\protect,29psfig,24\\putbib,27

\\raggedend,15\\ref,30

\\renewcommand,12,14savenotes,28\\saythanks,16\\section,29

CTEXFAQ(常见问题集)v0.4beta

37

\\setcounter,18\\standardtilde,13stfloats,25strip,25

subequations,18table,24,25,28table*,25

tabular,23,24,28tabular*,23,24\abularnewline,23tabularx,24,28tabularx,24\ag,19

\extasciicircum,31\extasciitilde,31\extcircled,31

\extvisiblespace,31\hanks,16

\heequation,18threeparttable,28times,17\itle,16

TrueType,13,14Type1,13,14\ckage,7verbatim,15verbatim,31WinEdt,32,33\\xleftarrow,20\\xrightarrow,20Yap,33导言区,10

宏包(Packages)

abstract,16amsfonts,19

amsmath,6,18–20array,23,24backref,26,27balance,15,16bibentry,26

Copyright󰀁

c2003–2004CTEX.ORG索引bibtopic,27bibunits,27bm,19

ccaption,29chapterbib,27cite,26citeref,26CJK,12–14epsf,24fixfoot,30float,25

flushend,15,16footbib,26

footmisc,29,30footnote,28hypernat,26hyperref,26,27indentfirst,14inlinebib,26jurabib,26latexsym,7

longtable,24,28lscape,17ltxtable,24mathtime,17mdwtab,28memoir,30midfloat,25multibbl,27multibib,27

multicol,15,16,25natbib,25,26overcite,25psfig,24stfloats,25tabularx,24,28threeparttable,28times,17verbatim,15环境(Environments)

bibunit,27btSect,27center,24CJK,12,13CJK*,12,13

CTEXFAQ(常见问题集)v0.4beta

38

comment,15figure,24,25figure*,25flushleft,24flushright,24landscape,17list,24

minipage,28,29multicols,15,25onecolabstract,16savenotes,28strip,25

subequations,18table,24,25,28table*,25

tabular,23,24,28tabular*,23,24tabularx,24verbatim,31

命令(Commands)

\\\\,23

\\addcontentsline,30\\author,16\\balance,16

\\baselinestretch,14\\bibliographyunit,27\\bm,19

\\caption,21,29\\centering,22,23\\cite,26\\CJKglue,12\\CJKindent,12\\CJKnospace,13\\CJKspace,13\\CJKtilde,13

\\cleardoublepage,31\\clearpage,15,30\\copyright,31

\\DeclareFixedFootnote,30\\documentclass,7,11,15\\documentstyle,6,7\\extracolsep,23\\fi,15

\\flushend,15

\\flushleft,22,23

Copyright󰀁

c2003–2004CTEX.ORG索引\\flushright,22,23\\footnote,28–30

\\footnotemark,28–30\\footnotetext,28\\footref,30\\hskip,12\\iffalse,14\\include,27

\\includegraphics,21,22\\label,30

\\limits,19,20

\\listoffigures,21\\makeatletter,32\\makeatother,32

\\makesavenoteenv,28\\maketitle,16\\mathbb,19

\\newbibliography,27\\newcites,27\\newpage,15\\nobalance,16\\nolimits,20

\\numberwithin,18\\phantomsection,31\\protect,29\\putbib,27\\raggedend,15\\ref,30

\\renewcommand,12,14\\saythanks,16\\section,29\\setcounter,18\\standardtilde,13\abularnewline,23\ag,19

\extasciicircum,31\extasciitilde,31\extcircled,31

\extvisiblespace,31\hanks,16

\heequation,18\itle,16

\ckage,7\\xleftarrow,20\\xrightarrow,20

CTEXFAQ(常见问题集)v0.4beta39

Copyright󰀁

c2003–2004CTEX.ORGCONTRIBUTORS40

Contributors

吴凌云(aloft@ctex.org)

c2003–2004CTEXandalltheContributorstoCTEXFAQ.Allrightsreserved.Copyright󰀁

c2003–2004。保留所有权利。CTEX以及CTEXFAQ的作者拥有版权󰀁

Permissionisgrantedtocopy,distributeand/ormodifythisdocumentunderthetermsoftheGNUFreeDocumenta-tionLicense,Version1.2oranylaterversionpublishedbytheFreeSoftwareFoundation;withtheInvariantSections

beingContributors,noFront-CoverTexts,andnoBack-CoverTexts.

你可以拷贝、发布或者修改这份文档,但必须遵守自由软件组织颁布的GNU自由文档许可证1.2或者以后版本的条款。InvariantSections包括Contributors,没有Front-CoverTexts和Back-CoverTexts。CTEXFAQ(常见问题集)v0.4beta

c2003–2004CTEX.ORGCopyright󰀁

CHANGELISTOFV0.441

ChangeListofv0.4

New

17188082

CTEX中文套装软件的Basic、Pro、Full版本都有什么区别?.......................CTEX-Fonts、CTEX-CS、CTEX-Ext都是干什么的?和CTEX中文套装有什么关系?..........如何让WinEdt显示行号?..........................................Error:pdflatex(filesimsun.ttf):can’tfindtable‘maxp’

.........................

893333

Revised

32038394352

这个FAQ的目的是什么?...........................................能否举一个简单的英文排版例子?......................................如何生成分栏的文档?.............................................如何使得双栏文档保持底部对齐?......................................如何使用NewTimeRoman字体?......................................

ALTEX如何使用图形?.............................................

5915151721

(Lastupdated:September27,2004)

CTEXFAQ(常见问题集)v0.4betac2003–2004CTEX.ORGCopyright󰀁

因篇幅问题不能全部显示,请点此查看更多更全内容