一份不太简短的

免费空间背景代码  时间:2021-01-26  阅读:()

LATEX2ε介绍或112分钟学会LATEX2ε原版作者:TobiasOetikerHubertPartl,IreneHynaandElisabethSchlegl原版版本:Version4.
20,May31,2006中文翻译:中文TEX学会中文版本:版本4.
20,二零零七年九月iiTobiasOetiker及贡献者拥有版权1995–2005.
保留所有权利.
这份文档是免费的;在FreeSoftwareFoundation颁布的GNU通用出版许可证的条款下,你可以再版或者修改它.
许可证可以是第二版,或者任何后继版本(随你意).
发布这份文档是希望它会有用,但并不提供任何保障;甚至没有用于商业的或者适用某一特定目的的暗含保证.
更多的细节请查看GNU通用出版许可证.
你应该随这份文档收到一份GNU通用出版许可证的拷贝;如果没有,写信到FreeSoftwareFoundation,地址:675MassAve,Cambridge,MA02139,USA.
致谢!
在这份介绍中使用的许多材料来自一个奥地利人使用德语撰写的LATEX2.
09介绍:HubertPartlZentralerInformatikdienstderUniversit¨atf¨urBodenkulturWienIreneHynaBundesministeriumf¨urWissenschaftundForschungWienElisabethSchleglinGraz如果你对德文文档有兴趣,有一个由J¨orgKnappen针对LATEX2ε更新的版本,在CTAN的位置是:CTAN:/tex-archive/info/lshort/germaniv致谢!
下列人士为改进此文提供了校正、建议和素材.
他们的不懈努力帮助我把这份文档实现为现在这样子.
我对他们所有人表示诚挚的感谢.
当然,你在本书中找到的所有错误都是我的失误.
而你见到的每一个拼写正确的单词,都一定是由于下面列出的这些人之一通知了我.
RosemaryBailey,MarcBevand,FriedemannBrauer,JanBusa,MarkusBr¨uhwiler,PietroBraione,DavidCarlisle,JoseCarlosSantos,NeilCarter,MikeChapman,PierreChardaire,ChristopherChin,CarlCerecke,ChrisMcCormack,WimvanDam,JanDittberner,MichaelJohnDownes,MatthiasDreier,DavidDureisseix,Elliot,HansEhrbar,DanielFlipo,DavidFrey,HansFugal,RobinFairbairns,J¨orgFischer,ErikFrisk,MicMilicFrederickx,Frank,KasperB.
Graversen,ArloGriths,AlexandreGuimond,AndyGoth,CyrilGoutte,GregGamble,FrankFischli,MortenHgholm,NeilHammond,RasmusBorupHansen,JosephHilferty,Bj¨ornHvittfeldt,MartienHulsen,WernerIcking,Jakob,EricJacoboni,AlanJerey,ByronJones,DavidJones,Johannes-MariaKaltenbach,MichaelKoundouros,AndrzejKawalec,SanderdeKievit,AlainKessi,ChristianKern,TobiasKlauser,J¨orgKnappen,KjetilKjernsmo,MaikLehradt,RemiLetot,FloriLambrechts,AxelLiljencrantz,JohanLundberg,AlexanderMai,HendrikMaryns,MartinMaechler,AleksandarSMilosevic,HenrikMitsch,ClausMalten,KevinVanMaren,RichardNagy,PhilippNagele,LenimarNunesdeAndrade,ManuelOetiker,UrsOswald,MartinPster,DemersonAndrePolli,NikosPothitos,MaksymPolyakovHubertPartl,JohnReing,MikeRessler,BrianRipley,YoungU.
Ryu,BerndRosenlecher,ChrisRowley,RistoSaarelma,HanspeterSchmid,CraigSchlenter,GillesSchintgen,BaronSchwartz,ChristopherSawtell,MilesSpielberg,GeoreySwindale,LaszloSzathmary,BorisTobotras,JosefTkadlec,ScottVeirs,DidierVerna,FabianWernli,Carl-GustavWerner,DavidWoodhouse,ChrisYork,FritzZaucker,RickZaccone,andMikhailZotov.
v4.
20中文版致謝!
中文TEX學會啓動的lshort-zh-cn修正計劃已經完工!
本項計劃歷時八個月,參加的朋友有:CTEX論壇ID執行章節zpxing前言、第二章、第五章1-2.
4&3、第六章Frogge第一章liwenjun第三章lijian605第四章gprsnl第五章2.
5-2.
11haginile和Frogge通讀了全篇,并寫出了詳盡的勘誤表.
blackold對于第二章亦有所貢獻.
最后由zpxing統籌全書.
原3.
20中文版致謝!
本文档的翻译工作由CTEX版主"经典问题"倡议,历经近十个月才得以完成.
期间参与翻译工作的朋友有:CTEX论坛ID翻译章节源文件名经典问题前言overview.
tex高原之狼第一章things.
texcontrolong第二章typeset.
texcxterm第三章math.
tex,lssym.
texaloft第四章spec.
texganzhi第五章custom.
tex在此特向这些奉献者表示感谢!
前言LATEX[1]是一种排版系统,它非常适用于生成高印刷质量的科技和数学类文档.
这个系统同样适用于生成从简单信件到完整书籍的所有其他种类的文档.
LATEX使用TEX[2]作为它的格式化引擎.
这份短小的介绍描述了LATEX2ε的使用,对LATEX的大多数应用来说应该是足够了.
参考文献[1,3]对LATEX系统提供了完整的描述.
这份介绍共有六章:第一章告诉你关于LATEX2ε文档的基本结构.
你也会从中了解一点LATEX的历史.
阅读这一章后,你应该对LATEX如何工作有一个大致的理解.
第二章探究文档排版的细节.
它解释了大部分必要的LATEX命令和环境.
在阅读完这一章之后,你就能够编写你的第一份文档了.
第三章解释了如何使用LATEX排版公式.
同时,大量的例子会有助于你理解LATEX是如何的强大.
在这个章节的结尾,你会找到列出LATEX中所有可用数学符号的表格.
第四章解释了索引和参考文件的生成、EPS图形的插入.
它介绍了如何使用pdfLATEX生成pdf文档和一些其他有用的扩展宏包.
第五章演示如何使用LATEX创建图形.
不必使用图形软件画图、存盘并插入LATEX文档,你可以直接描述图形,然后LATEX会替你画好它.
第六章包含一些潜在的危险信息,内容是关于如何改变LATEX所产生文档的标准布局.
它会告诉你如何把LATEX的输出变得更糟糕,或者更上一层楼,当然这取决于你的能力.
按照顺序阅读这些章节是很重要的这本书毕竟不长.
一定要认真阅读例子,因为在贯穿全篇的各种例子里包含了很多的信息.
LATEX适用于从PC和Mac到大型的UNIX和VMS系统上.
许多大学的计算机集群上安装了LATEX,随时可以使用.
LocalGuide[5]里应该会介绍如何使用本地安装的LATEX.
如果有问题,就去问给你这本小册子的人.
这份文档不会告诉你如何安装一个LATEX系统,而是教会你编写LATEX能够处理的文档.
如果你想取得LATEX的相关材料,请访问"ComprehensiveTEXArchiveNetwork"(CTAN)站点,主页是http://www.
ctan.
org.
所有的宏包也可以从ftp归档站点ftp://www.
ctan.
org和遍布全球的各个镜像站点中获得.
所有的宏包都可以在ftp://ctan.
tug.
org以及它遍布全球的镜像取得.
viii前言在本书中你会找到其他引用CTAN的地方,尤其是,给出你可能需要下载的软件和文档的指示.
这里没有写出完整的url,而仅仅是其在CTAN:之后的树状结构中的位置.
请先看看CTAN:/tex-archive/systems中有些什么,如果你想在自己的计算机上运行LATEX.
如果你有意在这份文档中增加、删除或者改变一些内容,请通知我.
我对LATEX初学者的反馈特别感兴趣,尤其是关于这份介绍哪些部分很容易理解,哪些部分可能需要更好地解释.
TobiasOetikerDepartmentofInformationTechnologyandElectricalEngineering,SwissFederalInstituteofTechnology这份文档的最新版本在CTAN:/tex-archive/info/lshort关于这份文档的最新中文翻译,请咨询http://bbs.
ctex.
org目录致谢!
iii前言vii1基础知识11.
1游戏的名目11.
1.
1TEX11.
1.
2LATEX11.
2基础21.
2.
1作者、图书设计者和排版者21.
2.
2版面设计21.
2.
3优势和不足21.
3LATEX源文件31.
3.
1空白距离31.
3.
2特殊字符41.
3.
3LATEX命令41.
3.
4注释51.
4源文件的结构51.
5一个典型的命令行过程71.
6文档布局81.
6.
1文档类81.
6.
2宏包81.
6.
3页面样式101.
7各类LATEX文件111.
8大型项目122文本排版132.
1文本和语言结构132.
2断行和分页142.
2.
1对齐段落142.
2.
2断词152.
3内置字符串162.
4特殊字符和符号162.
4.
1引号162.
4.
2破折号和连字号172.
4.
3波浪号(172.
4.
4度的符号(172.
4.
5欧元符号(e)17x目录2.
4.
6省略号(182.
4.
7连字182.
4.
8注音符号和特殊字符192.
5国际语言支持192.
5.
1葡萄牙文支持212.
5.
2法文支持222.
5.
3德文支持222.
5.
4朝鲜文支持232.
5.
5用希腊文写作242.
5.
6斯拉夫文支持252.
6单词间隔262.
7标题、章和节272.
8交叉引用282.
9脚注292.
10强调292.
11环境302.
11.
1Itemize、Enumerate和Description302.
11.
2左对齐、右对齐和居中302.
11.
3引用、语录和韵文312.
11.
4摘要312.
11.
5原文打印322.
11.
6表格322.
12浮动体342.
13保护脆弱命令363数学公式373.
1综述373.
2数学模式的群组393.
3数学公式的基本元素393.
4数学空格423.
5垂直取齐433.
6虚位453.
7数学字体尺寸453.
8定理、定律…463.
9粗体符号473.
10数学符号表484专业功能554.
1插入EPS图形554.
2参考文献564.
3索引574.
4定制页眉和页脚584.
5Verbatim宏包594.
6安装额外的宏包594.
7使用pdfLATEX604.
7.
1发布到网上的PDF文档614.
7.
2字体614.
7.
3使用图形624.
7.
4超链接634.
7.
5链接的问题65目录xi4.
7.
6书签的问题654.
8创建演示文稿665数学图形695.
1概述695.
2picture环境695.
2.
1基本命令705.
2.
2线段715.
2.
3箭头725.
2.
4圆735.
2.
5文本与公式745.
2.
6\multiput与\linethickness745.
2.
7椭圆755.
2.
8重复使用预定义的图形盒子765.
2.
9二次Bezier曲线775.
2.
10悬链线785.
2.
11坐标的相对性795.
3XY-pic796定制LATEX836.
1新建命令、环境和宏包836.
1.
1新建命令846.
1.
2新建环境846.
1.
3额外的空白间距856.
1.
4命令行的LATEX856.
1.
5自建宏包866.
2字体和字号866.
2.
1字体变换命令866.
2.
2战战兢兢,如履薄冰896.
2.
3建议896.
3间距906.
3.
1行距906.
3.
2段落格式906.
3.
3水平间距916.
3.
4垂直间距926.
4页面布局926.
5更有趣的长度946.
6盒子956.
7标尺和支撑97参考文献99索引101图形清单1.
1一个简单的LATEX源文件.
61.
2article类例子.
64.
1fancyhdr设置实例.
594.
2beamer文档类的范例.
676.
1宏包样例.
866.
2页面布局参数.
93表格清单1.
1文档类.
81.
2文档类选项.
91.
3随LATEX一起发行的宏包.
101.
4LATEX预定义的页面样式.
102.
1欧元符号工具箱.
182.
2注音符号和特殊字符.
192.
3葡萄牙文所需的导言区.
212.
4法文专用命令.
222.
5德文专用字符.
232.
6希腊文文档所需导言区.
252.
7希腊文特殊字符.
252.
8保加利亚文、俄文和乌克兰文.
262.
9浮动体放置许可.
343.
1数学模式重音符号.
483.
2希腊字母.
483.
3二元关系.
493.
4二元运算符.
493.
5"大"运算符.
493.
6箭头.
503.
7定界符.
503.
8大定界符.
503.
9其他符号.
513.
10非数学符号.
513.
11AMS定界符.
513.
12AMS希腊和希伯来字母.
513.
13AMS二元关系.
523.
14AMS箭头.
523.
15AMS二元否定关系符和箭头.
533.
16AMS二元运算符.
533.
17AMS其他符号.
543.
18数学字母.
544.
1graphicx宏包使用的关键词.
564.
2索引关键词语法示例.
586.
1字体.
87xvi表格清单6.
2字号.
876.
3标准文档类中的绝对pt大小.
886.
4数学字体.
886.
5TEX单位.
92Chapter1基础知识本章的第一部分给出了LATEX2ε原理及历史的简短介绍.
第二部分集中讲解LATEX文档的基本结构.
读完本章之后,你应该大致了解LATEX的工作原理,这对你理解本书的其余部分来说是必须的.
1.
1游戏的名目1.
1.
1TEXTEX是DonaldE.
Knuth编写的一个以排版文章及数学公式为目标的计算机程序[2].
1977年,在意识到恶劣的排版质量正在影响自己的著作及文章后,Knuth开始编写TEX排版系统引擎,探索当时开始进入出版工业的数字印刷设备的潜力,尤为希望能扭转排版质量下滑的这一趋势.
我们现在使用的TEX系统发布于1982年,在1989年又稍做改进,增加了对8字节字符及多语言的支持.
TEX以其卓越的稳定性、可在不同类型的电脑上运行以及几乎没有缺陷而著称.
TEX的版本号不断趋近于π,现在为3.
141592.
TEX发音为"Tech",其中"ch"和德语"Ach"1及苏格兰语"Loch"中的"ch"类似.
"ch"源自希腊字母,希腊文中,X是字母"ch"或"chi".
TEX同时也是希腊单词texnologia(technology)的第一个音节.
在ASCII文本环境中,TEX写作TeX.
1.
1.
2LATEXLATEX是一个宏集,它使用一个预先定义好的专业版面,可以使作者们高质量的排版和打印他们的作品.
LATEX最初由LeslieLamport编写[1],它使用TEX程序作为排版引擎.
现在LATEX由FrankMittelbach负责维护.
LATEX的发音为"Lay-tech"或"Lah-tech".
如果在ASCII环境中引用LATEX,你可以输入LaTeX.
LATEX2ε的发音为"Lay-techtwoe",在ASCII环境中写作LaTeX2e.
1在德语中,"ch"有两种发音,有的人可能认为"Pech"中较软的"ch"更加合适.
被问及这个问题时,Knuth在德文Wikipedia中写道:当人们以他们喜欢的方式来拼读TEX时,我并不感到生气……在德国,更多的人喜欢较软的ch,因为X跟在元音e的后面.
在俄语中,'tex'是一个非常普遍的单词,读作'tyekh'.
但我相信最合适的发音来自希腊语,其中ach和Loch中ch的发音稍尖.
2基础知识1.
2基础1.
2.
1作者、图书设计者和排版者出版的第一步就是作者把打好字的手稿交给出版公司,然后由图书设计者来决定整个文档的布局(栏宽、字体、标题前后的间距、……).
图书设计者会把他的排版说明写进作者的手稿里,再交给排版者,由排版者根据这些说明来排版全书.

一个图书设计者要试图理解作者写作时的意图.
他要根据手稿的内容和他自己的职业知识来决定章节标题、文献引用、例子及公式等等.
在一个LATEX环境中,LATEX充当了图书设计者的角色,而TEX则是其排版者.
但是LATEX"仅仅"是一个程序,因此它需要很多的指导.
作者必须提供额外的信息,来描述其著作的逻辑结构.
这些信息是以"LATEX命令"的形式写入文档中的.
这和大多数现代文字处理工具,如MSWord及CorelWordPerfect所采用的所见即所得(WYSIWYG2)的方式有很大区别.
使用这些工具时,作者在向计算机中输入文档的同时,通过互动的方式确定文章的布局.
作者可以从屏幕上看到作品的最终打印效果.
而使用LATEX时,一般是不能在输入文档的同时看到最终的输出效果的,但是使用LATEX处理文档之后,便可以在屏幕上预览最终的输出效果.
因此在真正打印文档之前还是可以做出改正的.
1.
2.
2版面设计排版设计是一门工艺.
不熟练的作者认为书籍设计仅仅是个美学问题,因而经常会犯严重的格式错误"如果一份文档从艺术的角度看起来不错,那么它的设计就是成功的".
不过作为一份用来阅读而不是挂在画廊里的文档,可读性和可理解性远比漂亮的外观重要.
例如:必须选定字号和标题的序号,使读者能清楚的理解章节的结构.
每一行既要足够短以避免读者眼睛疲劳,又要足够长以维持页面的美观.

在使用所见即所得系统(WYSIWYG)时,作者经常会写出一些看上去漂亮,但结构欠清晰或不连贯的文章来.
LATEX通过强制作者声明文档的逻辑结构,来避免这些排版格式错误.
然后,LATEX再根据文档的结构选择最合适的版面格式.
1.
2.
3优势和不足使用所见即所得(WYSIWYG)的人和使用LATEX的人遇到一起时,他们经常讨论的话题就是"相比一般文字处理软件,LATEX的优势(advantagesofLATEX)"或者不足.
当这样的讨论开始时,你最好保持低调,因为讨论往往会失控.
但有时你也不能逃避……下面便是一些武器.
LATEX优于一般文字处理软件之处可归纳如下:提供专业的版面设计,可以使一份文档看起来就像"印刷品"一样.
可以方便的排版数学公式.
用户只需要学一些声明文档逻辑结构的简单易懂的命令,而不必对文档的实际版面修修补补.
2Whatyouseeiswhatyouget.
1.
3LATEX源文件3可以容易的生成像脚注、引用、目录和参考文献等很多复杂的结构.
很多不被基本LATEX支持的排版工作,可以由添加免费的宏包来完成.
例如,支持在文件中插入PostScript格式图像的宏包及排版符合各类准确标准的参考文献的宏包等.
很多这类宏包在TheLATEXCompanion[3]中都有说明.
LATEX鼓励作者按照合理的结构写作,因为LATEX就是通过指明文档结构来进行排版工作的.
TEX,作为LATEX2ε的排版引擎,不仅免费,而且具有很高的可移植性,几乎可以在任何硬件平台上运行.
LATEX也有一些不足之处.
尽管我可以确定别人可以列出几百条,我自己却很难找到一些比较理智的;-)没有原则的人不能使用LATEX很好地工作……尽管可以调节预先定义好的文档版面布局中的一些参数,但设计一个全新的版面还是很困难的,并会耗费大量时间3.
很难用LATEX来写结构不明、组织无序的文档.
即使有一个令人鼓舞的开端,你也可能无法完全掌握其精髓.
1.
3LATEX源文件LATEX源文件为普通的ASCII文件,你可以使用任何文本编辑器来创建.
LATEX源文件不仅包含了要排版的文本,而且也包含了告诉LATEX如何排版这些文本内容的命令.
1.
3.
1空白距离空格和制表符等空白字符在LATEX中被看作相同的空白距离(space).
多个连续的空白字符等同于一个空白字符.
在句首的空白距离一般会被忽略,单个空行也被认为是一个"空白距离".
两行文本间的空白行标志着上段的结束和下段的开始.
多个空白行的作用等同于一个空白行.
下面便是一个例子,左边是源文件中的文本,右边是排版后的结果.
Itdoesnotmatterwhetheryouenteroneorseveralspacesafteraword.
Anemptylinestartsanewparagraph.
Itdoesnotmatterwhetheryouenteroneorseveralspacesafteraword.
Anemptylinestartsanewparagraph.
3传闻这将是未来的LATEX3系统中的一个重要组成部分.
4基础知识1.
3.
2特殊字符下面的这些字符是LATEX中的保留字符(reservedcharacters),它们或在LATEX中有特殊的意义,或不一定存在于所有字库中.
如果你直接在文本中输入这些字符,通常它们不会被输出,而且还会导致LATEX做一些你不希望发生的事情.
如你看到的,在这些字符前加上反斜线,它们就可以正常的输出到文档中.

其他一些特殊符号可以由数学环境中的特殊命令或重音命令得到.
反斜线\不能通过在其前面加另一个反斜线得到(\\);这是一个用来换行的命令4.
1.
3.
3LATEX命令LATEX命令(commands)是大小写敏感的,有以下两种格式:以一个反斜线(backslash)\开始,命令名只由字母组成.
命令名后的空格符、数字或任何非字母的字符都标志着该命令的结束.
由一个反斜线和非字母的字符组成.
LATEX忽略命令之后的空白字符.
如果你希望在命令后得到一个空格,可以在命令后加上{}和一个空格,或加上一个特殊的空格命令.
{}将阻止LATEX吃掉命令后的所有空格.
IreadthatKnuthdividesthepeopleworkingwith\TeX{}into\TeX{}niciansand\TeXperts.
\\Todayis\today.
IreadthatKnuthdividesthepeopleworkingwithTEXintoTEXniciansandTEXperts.
TodayisAugust2,2008.
有些命令需要一个参数(parameter),该参数用花括号(curlybraces){}括住并写在命令的后面.
一些命令支持可选参数(optionalparameters),可选参数可用方括号(squarebrackets)[]括住,然后写在命令的后面.
下面的例子中使用了一些LATEX命令,不要着急,后面将解释它们的含义.
Youcan\textsl{lean}onme!
Youcanleanonme!
Please,startanewlinerighthere!
\newlineThankyou!
Please,startanewlinerighthere!
Thankyou!
4试试$\backslash$命令,它将生成一个'\'.
1.
4源文件的结构51.
3.
4注释当LATEX处理一个源文件时,如果遇到一个百分号%,LATEX将忽略%后的该行内容,换行符以及下一行前的空白字符.
我们可以据此在源文件中写一些注释,而且这些注释并不会出现在最后的排版结果中.
Thisisan%stupid%Better:instructive书写文本的主旨是(某些现代DAAC1文化除外),向读者传递观点、信息或者知识.
如果这些观点被很好地组织起来,那么读者会得到更好的理解.
而且,如果排版形式反映内容的逻辑和语义结构,读者就能看到也更喜欢文章的这种脉络.
LATEX不同于其它排版系统之处在于,你必须告诉它文本的逻辑和语义结构.
然后它根据类文件和各种样式文件中给定的"规则"生成相应格式的文本.

LATEX最重要的文本单元(印刷术上的)是段落(paragraph).
我们称段落为"文本单元",因为段落是连续思想或者观点在排版上的反映.
在下一节里,你将学会在源代码中如何使用\\来强迫换行,如何使用空行来分段.
因此,一旦开始表达新的思想,就应该另起一段,否则换行就够了.
如果无法决定是否分段,想象一下你的文字是观点和思想的载体.
如果分段后,原来的思想仍在继续,就应该取消分段.
如果有些行在同一段落里阐述了新的思想,那么应该分段.

大部分人完全低估了恰当分段的重要性.
许多人甚至不知道分段表示什么,或者,特别是在LATEX里,设置了分段但却浑然不知.
后一错误特别容易发生在文本中使用公式的情况.
观察下面的例子并理解为什么有时公式前后都使用空行(分段),而有时不这样.
(如果你还不能掌握里面所用的命令以至于无法理解这些例子,请在阅读这一章和下一章后再阅读这一节.
)%Example1\ldotswhenEinsteinintroducedhisformula\begin{equation}e=m\cdotc^2\;,\end{equation}whichisatthesametimethemostwidelyknownandtheleastwellunderstoodphysicalformula.
1为标新立异而不讲成本,译自theSwissGermanUVA(Um'sVerreckenAnders).
14文本排版%Example2\ldotsfromwhichfollowsKirchhoff'scurrentlaw:\begin{equation}\sum_{k=1}^{n}I_k=0\;.
\end{equation}Kirchhoff'svoltagelawcanbederived\ldots%Example3\ldotswhichhasseveraladvantages.
\begin{equation}I_D=I_F-I_R\end{equation}isthecoreofaverydifferenttransistormodel.
\ldots另一个更小的文本单元是句子.
在英文文本中,结束句子的句点后面的空格比缩略词的句点后面的空格更长.
LATEX试图判断你需要哪一个,如果LATEX判断错了,你必须告诉它你需要什么.
这将会在下一章里谈到.
文本的结构甚至还包括句子的成份.
大部分语言的标点规则非常复杂,但在许多语言(包括德文和英文)中,如果你记住逗号的意思:在语流中的短暂停顿,那么几乎所有的逗号都不会被用错.
如果你不确定在什么地方应该使用逗号,大声地朗读句子并在每一个逗号处喘口气.
在呼吸别扭的地方删除逗号,而在需要喘口气(或者需要短暂停顿)的地方插入一个逗号.
最后,通过包含段落的章、节和子节等等,段落应该在更高层次被有逻辑地组织起来.
然而,使用诸如\section{TheStructureofTextandLanguage}的排版效果,是如此明显以至于如何使用这些高层次的结构是不言而喻的.

2.
2断行和分页2.
2.
1对齐段落通常书籍是用等长的行来排版的.
为了优化整个段落的内容,LATEX在单词之间插入必要的断行点(linebreak)和间隙.
如果一行的单词排不下,LATEX也会进行必要的断词.
段落如何排版依赖于文档类别.
通常,每一段的第一行有缩进,在两段之间没有额外的间隔.
更多的内容请参考第6.
3.
2节.
2.
2断行和分页15在特殊情形下,有必要命令LATEX断行\\or\newline另起一行,而不另起一段.
\\*在强制断行后,还禁止分页.
\newpage另起一页.
\linebreak[n],\nolinebreak[n],\pagebreak[n],\nopagebreak[n]上述命令的效果可以从它们的名称看出来.
通过可选参量n,作者可以影响这些命令的效果.
n可以取为0和4之间的数.
如果命令的效果看起来非常差,把n取为小于4的数,可以让LATEX在排版效果不佳的时候选择忽略这个命令.
不要把这些"break"命令与"new"命令混淆.
即使你给出了"break"命令,LATEX仍然试图对齐页面的右边界.
如果你真想另起一行,就使用相应的命令.
猜猜该是什么命令!
LATEX总是尽可能产生最好的断行效果.
如果断行无法达到LATEX的高标准,就让这一行在段落的右侧溢出.
然后在处理源文件的同时,报告溢出的消息("overfullhbox").
这最有可能发生在LATEX找不到合适的地方断词的时候2.
你可以使用\sloppy命令,告诉LATEX降低一点儿标准.
它通过增加单词之间的间隔,以防止出现过长的行,虽然最终的输出结果不是最优的.
在这种情况下给出警告("underfullhbox").
在大多数情况下得到的结果看起来不会非常好.
\fussy命令把LATEX恢复为缺省状态.
2.
2.
2断词必要时LATEX就会断词.
如果断词算法不能确定正确的断词点,可以使用如下命令告诉TEX如何弥补这个缺憾.
命令\hyphenation{wordlist}使列于参量中的单词仅在注有"-"的地方断词.
命令的参量仅由正常字母构成的单词,或由LATEX视为正常字母的符号组成.
当断词命令出现时,根据正在使用的语言,断词的提示就已经被存好待选了.
这意味着如果你在文档导言中设置了断词命令,它将影响英文的断词.
如果断词命令置于\begin{document}后面,而且你正使用比方babel的国际语言支持宏包,那么断词提示在由babel激活的语言中就处于活动状态.
下面的例子允许对"hyphenation"和"Hyphenation"进行断词,却根本不允许"FORTRAN","Fortran"和"fortran"进行断词.
在参量中不允许出现特殊的字符和符号.
2当发生(Overfullhbox)时,虽然LATEX给出一个警告并显示溢出的那一行,但是不太容易发现溢出的行.
如果你在\documentclass命令中使用选项draft,LATEX就在溢出行的右边标以粗黑线.
16文本排版例子:\hyphenation{FORTRANHy-phen-a-tion}命令\-在单词中插入一个自主的断词点.
它也就成为这个单词中允许出现的唯一断词点.
对于包含特殊字符(例如:注音字符)的单词,这个命令是特别有用的,因为对于他们,LATEX不会自动断词3.
Ithinkthisis:su\-per\-cal\-%i\-frag\-i\-lis\-tic\-ex\-pi\-%al\-i\-do\-ciousIthinkthisis:supercalifragilisticexpialido-cious命令\mbox{text}保证把几个单词排在同一行上.
在任何情况下,这个命令把它的参量排在一起.

Myphonenumberwillchangesoon.
Itwillbe\mbox{01162912319}.
Theparameter\mbox{\emph{filename}}shouldcontainthenameofthefile.
Myphonenumberwillchangesoon.
Itwillbe01162912319.
Theparameterlenameshouldcontainthenameofthele.
命令\fbox和\mbox类似,此外它还能围绕内容画一个框.
2.
3内置字符串在前面的例子中,你已经看到用来排版特殊文本字符串的一些非常简单的LATEX命令了.
命令例子描述\todayAugust2,2008今日日期\TeXTEX你最喜爱的排版工具\LaTeXLATEX游戏的名目\LaTeXeLATEX2ε现在的化身2.
4特殊字符和符号2.
4.
1引号你不能再像在打字机上那样,把"用作引号(quotationmarks).
在印刷中有专门的左引号和右引号.
在LATEX中,用两个`(重音)产生左引号,用两个'(直立引号)产生右引号.
一个'和一个'产生一个单引号.
''Pleasepressthe'x'key.
''"Pleasepressthe'x'key.
"当然我知道这种实现机制不是最理想的,无论字体如何,它总是一个反向的勾号或者重音符(`)当左引号,直立引号(')当右引号.
3除非你正在使用新的DC字体(DCfont).
2.
4特殊字符和符号172.
4.
2破折号和连字号LATEX中有四种短划(dash)标点符号.
连续用不同数目的短划,可以得到其中的三种.
第四个实际不是标点符号,它是数学中的减号:daughter-in-law,X-rated\\pages13--67\\yes---orno\\$0$,$1$and$-1$daughter-in-law,X-ratedpages13–67yes—orno0,1and1这些短划线是:'-'连字号(hyphen),'–'短破折号(en-dash),'—'长破折号(em-dash)和''减号(minussign).
2.
4.
3波浪号()波浪号经常和网址用在一起.
它在LATEX中,可用\~产生,但其结果:却不是你真正想要的.
试一下这个:http://www.
rich.
edu/\~{}bush\\http://www.
clever.
edu/$\sim$demohttp://www.
rich.
edu/bushhttp://www.
clever.
edu/demo2.
4.
4度的符号()下面的例子演示了在LATEX中如何排版度的符号(degreesymbol):It's$-30\,^{\circ}\mathrm{C}$.
Iwillsoonstarttosuper-conduct.
It's30C.
Iwillsoonstarttosuper-conduct.
textcomp宏包里有另外一个度的符号\textcelsius.
2.
4.
5欧元符号(e)现在撰写有关货币的文章,通常需要欧元符号.
现有的许多字体都包含它.
在你的导言区载入textcomp宏包,\usepackage{textcomp}你就可以使用命令\texteuro来生成欧元符号.
如果你的字体不提供或者你不喜欢它给出的欧元符号,还有两个选择:18文本排版首先是eurosym宏包.
它提供了官方的欧元符号:\usepackage[ocial]{eurosym}如果你希望得到跟所用字体匹配的欧元符号,使用选项gen替换official.
marvosym宏包也提供了很多符号,包括一个名为\EURtm的欧元符号.
它的缺点是没有提供欧元符号的斜体(slanted)和粗体(bold)变形.
表2.
1–欧元符号工具箱.
LM+textcomp\texteuroeurosym\euroeee[gen]eurosym\euroACACACmarvosym\EURtmeee2.
4.
6省略号(.
.
.
)在打字机上,逗号(comma)或句号(period)占据的空间和其他字母相等.
在书籍印刷中,这些字符仅占据一点儿空间,并且与前一个字母贴得非常紧.
所以不能只键入三个点来输出"省略号"(ellipsis),因为间隔划分得不对.
有一个专门的命令输出省略号.
它被称为\ldotsNotlikethis.
.
.
butlikethis:\\NewYork,Tokyo,Budapest,\ldotsNotlikethis.
.
.
butlikethis:NewYork,Tokyo,Budapest,.
.
.
2.
4.
7连字一些字母组合不是简单键入一个个字母得到得的,而实际上用到了一些特殊符号.
效果应为.
.
.
而不是.
.
.
这就是所谓的连字(ligature),在两个字母之间插入一个\mbox{},可以禁止连字.
对于由两个词构成的单词,这可能是必要的.
Notshelfful\\butshelf\mbox{}fulNotshelulbutshelfful2.
5国际语言支持192.
4.
8注音符号和特殊字符LATEX支持来自许多语言中的注音符号(accent)和特殊字符(specialcharacter).
表2.
2就字母o列出了所有的注音符号.
对于其他字母也自然有效.
在字母i和j上标一个注音符号,它的点儿必须去掉.
这个可由\i和\j做到.
H\^otel,na\"\ive,\'el\'eve,\\sm\orrebr\od,!
'Se\norita!
,\\Sch\"onbrunnerSchlo\ss{}Stra\sseHotel,na¨ve,el`eve,smrrebrd,Senorita!
,Sch¨onbrunnerSchloStrae表2.
2–注音符号和特殊字符.
`o\'oo\'oo\^oo\oo\=o˙o\.
o¨o\"oc\cco\uoˇo\voo\Hoo\coo.
\doo\booo\too\oe\OE\ae\AEa\aaA\AA\o\Ol\lL\L\i\j2.
5国际语言支持如果你需要用英文以外的语文(language)书写文件,LATEX有两个地方必须配置好:1.
所有自动生成的字符串4必须适用于新语言.
对于许多种语言,这个任务可由JohannesBraams编的宏包babel完成.
2.
对于一种新语言,LATEX需要知道它的断词规则.
将断词规则输入LATEX有些难度.
这是说为不同断词模式重建格式文件是行得通的.
对此LocalGuide[5]给了更多的信息.
3.
特定语言的排版规则.
比如法语中,每一个冒号(:)前面必须留出一定的空白.
如果你的系统已经配置好了,你可以通过在命令\documentclass后添加命令\usepackage[language]{babel}来激活宏包babel.
已经被你的LATEX系统支持的语言列表会在每次编译的时候显示.
对于选定的语言,宏包babel将自动激活适当的断词规则.
如果LATEX的4目录、图形清单……20文本排版格式文件不支持在所选择的语言中断词,除了失去断词功能,宏包babel仍起作用,当然这对于排版效果有很大的负面影响.
对于很多种语言,宏包babel也提供专门的新命令来简化特殊字符的输入.
例如德文(German)包含很多元音变音(¨a¨o¨u).
利用babel,你能用"o而不是\"o来输入¨o.
如果为babel指定了多种语言\usepackage[languageA,languageB]{babel}选项中的最后一种语言会被激活(即languageB).
你可以使用\selectlanguage{languageA}来改变被激活的语言.
大多数现代的计算机系统允许直接从键盘输入某国的字母.
为了处理大量不同语系以及/或者计算机平台使用的输入编码,LATEX使用inputenc宏包:\usepackage[encoding]{inputenc}当使用这个宏包时,应该考虑其他人可能因为使用不同的编码,在其计算机上或许不能显示你的源文件.
例如,德语元音变音¨a的编码为132,在一些使用ISO-LATIN1的Unix系统上,它的编码就成了228;但是Windows上的Cyrillic编码cp1251里却根本没有这个字母.
所以应小心使用这个功能.
根据你使用的系统类型,下列编码可能会派得上用场5.
OperatingencodingssystemwesternLatinCyrillicMacapplemacmacukrUnixlatin1koi8-ruWindowsansinewcp1251DOS,OS/2cp850cp866nav如果你有一份多语言文档,其中的编码会有冲突.
这时可以使用ucs宏包来选择unicode.
\usepackage{ucs}\usepackage[utf8x]{inputenc}会让你创建的LATEX文档使用utf8x,它是一种多字节的编码,其中每个字符需要最少一个字节,最多4个字节.
字体编码是另外一个问题.
它定义于一种TEX字体里每个字母的存放位置.
几种不同的输入编码可以被映射到一种字体编码,这样减少了所需的字体集数量.
字体编码通过fontenc宏包来处理:\usepackage[encoding]{fontenc}其中encoding是字体编码.
可以同时载入几种编码.
5要想知道更多基于Latin或者Cyrillic语言支持的输入编码,请分别阅读inputenc.
dtx和cyinpenc.
dtx的文档.
第4.
6节讲到了如何生成宏包文档.
2.
5国际语言支持21表2.
3–葡萄牙文所需的导言区.
\usepackage[portuguese]{babel}\usepackage[latin1]{inputenc}\usepackage[T1]{fontenc}默认的LATEX字体编码是OT1,ComputerModernTEX字体的原有编码.
它只包含了7-bitASCII字符集的128个字符.
需要注音字符的时候,TEX把一个正常的字符附上重音符来创建它.
虽然输出结果看上去很完美,但这种方法停止了对注音字符的自动断词功能.
另外,这种方法不能创建一些拉丁字母,而且对非拉丁字母一筹莫展,比如希腊字母(Greek)和西里尔字母(Cyrillic).
为了克服这个缺点,一些8-bit的类似CM的字体集被打造出来.
T1编码的ExtendedCork(EC)字体以拉丁语系为基础,包含了支持大部分欧洲语言的字母和标点符号.
LH字体集包含了排版斯拉夫语系文档必需的字母.
因为斯拉夫字母的字形太多,它们被分成四种字体编码T2A,T2B,T2C,以及X26.
希腊文的LGR编码字体在CB字体集里.
有了这些字体支持,你可以对非英文文本改进或者应用断词了.
使用这些新的类似CM的字体还有一个好处,它们提供了CM字族里各种大小,形状以及比例缩放的字体.
2.
5.
1葡萄牙文支持ByDemersonAndrePolli为了对葡萄牙文(Portuguese)文档应用断词及各种自动文本,使用命令:\usepackage[portuguese]{babel}或者如果你在巴西的话,替换成brazilian.
鉴于葡萄牙文中有许多重音,你可能想要用\usepackage[latin1]{inputenc}来正确的输入它们,并且用\usepackage[T1]{fontenc}来正确的断词.
使用葡萄牙文的文档导言区请参考表2.
3.
注意我们使用的是latin1的输入编码,所以在Mac或者DOS上会不起作用.
请自行选择合适的编码.
6这些编码所支持的语言列表可以在[11]查到.
22文本排版2.
5.
2法文支持ByDanielFlipo一些使用LATEX创建法文(French)文档的提示:你可以通过以下命令载入法文支持:\usepackage[frenchb]{babel}请注意,由于历史原因,babel的法文选项或者是frenchb或者是francais,而不是french.
照此配置,你就可以使用法文的断词了.
当然所有的自动文本也都成为法文:\chapter印成Chapitre,\today印成法语里的今天的日期等等.
同时也有一系列的新命令,可以让你更容易的输入法文.
请参考表2.
4来获取灵感.
表2.
4–法文专用命令.
\ogguillemets\fg{}guillemetsM\up{me},D\up{r}Mme,Dr1\ier{},1\iere{},1\ieres{}1er,1re,1res2\ieme{}4\iemes{}2e4es\No1,\no2No1,no220\degresC,45\degres20°C,45°\bsc{M.
Durand}M.
Durand\nombre{1234,56789}1234,56789你会注意到,切换到法文的时候,列表的版面也改变了.
更多关于babel的frenchb选项功能以及如何定制的内容,请对frenchb.
dtx运行LATEX并阅读生成的frenchb.
dvi.
2.
5.
3德文支持一些使用LATEX创建德文(German)文档的提示:你可以通过以下命令来载入德文支持:\usepackage[german]{babel}照此配置,你就可以使用德文的断词了.
当然所有的自动文本也都成为德文:例如"Chapter"印成"Kapitel".
同时也有一系列的新命令,可以让你更迅速的输入德文,即使你没有使用inputenc宏包.
请参考表2.
5来获取灵感.
一旦使用inputenc宏包,所有这些都不重要了,当然你的文档也被锁定在一个特殊的编码世界里.
在德文的书籍里,你会经常发现法文的引号(guillemets).
然而德文的打字机里有不同的使用方法.
德文书籍中的引号看起来是this.
在瑞士讲德语的部分,打字机使用guillemets,这跟法文一样.
2.
5国际语言支持23表2.
5–德文专用字符.
"a¨a"s"'""'""or\frqq\flq\dq"使用类似\flq命令的一个主要问题是:如果你用OT1字体(这是默认字体),guillemets看起来就像数学符号"",这令排版者反胃.
而T1编码的字体含有正确的符号.
所以,当你使用这种引号的时候,请确保正在用T1编码.
(\usepackage[T1]{fontenc})2.
5.
4朝鲜文支持7为了使用LATEX排版朝鲜文(Korean),我们需要解决三个问题:1.
我们要能够编辑朝鲜文的源文件(Koreaninputles).
朝鲜文源文档必须是普通文本格式的(plain-textformat),但由于朝鲜文使用的字符集迥异于US-ASCII指令集,在一般的ASCII编辑器里看起来会相当怪异.
两个最广为使用的朝鲜文文本文档编码是EUC-KR以及MS-Windows里它的向上兼容扩展,CP949/Windows-949/UHC.
在这些编码里,每一个US-ASCII字符代表普通的ASCII字符,这跟其他兼容ASCII的编码比如ISO-8859-x,EUC-JP,Big5,或者ShiftJIS相似.
另一方面,从KSX1001字符编码取出的朝鲜语谚文、汉字、朝鲜文字母、平假名、片假名、希腊文和斯拉夫字符以及其他符号和字母都用两个连贯的八位字节来表示.
第一种有它的有效位集.
直到1990年代中期,在非朝鲜文的操作系统上配置朝鲜文兼容环境还是一件费时费力的事.
你可以浏览一下有些过时的http://jshin.
net/faq来了解那时是如何在非朝鲜文操作系统上使用朝鲜文的.
现在,三种主要的操作系统(MacOS,Unix,Windows)都具备了相当好的多语言支持和国际化特征,所以在非朝鲜文平台上编辑朝鲜文文档已经不再是一个问题了.
2.
TEX和LATEX最初只支持不超过256个字符.
为了在其他有大量字符的语文例如朝鲜文或汉文中让它们工作8,开发了一种子字体机制.
一个有几千7考虑到朝鲜文LATEX用户需要处理的大量问题,KarnesKIM代表韩国lshort翻译团队撰写了这一节,并由SHINJungshik翻译为英文,TobiOetiker作了简化.
8朝鲜语谚文是一种由14个基本辅音和10个基本元音构成的字母书写系统.
不同于拉丁或者斯拉夫文字,每一个字符都要被排进跟汉文字符差不多大小的一簇矩形里.
每一簇表示一个音节.
这样就用有限的元音和辅音构成了无限多的音节.
但是现代朝鲜文的拼写标准(南、北朝鲜)都对这些簇的构成有严格的限制.
因此只有有限个拼写正确的音节存在.
朝鲜文字符编码给每一个音节的指定一个代码(KSX1001:1998和KSX1002:1992).
所以谚文虽然是一种字母文,处理起来却跟汉文和日文这些有几万个表意字符的书写系统差不多.
ISO10646/Unicode提供了现代朝鲜语谚文的两种表示方法,一种是对相连的谚文字母编码(字母表:http://www.
unicode.
org/charts/PDF/U1100.
pdf),另一种对所有拼写规范的现代朝鲜语音节编码(http://www.
unicode.
org/charts/PDF/UAC00.
pdf).

使用LATEX及其相关排版系统处理朝鲜文有一项最令人犯憷的挑战,就是对中古朝鲜文可能会成为未来的朝鲜文音节的支持,现在还只能用Unicode对相连的字母编码来解决.
希望未来的TEX引擎如和Λ会最终提供解决方案,使得朝鲜语言和历史学者丢开MSWord,虽然它已经24文本排版或者几万种字型(glyph)的CJK单字被分割成一组子字体集,每一集合里包含256个字型.
对朝鲜文而言,有三个广为使用的宏包:UNKoaunghi开发的HLATEX,CHAJaechoon的hLATEXp以及WernerLemberg的CJK宏包(CJKpackage)9.
HLATEX和hLATEXp专为朝鲜文设计并且在字体支持之外支持朝鲜文本地化(Koreanlocalization).
对于EUC-KR编码的源文档,它们都可以正确的处理.
在使用Λ和的时候,HLATEX还可以处理以CP949/Windows-949/UHC和UTF-8编码的源文档.
CJK宏包不只为朝鲜文提供支持.
它还可以处理以UTF-8以及很多CJK编码包括EUC-KR和CP949/Windows-949/UHC的源文档.
它支持多种语言内容的文档排版,特别是汉文,日文和朝鲜文.
跟HLATEX相比,CJK宏包不提供朝鲜文本地化而且朝鲜文字体也不如HLATEX多.
3.
使用如TEX和LATEX排版工具的最终目的是用"美学"上令人满意的方式排版文档.
可以说,排版中最重要的是优美设计的字体.
HLATEX发行版包含10族(family)UHCPostScript字体和5族(family)文化部(Munhwabu10)字体(TrueType).
CJK宏包使用的字体是HLATEX较早版本里的,但它支持Bitstream'scyberbitTrueType字体.
使用HLATEX宏包来输入朝鲜文,只需把\usepackage{hangul}放到你的导言区即可.
这一命令激活了朝鲜文本地化支持.
章、节、子节、目录和图表目录都会被转换成相应的朝鲜文,而且使用朝鲜文的习惯来格式化文档.
这个宏包还提供了自动的"虚词选择"功能.
在朝鲜文里,有大量的这类语法上等价但是形式不同的后缀虚词,哪一个词组组合是正确的依赖于前面的音节是以元音还是以辅音结尾的.
(实际情况比这还要复杂,但上述描述足够给你一个大致的印象了)以朝鲜文为母语的人选择适合的虚词毫无问题,但是文档编辑中随时改变的参考文献以及其他自动文本就很难确定.
每一次你增删参考文献或者改变文档内容的顺序时,手工放置合适的虚词都是一件辛苦的工作.
HLATEX的用户就可以从这种烦人而且容易出错的工作中解放出来.
如果你不需要朝鲜文本地化,只是想要排版一些朝鲜文字,可以把放到导言区的命令换成:\usepackage{hfont}更多使用HLATEX排版朝鲜文的信息,请看HLATEXGuide.
访问KoreanTEXUserGroup(KTUG)的网页http://www.
ktug.
or.
kr/.
那里也有一份本手册的朝鲜语译本.
2.
5.
5用希腊文写作ByNikolaosPothitos使用希腊文(Greek)写作所需的导言内容参见表2.
6.
它们可以实现希腊文的断词和自动文本11.
对中古朝鲜文有了良好的支持.
9这些可以在language/korean/HLaTeX/,language/korean/CJK/和http://knot.
kaist.
ac.
kr/htex/取得.
10南朝鲜文化部.
11如果对inputenc宏包使用了utf8x选项,你可以排版希腊文和多声调希腊文的unicode字符.
2.
5国际语言支持25表2.
6–希腊文文档所需导言区.
\usepackage[english,greek]{babel}\usepackage[iso-8859-7]{inputenc}有一组新的命令可以让你更容易地输入希腊文.
为了暂时切换为英文或者相反,你可以使用命令\textlatin{englishtext}以及\textgreek{greektext},它们都只有一个参量,可以使用所要求的字体编码排版.
或者你也可以使用前面章节说过的命令\selectlanguage{.
.
.
}.
表2.
7列出了一些希腊文标点符号.
对于欧元符号,要使用\euro.
表2.
7–希腊文特殊字符.
;·;2.
5.
6斯拉夫文支持ByMaksymPolyakov版本为3.
7h的babel宏包包含了对T2*编码以及使用斯拉夫字母排版保加利亚文、俄文和乌克兰文的支持.
斯拉夫文的支持依赖于LATEX系统还有fontenc和inputenc宏包.
但是如果你要在数学模式下使用斯拉夫文,就必须在inputenc之前加载mathtext宏包12:\usepackage{mathtext}\usepackage[T1,T2A]{fontenc}\usepackage[koi8-ru]{inputenc}\usepackage[english,bulgarian,russian,ukranian]{babel}一般情况下,babel会自动选择的默认的字体编码,对于上面三种语文,应该是T2A.
然而,文档不会限制只使用一种字体编码.
对于有拉丁语系和斯拉夫语系的多语文文档,应该明确包含拉丁语文字体的编码.
在文档中,当选择另外一种语文的时候,babel会控制切换到合适的字体编码.
除了能够断词,翻译自动文本字符串,以及激活一些语文专用的排版规则(比如\frenchspacing),babel还提供了一些命令可以按照保加利亚文、俄文、或者乌克兰文的标准排版.
这三种语言专用的标点符号也被提供了:斯拉夫文本的破折号(它比拉丁语文的破折号略窄,周围有微小的空白)、直接引语用的破折号、引号、以及方便断词的命令,请参考表2.
8.
12如果使用了AMS-LATEX的宏包,相应的把它们放在fontenc和babel之前加载.
26文本排版表2.
8–babel的Bulgarian、Russian和Ukrainian选项一些额外的定义.
"|当前位置取消连字.
"-一个明确的断词符号,允许在单词的其他位置断词.
"---普通斯拉夫文本中的破折号.
"--合成的姓名(姓)中用的破折号.
"--*表示直接引语的斯拉夫文破折号.
""类似于"-,但是不产生连字号(用于合成词中,比如x-""y或者或者其他像"enable/disable"的符号).
"没有断开点的合成词标记.
"=带断开点的合成词标记,允许在构成单词里断词.
",短的空白,用于带断开点的姓的首字母.
"'用于德文里的左双引号(看起来像,,).
"'用于德文里的右双引号(看起来像").
"用于法文的右双引号(看起来像>>).
babel的Russian和Ukrainian选项定义了命令\Asbuk和\asbuk,它们的作用类似于\Alph和\alph,产生俄文和乌克兰文的大写和小写字母(无论文档的活动语言是哪一个).
babel的Bulgarian选项提供了命令\enumBul和\enumLat(\enumEng),它们可以让\Alph和\alph产生保加利亚文或者拉丁(英文)字母的大小写,默认为保加利亚文的.
2.
6单词间隔为了使输出的右边界对齐,LATEX在单词间插入不等的间隔.
在句子的末尾插入的空间稍多一些,因为这使得文本更具可读性.
LATEX假定句子以句号、问号或惊叹号结尾.
如果句号紧跟一个大写字母,它就不视为句子的结尾.
因为一般在有缩写的地方,才出现句号紧跟大写字母的情况.
作者必须详细说明这些假设中的任何一个例外.
空格前的反斜线符号产生一个不能伸长的空格.
波浪字符''也产生一个不能伸长的空格,并且禁止断行.
句号前的命令\@说明这个句号是句子的末尾,即使它紧跟一个大写字母.
Mr.
Smithwashappytoseeher\\cf.
Fig.
5\\IlikeBASIC\@.
WhataboutyouMr.
Smithwashappytoseehercf.
Fig.
5IlikeBASIC.
Whataboutyou命令\frenchspacing能禁止在句号后插入额外的空白,它告诉LATEX在句号后不要插入比正常字母更多的空白.
除了参考文献,这在非英语语言中非常普遍.
如果使用了\frenchspacing,命令\@就不必要了.
2.
7标题、章和节272.
7标题、章和节为便于读者理解,应该把文档划分为章,节和子节.
LATEX用专门的命令支持这个工作,这些命令把节的标题作为参量.
你的任务是按正确次序使用它们.

对article风格的文档,有下列分节命令:\section{.
.
.
}\subsection{.
.
.
}\subsubsection{.
.
.
}\paragraph{.
.
.
}\subparagraph{.
.
.
}如果想把文档分成几个部分而且不影响章节编号,你可以使用\part{.
.
.
}当你使用report或者book类的时候,可以用另外一个高层次的分节命令\chapter{.
.
.
}因为article类的文档不划分为章,所以很容易把它作为一章插入书籍中.
节之间的间隔,节的序号和标题的字号由LATEX自动设置.
分节的两个命令有些特别:命令\part不影响章的序号.
命令\appendix不带参量,只把章的序号改用为字母标记13.
LATEX在文档编译的最后一个循环中,提取节的标题和页码以生成目录.
命令\tableofcontents在其出现的位置插入目录.
为了得到正确的目录(tableofcontents)内容,一个新文档必须编译("LATEXed")两次.
有时还要编译第三次.
如有必要LATEX会告诉你.
上面列出的分节命令也以"带星"的形式出现.
"带星"的命令通过在命令名称后加*来实现.
它们生成的节标题既不出现于目录,也不带序号.
例如,命令\section{Help}的"带星"形式为\section*{Help}.
目录出现的标题,一般与输入的文本完全一致.
有时这是不可能的,因为标题太长排不进目录.
在这种情况下,目录的条目可由实际标题前的可选参量确定.
\chapter[Titleforthetableofcontents]{Alongandespeciallyboringtitle,showninthetext}13对article类文档改变节的序号.
28文本排版整篇文档的标题(title)由命令\maketitle产生.
标题的内容必须在调用\maketitle以前,由命令\title{.
.
.
},\author{.
.
.
}和可选的\date{.
.
.
}定义.
在命令\author的参量中,可以输入几个用\and命令分开的名字.
在第6页的图1.
2中,能找到有关上述命令的一个例子.
除了上面解释的分节命令,LATEX2ε引进了其他三个命令用于book风格的文档.
它们对划分出版物有用,也能如愿改变章的标题和页码:\frontmatter应接着命令\begin{document}使用.
它把页码更换为罗马数字,而且章节不计数.
当你使用带星的分节命令(例如,\chapter*{Preface})时,这些章节就不会出现在目录里.
\mainmatter应出现在书的第一章前面.
它启用阿拉伯数字的页码计数器,并对页码重新计数.
\appendix标志书中附录材料的开始.
该命令后的各章序号改用字母标记.
\backmatter应该插入与书中最后一部分内容的前面,如参考文献和索引.
在标准文档类型中,它对页面没有什么效果.
2.
8交叉引用在书籍、报告和论文中,需要对图、表和文本的特殊段落进行交叉引用(cross-references).
LATEX提供了如下交叉引用命令\label{marker},\ref{marker}和\pageref{marker}其中marker是用户选择的标识符.
如果在节、子节、图、表或定理后面输入\label命令,LATEX把\ref替换为相应的序号.
\pageref命令排印\label输入处的页码14.
和章节标题一样,使用的序号是前面编译所产生.
Areferencetothissubsection\label{sec:this}lookslike:''seesection\ref{sec:this}onpage\pageref{sec:this}.
''Areferencetothissubsectionlookslike:"seesection2.
8onpage28.
"14注意这些命令对它们指向什么并没有意识.
命令\label只是保存了上一次自动产生的序号.
2.
9脚注292.
9脚注命令\footnote{footnotetext}把脚注内容排印于当前页的页脚位置.
脚注命令总是置于(put)15其指向的单词或句子的后面.
脚注是一个句子或句子的一部分,所以应用逗号或句号结尾16.
Footnotes\footnote{Thisisafootnote.
}areoftenusedbypeopleusing\LaTeX.
FootnotesaareoftenusedbypeopleusingLATEX.
aThisisafootnote.
2.
10强调如果文本是用打字机键入的,用下划线来强调重要的单词.
\underline{text}但是在印刷的书中,用一种斜体字体排印要强调的单词.
LATEX提供命令\emph{text}来强调文本.
这些命令对其参量的实际作用效果依赖于它的上下文:\emph{Ifyouuseemphasizinginsideapieceofemphasizedtext,then\LaTeX{}usesthe\emph{normal}fontforemphasizing.
}Ifyouuseemphasizinginsideapieceofem-phasizedtext,thenLATEXusesthenormalfontforemphasizing.
请注意要求LATEX强调什么和要求它使用不同字体的不同效果:\textit{Youcanalso\emph{emphasize}textifitissetinitalics,}\textsf{ina\emph{sans-serif}font,}\texttt{orin\emph{typewriter}style.
}Youcanalsoemphasizetextifitissetinitalics,inasans-seriffont,orintypewriterstyle.
15"put"是最常使用的英文单词之一.
16注意,脚注把读者的注意力从文档的正文引开.
我们是好奇的动物,每个人都会阅读脚注.
所以为什么不把你想说的所有东西都写入正文中1717路标不必走向它指向的地方:-).
30文本排版2.
11环境为了排版专用的文本,LATEX定义了各种不同格式的环境(environment):\begin{environment}text\end{environment}其中environment是环境的名称.
只要保持调用顺序,环境可以嵌套.
\begin{aaa}.
.
.
\begin{bbb}.
.
.
\end{bbb}.
.
.
\end{aaa}下面的章节对所有重要的环境都做了解释.
2.
11.
1Itemize、Enumerate和Descriptionitemize环境适用于简单的列表,enumerate环境适用于有排列序号的列表,而description环境用于带描述的列表.
\flushleft\begin{enumerate}\itemYoucanmixthelistenvironmentstoyourtaste:\begin{itemize}\itemButitmightstarttolooksilly.
\item[-]Withadash.
\end{itemize}\itemThereforeremember:\begin{description}\item[Stupid]thingswillnotbecomesmartbecausetheyareinalist.
\item[Smart]things,though,canbepresentedbeautifullyinalist.
\end{description}\end{enumerate}1.
Youcanmixthelistenvironmentstoyourtaste:Butitmightstarttolooksilly.
-Withadash.
2.
Thereforeremember:Stupidthingswillnotbecomesmartbecausetheyareinalist.
Smartthings,though,canbepresentedbeautifullyinalist.
2.
11.
2左对齐、右对齐和居中flushleft和flushright环境分别产生左对齐(left-aligned)和右对齐(right-aligned)的段落.
center环境产生居中的文本.
如果你不输入命令\\指定断行点,LATEX将自行决定.
\begin{flushleft}Thistextis\\left-aligned.
\LaTeX{}isnottryingtomakeeachlinethesamelength.
\end{flushleft}Thistextisleft-aligned.
LATEXisnottryingtomakeeachlinethesamelength.
2.
11环境31\begin{flushright}Thistextisright-\\aligned.
\LaTeX{}isnottryingtomakeeachlinethesamelength.
\end{flushright}Thistextisright-aligned.
LATEXisnottryingtomakeeachlinethesamelength.
\begin{center}Atthecentre\\oftheearth\end{center}Atthecentreoftheearth2.
11.
3引用、语录和韵文quote环境可以用于引文、语录和例子.
Atypographicalruleofthumbforthelinelengthis:\begin{quote}Onaverage,nolineshouldbelongerthan66characters.
\end{quote}Thisiswhy\LaTeX{}pageshavesuchlargebordersbydefaultandalsowhymulticolumnprintisusedinnewspapers.
Atypographicalruleofthumbforthelinelengthis:Onaverage,nolineshouldbelongerthan66characters.
ThisiswhyLATEXpageshavesuchlargebordersbydefaultandalsowhymulticol-umnprintisusedinnewspapers.
有两个类似的环境:quotation和verse环境.
quotation环境用于超过几段的较长引用,因为它对段落进行缩进.
verse环境用于诗歌,在诗歌中断行很重要.
在一行的末尾用\\断行,在每一段后留一空行.
IknowonlyoneEnglishpoembyheart.
ItisaboutHumptyDumpty.
\begin{flushleft}\begin{verse}HumptyDumptysatonawall:\\HumptyDumptyhadagreatfall.
\\AlltheKing'shorsesandalltheKing'smen\\Couldn'tputHumptytogetheragain.
\end{verse}\end{flushleft}IknowonlyoneEnglishpoembyheart.
ItisaboutHumptyDumpty.
HumptyDumptysatonawall:HumptyDumptyhadagreatfall.
AlltheKing'shorsesandalltheKing'smenCouldn'tputHumptytogetheragain.
2.
11.
4摘要科学出版物惯常以摘要开始,来给读者一个综述或者预期.
LATEX为此提供了abstract环境.
一般abstract用于article类文档.
\begin{abstract}Theabstractabstract.
\end{abstract}Theabstractabstract.
32文本排版2.
11.
5原文打印位于\begin{verbatim}和\end{verbatim}之间的文本将直接打印,包括所有的断行和空白,就像在打字机上键入一样,不执行任何LATEX命令.
在一个段落中,类似的功能可由\verb+text+完成.
+仅是分隔符的一个例子.
除了*或空格,可以使用任意一个字符.
这个小册子中的许多例子是用这个命令排印的.
The\verb|\ldots|command\ldots\begin{verbatim}10PRINT"HELLOWORLD";20GOTO10\end{verbatim}The\ldotscommand.
.
.
10PRINT"HELLOWORLD";20GOTO10\begin{verbatim*}thestarredversionoftheverbatimenvironmentemphasizesthespacesinthetext\end{verbatim*}thestarredversionoftheverbatimenvironmentemphasizesthespacesinthetext带星的命令\verb能以类似的方式使用:\verb*|likethis:-)|likethis:-)verbatim环境和\verb命令不能在其他命令的参数中使用.
2.
11.
6表格tabular环境能用来排版带有水平和垂直表线的漂亮表格(table).
LATEX自动确定每一列的宽度.
命令\begin{tabular}[pos]{tablespec}的参量tablespec定义了表格的格式.
用一个l产生左对齐的列,用一个r产生右对齐的列,用一个c产生居中的列;用p{width}产生相应宽度、包含自动断行文本的列;|产生垂直表线.
如果一列里的文本太宽,LATEX不会自动折行显示.
使用p{width}你可以定义如一般段落里折行效果的列.
参量pos设定相对于环绕文本基线的垂直位置.
使用字母t、b和c来设定表格靠上、靠下或者居中放置.
在tabular环境中,用&跳入下一列,用\\开始新的一行,用\hline插入水平表线.
用\cline{j-i}可添加部分表线,其中j和i分别表示表线的起始列和终止列的序号.
2.
11环境33\begin{tabular}{|r|l|}\hline7C0&hexadecimal\\3700&octal\\\cline{2-2}11111000000&binary\\\hline\hline1984&decimal\\\hline\end{tabular}7C0hexadecimal3700octal11111000000binary1984decimal\begin{tabular}{|p{4.
7cm}|}\hlineWelcometoBoxy'sparagraph.
Wesincerelyhopeyou'llallenjoytheshow.
\\\hline\end{tabular}WelcometoBoxy'sparagraph.
Wesincerelyhopeyou'llallenjoytheshow.
表格的列分隔符可由@{.
.
.
}构造.
这个命令去掉表列之间的间隔,代之为两个花括号间的内容.
一个用途在于下面要解释的十进制数对齐问题.
另一个可能应用在于用@{}压缩表列右端空间.
\begin{tabular}{@{}l@{}}\hlinenoleadingspace\\\hline\end{tabular}noleadingspace\begin{tabular}{l}\hlineleadingspaceleftandright\\\hline\end{tabular}leadingspaceleftandright由于没有内建机制使十进制数按小数点对齐18,我们可以使用两列"作弊"达到这个目的:整数向右,小数向左对齐.
\begin{tabular}行中的命令@{.
}用一个".
"取代了列间正常间隔,从而给出了按小数点列对齐的效果.
不要忘记用列分隔符(&)取代十进制小数点!
使用命令\multicolumn可在数值"列"上放置一个列标签.
\begin{tabular}{cr@{.
}l}Piexpression&\multicolumn{2}{c}{Value}\\\hline$\pi$&3&1416\\$\pi^{\pi}$&36&46\\$(\pi^{\pi})^{\pi}$&80662&7\\\end{tabular}PiexpressionValueπ3.
1416ππ36.
46(ππ)π80662.
718如果系统安装了'tools'包,请看一下宏包dcolumn.
34文本排版\begin{tabular}{|c|c|}\hline\multicolumn{2}{|c|}{Ene}\\\hlineMene&Muh!
\\\hline\end{tabular}EneMeneMuh!
用表格环境排印的材料总是呆在同一页上.
如果要排印一个长表格,可以看一下supertabular和longtabular环境.
2.
12浮动体今天大多数出版物含有许多图片和表格.
由于不能把它们分割在不同的页面上,所以需要专门的处理.
如果一个图片或一个表格太大在当前页面排不下,一个解决办法就是每次新开一页.
这个方法在页面上留下部分空白,效果看起来很差.

对于在当前排不下的任何一个图片或表格,其解决办法是把它们"浮动"到下一页,与此同时当前页面用正文文本填充.
LATEX提供了两个浮动体(oatingbodies)环境;一个用于图片,一个用于表格.
要充分发挥这两个环境的优越性,应该大致了解LATEX处理浮动体的内在原理.
但是浮动可能成为令人沮丧的主要原因,因为LATEX总不把浮动体放在你想要的位置.
首先看一下供浮动使用的LATEX命令:包含在figure环境或table环境中的任何材料都将被视为浮动内容.
两个浮动环境都支持可选参数\begin{figure}[placementspecier]或\begin{table}称为placementspecier,它由浮动许可放置参数写成的字符串组成.
请见表2.
9.
这个参数用于告诉LATEX浮动体可以被移放的位置.
一个placementspecier由一串浮动体许可放置位置(oat-placingpermissions)构成.
参见表2.
9.
一个表格可以由如下命令,例如\begin{table}[!
hbp]表2.
9–浮动体放置许可.
Spec浮动体许可放置位置……hhere在文本的确切位置上,对于小的浮动体很有用.
t在页面的顶部(top)b在页面的底部(bottom)p在一个只有浮动体的专门的页面(page)上.
!
忽略阻止浮动体放置的大多数内部参数a.
注意pt和em是TEX单位.
请阅读第92页上表6.
5更多有关的更多内容.
a例如一页上所允许的浮动体的最大数目.
2.
12浮动体35开始,placementspecier[!
hbp]允许LATEX把表格就放当前页,或放在某页的底部(b),或放在一个专门的浮动页上(p),严格按照放置说明符放置即使看起来不好(!
).
如果没有给定放置说明符,缺省值为[tbp].
LATEX将按照作者提供的placementspecier,安排它遇到的每一个浮动体.
如果浮动体在当前页不能安排,就把它寄存在图片或表格等待队列中19.
当新的一页开始的时候,LATEX首先检查是否可能用等待队列中的浮动体填充一个专门的"浮动"页面.
如果这不可能,就像对待刚在文本中出现的浮动体一样,处理等待队列中的第一个浮动体:LATEX重新尝试按照其相应的放置说明符(除了不再可能的'h')来处理它.
文本中出现的任何一个新浮动体寄存在相应的等待队列中.
对于每一种浮动体,LATEX保持它们出现的顺序.
这就说明了为什么一个不能安排的图片把所有后来的图片都推到文档末尾的原因.
所以:如果LATEX没有像你期望的那样安排浮动体,那么经常是仅有一个浮动体堵塞了两个等待队列中的某一个.
仅给定单个placementspeciers是允许的,但这会引起问题.
如果在指定的位置安排不了,它就会成为障碍,堵住后续的浮动体.
不要单独使用参数[h],在LATEX最近的版本中,它的效果太差了以至于被[ht]自动替换.
虽然对浮动体问题已经作了些说明,对table和figure环境还有些内容要交代.
使用\caption{captiontext}命令,可以给浮动体定义一个标题.
序号和字符串"图"或"表"将由LATEX自动添加.
两个命令\listoffigures和\listoftables用起来和\tableofcontents命令类似,分别排版一个图形目录和表格目录.
在这些目录中,所有的标题都将重复.
如果打算使用长标题,就必须准备一个能放进目录的,较短版本的标题.
即在\caption命令后面的括号内输入较短版本的标题.
\caption[Short]{LLLLLoooooonnnnnggggg}利用\label和\ref,在文本中可以为浮动体创建交叉引用.
下面的例子画一个方形,并将它插入文档.
如果想在完成的文档中为你打算嵌入的图片保留空间,你可以利用这个例子.
Figure\ref{white}isanexampleofPop-Art.
\begin{figure}[!
hbp]\makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}}\caption{FivebyFiveinCentimetres.
\label{white}}\end{figure}在上面的例子中,为了把图片就放在当前位置(h)20,LATEX尝试得很辛苦(!
).
如果这不可能,它将试图把图片安排在页面的底部(b).
如果不能将图片安排在19它们是"先来先走"队列!
20假设图片的等待队列已空.
36文本排版当前页面,它将决定是否可能开一个浮动页面以放置这张图片或来自表格等待队列中的一些表格.
如果没有足够的材料来填充一个专门浮动页面,LATEX就开一个新页,像对文本中刚出现的图片一样,再一次处理这个图片.
在一些情况下,可能需要使用命令\clearpage或者甚至是\cleardoublepage它命令LATEX立即放置等待队列中所有剩下的浮动体,并且开一新页.
命令\cleardoublepage甚至会命令LATEX新开奇数页面.
在本书的后面,将介绍如何在LATEX2ε文档中插入PostScript图形.
2.
13保护脆弱命令作为命令(如\caption或\section)参量的文本,可能在文档中出现多次(例如,在文档的目录和正文中).
当用于类似\section的参量时,一些命令会失效.
它们被称为脆弱命令(fragilecommands).
\footnote或\phantom是脆弱命令的例子.
这些脆弱命令需要的,正是保护.
把\protect命令放在它们前面,就能保护它们.
\protect仅仅保护紧跟其右侧的命令,连它的参量也不惠及.
在大多数情形下,过多的\protect并不碍事.
\section{Iamconsiderate\protect\footnote{andprotectmyfootnotes}}Chapter3数学公式现在你已经准备好了.
那么在这一章里,让我们来着手于TEX的强大之处:数学排版.
但是,要提醒你的是,本章只是浅尝辄止.
可对很多人来说,这里所讲述的内容已很受用,如果你在这里找不到你所需数学排版的解决方案的话,也请不要灰心.
极有可能在AMS-LATEX1中能找到针对你的问题的某个解决方案.
3.
1综述LATEX使用一种特有的模式来排版数学(mathematics)公式.
数学公式允许以行间形式排版在一个段落之中,也可以以独立形式排版,此时段落可能会被拆开.
处于段内的数学文本要放在\(与\)之间,$与$之间,或者\begin{math}与\end{math}之间.
Add$a$squaredand$b$squaredtoget$c$squared.
Or,usingamoremathematicalapproach:$c^{2}=a^{2}+b^{2}$Addasquaredandbsquaredtogetcsquared.
Or,usingamoremathematicalapproach:c2=a2+b2\TeX{}ispronouncedas\(\tau\epsilon\chi\).
\\[6pt]100m$^{3}$ofwater\\[6pt]Thiscomesfrommy\begin{math}\heartsuit\end{math}TEXispronouncedasτχ.
100m3ofwaterThiscomesfrommy当你希望把自己的一些较长的数学方程或是公式单独的放在段落之外的时候,那么你最好显示(display)它们,而不要拆开此段落.
为此,你可以把它们放在\[与\]之间,或者\begin{displaymath}与\end{displaymath}之间.
1美国数学学会制作了一个强大的LATEX扩展.
本章的很多例子都使用了这个扩展.
所有最近的TEX发行版中都提供了这个扩展.
如果你的系统中没有,可以去macros/latex/required/amslatex找找看.
38数学公式Add$a$squaredand$b$squaredtoget$c$squared.
Or,usingamoremathematicalapproach:\begin{displaymath}c^{2}=a^{2}+b^{2}\end{displaymath}oryoucantypelesswith:\[a+b=c\]Addasquaredandbsquaredtogetcsquared.
Or,usingamoremathematicalapproach:c2=a2+b2oryoucantypelesswith:a+b=c如果你希望LATEX给你的方程编上号,你可以使用equation环境.
然后你就可以用\label来给一个方程加上标签并在文中的某处用\ref或amsmath宏包中的\eqref命令来引用它.
\begin{equation}\label{eq:eps}\epsilon>0\end{equation}From(\ref{eq:eps}),wegather\ldots{}From\eqref{eq:eps}wedothesame.
>0(3.
1)From(3.
1),wegather.
.
.
From(3.
1)wedothesame.
注意一下公式排版样式的不同,前者是行间式样,后者是显示式样:$\lim_{n\to\infty}\sum_{k=1}^n\frac{1}{k^2}=\frac{\pi^2}{6}$limn→∞∑nk=11k2=π26\begin{displaymath}\lim_{n\to\infty}\sum_{k=1}^n\frac{1}{k^2}=\frac{\pi^2}{6}\end{displaymath}limn→∞n∑k=11k2=π26数学模式和文本模式都一些不同之处.
例如,在数学模式中:1.
大多数的空格和断行没有任何意义,而且所有的空隙要么是从相应数学表达式中自然的生成,要么是用一些专门的命令来指定,如\,,\quad或\qquad.
2.
空白行是不允许的.
每个公式只能为一段.
3.
每一个字母都会被认为是一个变量名,且会相应被排版为此种样式.
如果你想要在公式中排版普通的文本(直立字体和普通字距),那么你必须要把这些文本放在\textrm{.
.
.
}命令中(参阅第45页的第3.
7节).
\begin{equation}\forallx\in\mathbf{R}:\qquadx^{2}\geq0\end{equation}x∈R:x2≥0(3.
2)\begin{equation}x^{2}\geq0\qquad\textrm{forall}x\in\mathbf{R}\end{equation}x2≥0forallx∈R(3.
3)3.
2数学模式的群组39数学家对于符号的使用总是吹毛求疵:这里习惯上要使用空心粗体("blackboardbold"),要包含此字体,得用到amsfonts或是amssymb宏包的\mathbb命令.
上面的例子就变成\begin{displaymath}x^{2}\geq0\qquad\textrm{forall}x\in\mathbb{R}\end{displaymath}x2≥0forallx∈R3.
2数学模式的群组大部分数学模式的命令只对其后的一个字符有效,因此,如果你希望一个命令对多个字符起作用,你必须把它们放在一个群组中,使用花括号:{.
.
.
}.
\begin{equation}a^x+y\neqa^{x+y}\end{equation}ax+y=ax+y(3.
4)3.
3数学公式的基本元素这一节将介绍数学排版中的最重要的一些命令.
详细的数学排版符号的命令列表,可参阅第48页第3.
10节.
小写希腊字母(Greekletters)的输入为\alpha、\beta、\gamma……,大写字母的输入为\Gamma、\Delta……2$\lambda,\xi,\pi,\mu,\Phi,\Omega$λ,ξ,π,,Φ,指数和下标可以能过使用^和_两个符号来指定.
$a_{1}$\qquad$x^{2}$\qquad$e^{-\alphat}$\qquad$a^{3}_{ij}$\\$e^{x^2}\neq{e^x}^2$a1x2eαta3ijex2=ex2平方根(squareroot)输入用\sqrt;n次根用\sqrt[n]来得到.
根号的大小由LATEX自动决定.
如果仅仅需要根号,可以用\surd得到.
$\sqrt{x}$\qquad$\sqrt{x^{2}+\sqrt{y}}$\qquad$\sqrt[3]{2}$\\[3pt]$\surd[x^2+y^2]$√x√x2+√y3√2√[x2+y2]命令\overline和\underline产生水平线,它们会被放在表达式的正上方或是正下方.
2LATEX2ε中没有定义大写的Alpha,因为它外形与罗马字母A一样.
等到新的数学编码完成后,情形可能会有所更改.
40数学公式$\overline{m+n}$m+n命令\overbrace和\underbrace可以在一个表达式的上方或下方生成水平括号$\underbrace{a+b+\cdots+z}_{26}$a+bz26为了给变量增加数学重音符号,如小箭头或是(tilde),你可以使用第48页表3.
1所列出的命令.
覆盖多个字符的宽"帽子"和宽号,可以由\widehat和\widetilde得到.
'符号则给出了一个撇号(prime).
\begin{displaymath}y=x^{2}\qquady'=2x\qquady''=2\end{displaymath}y=x2y=2xy=2向量可以通过在一个变量上方添加小箭头(arrowsymbols)来指定.
为此,使用\vec命令即可.
\overrightarrow和\overleftarrow这两个命令可以用来表示一个从A到B的向量.
\begin{displaymath}\veca\quad\overrightarrow{AB}\end{displaymath}a→AB通常你没有必要打出一个明显的点号来表明乘法运算;但是有时候也需要它来帮助读者分清一个公式.
在这些情况下,你应该使用\cdot命令.
\begin{displaymath}v={\sigma}_1\cdot{\sigma}_2{\tau}_1\cdot{\tau}_2\end{displaymath}v=σ1·σ2τ1·τ2log等类似的函数名通常是用直立字体,而不是如同变量一样用斜体,因此LATEX提供了以下的命令来排版这些最重要的函数名:\arccos\cos\csc\exp\ker\limsup\arcsin\cosh\deg\gcd\lg\ln\arctan\cot\det\hom\lim\log\arg\coth\dim\inf\liminf\max\sinh\sup\tan\tanh\min\Pr\sec\sin\[\lim_{x\rightarrow0}\frac{\sinx}{x}=1\]limx→0sinxx=1对于取模函数(modulofunction),有两个命令:\bmod用于二元运算"amodb",而\pmod则用于表达式如"x≡a(modb)".
3.
3数学公式的基本元素41$a\bmodb$\\$x\equiva\pmod{b}$amodbx≡a(modb)一个上下的分式(fraction)可用\frac{命令得到.
而其倾斜形式如1/2,有时是更好的选择,因为对于简短的分子分母来说,这看上去更美观.

$1\frac{1}{2}$hours\begin{displaymath}\frac{x^{2}}{k+1}\qquadx^{\frac{2}{k+1}}\qquadx^{1/2}\end{displaymath}112hoursx2k+1x2k+1x1/2排版二项式系数或类似的结构,你可以使用amsmath宏包中的\binom命令.
\begin{displaymath}\binom{n}{k}\qquad\mathrm{C}_n^k\end{displaymath}(nk)Ckn对于二元关系,有时候你需要到把符号互相堆积起来.
\stackrel命令会把其第一个参数中的符号以上标大小放在第二个上面,而第二个符号则以正常的位置摆放.
\begin{displaymath}\intf_N(x)\stackrel{!
}{=}1\end{displaymath}∫fN(x)!
=1积分号(integraloperator)可以用\int产生,求和号(sumoperator)用\sum命令,而乘积号(productoperator)要用\prod命令.
上限和下限用^和_来指定,如同上标与下标一样3.
\begin{displaymath}\sum_{i=1}^{n}\qquad\int_{0}^{\frac{\pi}{2}}\qquad\prod_\epsilon\end{displaymath}n∑i=1∫π20∏为了更好的控制一个复杂表达式中指标的放置,amsmath提供了两个额外的工具:\substack命令和subarray环境:\begin{displaymath}\sum_{\substack{0c$}\\b+x&\textrm{inthemorning}\\l&\textrm{alldaylong}\end{array}\right.
\end{displaymath}y={aifd>cb+xinthemorninglalldaylong就像在tabular环境中一样,你也可以在array环境中画线,如分隔矩阵中元素:44数学公式\begin{displaymath}\left(\begin{array}{c|c}1&2\\\hline3&4\end{array}\right)\end{displaymath}(1234)对于跨行的长公式或是方程组(equationsystem),你可以使用eqnarray和eqnarray*环境来替代equation环境.
在eqnarray环境中每一行都有一个等式编号.
eqnarray*则不添加编号.
eqnarray和eqnarray*环境的用法与一个{rcl}形式的3列表格相类似,这里中间一列可以用来放等号,不等号,或者是其他你选择的符号.
\\命令可以断行.
\begin{eqnarray}f(x)cosx\\f'(x)sinx\\\int_{0}^{x}f(y)dy&=&\sinx\end{eqnarray}f(x)=cosx(3.
5)f(x)=sinx(3.
6)∫x0f(y)dy=sinx(3.
7)注意,这里等号两边空白都有些大.
\setlength\arraycolsep{2pt}可以调小它,比如在下一个例子里.
长等式不能被分成合适的小段.
作者必须指定在哪里断且如何缩进.
以下两种方法是最常用的.
{\setlength\arraycolsep{2pt}\begin{eqnarray}\sinx&=&x-\frac{x^{3}}{3!
}+\frac{x^{5}}{5!
}-{}\nonumber\\&&{}-\frac{x^{7}}{7!
}+{}\cdots\end{eqnarray}}sinx=xx33!
+x55!
x77!
3.
8)\begin{eqnarray}\lefteqn{\cosx=1-\frac{x^{2}}{2!
}+{}}\nonumber\\&&{}+\frac{x^{4}}{4!
}-\frac{x^{6}}{6!
}+{}\cdots\end{eqnarray}cosx=1x22!
++x44!
x66!
3.
9)\nonumber命令告诉LATEX不要给这个等式编号.
用这种方法很难让等式正确的垂直对齐;amsmath宏包提供了一系列强有力的替代选择(参见align,flalign,gather,multline和split环境).
3.
6虚位453.
6虚位我们看不见虚位(phantom,也有幻影的意思),但是在许多人的头脑中它们依然占有一定的位置.
LATEX中也一样.
我们可以使用它来实现一些有趣的小技巧.
当使用^和_时,LATEX对文本的垂直对齐有时显得太过于自作多情.
使用\phantom命令你可以给不在最终输出中显示的字符保留位置.
理解此意的最好方法是看下面的例子.
\begin{displaymath}{}^{12}_{\phantom{1}6}\textrm{C}\qquad\textrm{versus}\qquad{}^{12}_{6}\textrm{C}\end{displaymath}126Cversus126C\begin{displaymath}\Gamma_{ij}^{\phantom{ij}k}\qquad\textrm{versus}\qquad\Gamma_{ij}^{k}\end{displaymath}ΓkijversusΓkij3.
7数学字体尺寸在数学模式中,TEX根据上下文选择字体大小.
例如,上标会排版成较小的字体.
如果你想要把等式的一部分排版成罗马字体,不要用\textrm命令,只因\textrm会暂时切换到文本模式,而此时字体大小切换机制将不起作用.
使用\mathrm来保持字体大小切换机制的正常.
但是要小心,\mathrm只对较短的项有效.
空格依然无效而且重音符号也不起作用5.
\begin{equation}2^{\textrm{nd}}\quad2^{\mathrm{nd}}\end{equation}2nd2nd(3.
10)有时你仍需告诉LATEX正确的字体大小.
在数学模式中,可用以下四个命令来设定:\displaystyle(123),\textstyle(123),\scriptstyle(123)and\scriptscriptstyle(123).
改变样式也会影响到上下限的显示方式.
\begin{displaymath}\frac{\displaystyle\sum_{i=1}^n(x_i-\overlinex)(y_i-\overliney)}{\displaystyle\biggl[\sum_{i=1}^n(x_i-\overlinex)^2\sum_{i=1}^n(y_i-\overliney)^2\biggr]^{1/2}}\end{displaymath}n∑i=1(xix)(yiy)[n∑i=1(xix)2n∑i=1(yiy)2]1/25AMS-LATEX(amsmath)宏包可以让\textrm命令与字体大小切换机制和谐共存.
46数学公式这个例子中的括号要比\left[\right]提供的括号更大些.
\biggl和\biggr命令分别对应于左和右括号.
3.
8定理、定律……当写数学文档时,你可能需要一种方法来排版"引理"、"定义"、"公理"及其他类似的结构.
\newtheorem{name}[counter]{text}[section]参量name是用来标识"定理"的短关键字.
而参数text才是真正的"定理"名,它会在最终的文档中被打印出来.
方括号中是可选参量.
两者都均用来指定"定理"的编号问题.
使用counter参数来指定先前声明的"定理"的name.
则此新的"定理"将与先前定理统一编号.
section参数让你来指定章节单元,而"定理"会按相应的章节层次来编号.
在你的文档的导言区执行\newtheorem命令后,你就可以在文档中使用以下命令了.
\begin{name}[text]Thisismyinterestingtheorem\end{name}amsthm宏包提供了\newtheoremstyle{style}命令,通过从三个预定义样式中选择其一来定义定理的外观,三个样式分别为:definition(标题粗体,内容罗马体),plain(标题粗体,内容斜体)和remark(标题斜体,内容罗马体).
理论上已经说够多了,下面我们联系一下实践,这个例子希望能够带走你的疑问并让你知道\newtheorem环境其实比较复杂且不易理解.
首先定义定理环境\theoremstyle{definition}\newtheorem{law}{Law}\theoremstyle{plain}\newtheorem{jury}[law]{Jury}\theoremstyle{remark}\newtheorem*{marg}{Margaret}\begin{law}\label{law:box}Don'thideinthewitnessbox\end{law}\begin{jury}[TheTwelve]Itcouldbeyou!
Sobewareandseelaw\ref{law:box}\end{jury}\begin{marg}No,No,No\end{marg}Law1.
Don'thideinthewitnessboxJury2(TheTwelve).
Itcouldbeyou!
Sobewareandseelaw1Margaret.
No,No,No"Jury"定理与"Law"定理共用了同一个计数器,因此它的编号与其他"Law"定理的编号是顺序下来的.
方括号中的参量用来指定定理的一个标题或是其他类似的内容.
3.
9粗体符号47\flushleft\newtheorem{mur}{Murphy}[section]\begin{mur}Iftherearetwoormorewaystodosomething,andoneofthosewayscanresultinacatastrophe,thensomeonewilldoit.
\end{mur}Murphy3.
8.
1.
Iftherearetwoormorewaystodosomething,andoneofthosewayscanresultinacatastrophe,thensomeonewilldoit.
"Murphy"定理有一个与当前章节相联系的编号.
你也可以使用其他的单元,如章(chapter)或小节(subsection).
amsthm还提供了一个proof环境.
\begin{proof}Trivial,use\[E=mc^2\]\end{proof}Proof.
Trivial,useE=mc2使用\qedhere命令你可以移动"证毕"符.
"证毕"符默认是在证明结束时单独放于一行.
\begin{proof}Trivial,use\[E=mc^2\qedhere\]\end{proof}Proof.
Trivial,useE=mc23.
9粗体符号在LATEX中要得到粗体符号相当的不容易;这也许是故意设置的,以防业余水平的排版者过度的使用它们.
字体变换命令\mathbf可得到粗体字母,但是得到的是罗马体(直立的)而数学符号通常要求是斜体.
还有一个\boldmath命令,但是它只能用在数学模式之外.
它不仅作用于字母也作用于符号.
\begin{displaymath}\mu,M\qquad\mathbf{M}\qquad\mbox{\boldmath$\mu,M$}\end{displaymath},MM,M请注意,逗号也成粗体了,这也许不是所需的.
使用amsbsy宏包(包含在amsmath中)或tool宏包集中的bm将会便利许多,因为它们包含一个叫\boldsymbol的命令.
\begin{displaymath}\mu,M\qquad\boldsymbol{\mu},\boldsymbol{M}\end{displaymath},M,M48数学公式3.
10数学符号表以下表格列出了数学模式中的所有常用符号.
要使用表3.
11–3.
156.
必须在导言区先载入amssymb宏包而且系统中安装了AMS数学字体.
如果系统中没有安装AMS宏包和字体,请查阅macros/latex/required/amslatex.
更全面的列表可于info/symbols/comprehensive处找到.
表3.
1–数学模式重音符号.
a\hat{a}ˇa\check{a}a\tilde{a}`a\grave{a}˙a\dot{a}¨a\ddot{a}a\bar{a}a\vec{a}A\widehat{A}a\acute{a}a\breve{a}A\widetilde{A}表3.
2–希腊字母.
α\alphaθ\thetaooυ\upsilonβ\beta\varthetaπ\piφ\phiγ\gammaι\iota\varpi\varphiδ\deltaκ\kappaρ\rhoχ\chi\epsilonλ\lambda\varrhoψ\psiε\varepsilon\muσ\sigmaω\omegaζ\zetaν\nu\varsigmaη\etaξ\xiτ\tauΓ\GammaΛ\LambdaΣ\SigmaΨ\Psi\DeltaΞ\XiΥ\Upsilon\OmegaΘ\ThetaΠ\PiΦ\Phi6这些表格源自于DavidCarlisle的symbols.
tex,而后在JosefTkadlec的建议下作了较大的改动.
3.
10数学符号表49表3.
3–二元关系.
你可以在下列符号的相应命令前加上\not命令,而得到其否定形式.
≤\leqor\le≥\geqor\ge≡\equiv\ll\gg.
=\doteq\prec\succ\sim\preceq\succeq\simeq\subset\supset≈\approx\subseteq\supseteq=\cong\sqsubseta\sqsupsetaI\Joina\sqsubseteq\sqsupseteq\bowtie∈\in\ni,\owns∝\propto\vdash\dashv|=\models|\mid\parallel⊥\perp\smile\frown\asymp::/∈\notin=\neqor\nea使用latexsym宏包才能得到这个符号表3.
4–二元运算符.
++-±\pm\mp\triangleleft·\cdot÷\div\triangleright*\times\\setminus\star∪\cup∩\cap\ast\sqcup\sqcap\circ∨\vee,\lor∧\wedge,\land\bullet\oplus\ominus\diamond\odot\oslash\uplus\otimes\bigcirc\amalg\bigtriangleup\bigtriangledown\dagger\lhda\rhda\ddagger\unlhda¤\unrhda\wr表3.
5–"大"运算符.
∑\sum∪\bigcup∨\bigvee∏\prod∩\bigcap∧\bigwedge\coprod\bigsqcup\biguplus∫\int∮\oint⊙\bigodot\bigoplus\bigotimes50数学公式表3.
6–箭头.
←\leftarrowor\gets←\longleftarrow→\rightarrowor\to→\longrightarrow\leftrightarrow←→\longleftrightarrow\Leftarrow=\Longleftarrow\Rightarrow=\Longrightarrow\Leftrightarrow\Longleftrightarrow→\mapsto→\longmapsto←\hookleftarrow→\hookrightarrow\leftharpoonup\rightharpoonup\leftharpoondown\rightharpoondown\rightleftharpoons\iff(biggerspaces)↑\uparrow↓\downarrow\updownarrow\Uparrow\Downarrow\Updownarrow\nearrow\searrow\swarrow\nwarrowY\leadstoaa使用latexsym宏包才能得到这个符号表3.
7–定界符.
uparrow[[or\lbrack]]or\rbrack↓\downarrow{\{or\lbrace}\}or\rbrace\updownarrow\langle\rangle||or\vert\lfloor\rfloor\lceil//\\backslash\Updownarrow\Uparrow\Downarrow\|or\Vert\rceil表3.
8–大定界符.
\lgroup\rgroup\lmoustache\arrowvert\Arrowvert\bracevert\rmoustache3.
10数学符号表51表3.
9–其他符号.
.
.
.
\dots···\cdots.
.
.
\vdots.
.
.
\ddots\hbar\imath\jmath\ell\Re\Im\aleph\wp\forall\exists\mhoa\partial'\prime\emptyset∞\infty\nabla\triangleP\BoxaQ\Diamonda⊥\bot\top∠\angle√\surd\diamondsuit\heartsuit\clubsuit\spadesuit\negor\lnot\flat\natural\sharpa使用latexsym宏包才能得到这个符号表3.
10–非数学符号.
也可以在文本模式中使用这些符号.
\dag§\S\copyright\textregistered\ddag\P\pounds%\%表3.
11–AMS定界符.
\ulcorner\urcorner\llcorner\lrcorner|\lvert|\rvert\lVert\rVert表3.
12–AMS希腊和希伯来字母.
\digammaκ\varkappa\beth\gimel\daleth52数学公式表3.
13–AMS二元关系.
\lessdot\gtrdot\doteqdot\leqslant\geqslant\risingdotseq\eqslantless\eqslantgtr\fallingdotseq\leqq\geqq\eqcirc\lllor\llless\ggg\circeq\lesssim\gtrsim\triangleq\lessapprox\gtrapprox\bumpeq\lessgtr\gtrless\Bumpeq\lesseqgtr\gtreqless\thicksim\lesseqqgtr\gtreqqless≈\thickapprox\preccurlyeq\succcurlyeq\approxeq\curlyeqprec\curlyeqsucc\backsim\precsim\succsim\backsimeq\precapprox\succapprox\vDash\subseteqq\supseteqq\Vdash\shortparallel\Supset\Vvdash\blacktriangleleft\sqsupset\backepsilon\vartriangleright∵\because∝\varpropto\blacktriangleright\Subset\between\trianglerighteq\smallfrown\pitchfork\vartriangleleft\shortmid\smallsmile\trianglelefteq∴\therefore\sqsubset表3.
14–AMS箭头.
\dashleftarrow\dashrightarrow\leftleftarrows\rightrightarrows\leftrightarrows\rightleftarrows\Lleftarrow\Rrightarrow\twoheadleftarrow\twoheadrightarrow\leftarrowtail\rightarrowtail\leftrightharpoons\rightleftharpoons\Lsh\Rsh\looparrowleft\looparrowright\curvearrowleft\curvearrowright\circlearrowleft\circlearrowright\multimap\upuparrows\downdownarrows\upharpoonleft\upharpoonright\downharpoonright\rightsquigarrow\leftrightsquigarrow3.
10数学符号表53表3.
15–AMS二元否定关系符和箭头.
≮\nless≯\ngtr\varsubsetneqq\lneq\gneq\varsupsetneqq\nleq\ngeq\nsubseteqq\nleqslant\ngeqslant\nsupseteqq\lneqq\gneqq\nmid\lvertneqq\gvertneqq\nparallel\nleqq\ngeqq\nshortmid\lnsim\gnsim\nshortparallel\lnapprox\gnapprox\nsim\nprec\nsucc\ncong\npreceq\nsucceq\nvdash\precneqq\succneqq\nvDash\precnsim\succnsim\nVdash\precnapprox\succnapprox\nVDash\subsetneq\supsetneq\ntriangleleft\varsubsetneq\varsupsetneq\ntriangleright\nsubseteq\nsupseteq\ntrianglelefteq\subsetneqq\supsetneqq\ntrianglerighteq\nleftarrow\nrightarrow\nleftrightarrow\nLeftarrow\nRightarrow\nLeftrightarrow表3.
16–AMS二元运算符.
\dotplus\centerdot\ltimes\rtimes\divideontimes\doublecup\doublecap\smallsetminus\veebar\barwedge\doublebarwedge\boxplus\boxminus\circleddash\boxtimes\boxdot\circledcirc\intercal\circledast\rightthreetimes\curlyvee\curlywedge\leftthreetimes54数学公式表3.
17–AMS其他符号.
\hbar\hslashk\Bbbk\square\blacksquare\circledS\vartriangle\blacktriangle\complement\triangledown\blacktriangledown\Game\lozenge\blacklozenge\bigstar∠\angle\measuredangle\diagup\diagdown\backprime\nexists\Finv\varnothing\eth\sphericalangle\mho表3.
18–数学字母.
实例命令所需宏包ABCDEabcde1234\mathrm{ABCDEabcde1234}ABCDEabcde1234\mathit{ABCDEabcde1234}ABCDEabcde1234\mathnormal{ABCDEabcde1234}ABCDE\mathcal{ABCDEabcde1234}ABCDE\mathscr{ABCDEabcde1234}mathrsfsABCDEabcde1234\mathfrak{ABCDEabcde1234}amsfontsoramssymbABCDE\mathbb{ABCDEabcde1234}amsfontsoramssymbChapter4专业功能当你整理一个大型文档时,LATEX的一些专门功能,例如自动生成索引、管理参考文献等等,会给你以很大的帮助.
详细的关于LATEX专业功能以及增强功能的描述可以在LATEXManual[1]和TheLATEXCompanion[3]找到.
4.
1插入EPS图形LATEX通过figure和table环境提供了处理图像图形等浮动体的基本工具.
有几种办法可以通过使用基本LATEX命令或者LATEX扩展宏包来产生实际的图形(graphics),第5章中将会介绍其中的几种方法.
如果需要这方面的详细信息,请参阅TheLATEXCompanion[3]和LATEXManual[1].
在文档中使用图形,一个相对容易的办法就是使用专门的软件包1生成图形文件,然后将最终的图形文件插入到文档中.
LATEX的宏包提供了许多方法来完成这个工作.
在这个手册里,我们只讨论EncapsulatedPostScript(EPS)图形文件的使用,因为它比较简单而且被广泛地使用.
为了使用EPS格式的图片,你必须有一个PostScript打印机2来输出结果.
由D.
P.
Carlisle制作的graphicx宏包提供了一套很好的插图命令.
它是一个叫作"graphics"的宏包集中的一部分3.
假设你使用的系统安装了PostScript打印机和graphicx宏包,那么你就可以通过下面的步骤把一幅图片加入你的文档中:1.
用你的图形软件输出EPS格式的文件4.
2.
在源文件的导言中加上下面的命令来载入graphicx宏包.
\usepackage[driver]{graphicx}这里driver是你使用的"dvi到postscript"的转换程序.
最常用的是dvips.
因为TEX中没有规定插入图形的标准,所以driver的名字是必需的.
知道1例如XFig、CorelDraw!
、Freehand、Gnuplot……2另外一个可以用来输出PostScript的工具是GhostScript程序,它可以从support/ghostscript得到.
Windows和OS/2用户可能更喜欢用GSview.
3macros/latex/required/graphics4如果你的软件不能输出EPS格式的文件,你可以尝试安装一个PostScript打印机驱动程序(例如AppleLaserWriter),然后将你的图形通过这个驱动程序打印到文件.
运气好的话,这个文件会是EPS格式的.
注意一个EPS图片不能包含超过一页的内容.
一些打印机驱动程序可以明确地指定输出EPS格式.
了driver的名字,graphicx宏包就可以选择合适的方法在.
dvi文件中插入关于图形的信息.
然后打印机理解这些信息并能正确的插入.
eps文件.
3.
使用命令\includegraphics[key=value,le}来把le加入你的文档.
可选的参数是一系列由逗号隔开的keys和相应的(values).
keys可以用来改变插图的宽度、高度以及旋转.
表4.
1列出了最重要的关键词.
表4.
1–graphicx宏包使用的关键词.
width把图形调整到指定的宽度height把图形调整到指定的高度angle逆时针旋转图形scale缩放图形下面的示例代码可以帮助我们理解整个过程:\begin{figure}\centering\includegraphics[angle=90,width=0.
5\textwidth]{test}\caption{Thisisatest.
}\end{figure}这段代码把文件test.
eps中的图形插入到文档里.
首先图形被旋转90度,然后进行缩放使得图形的宽度等于标准段落宽度的0.
5倍.
因为没有指定图形的高度,图形的高宽变化的比例是1.
0,也就是保持原来的高宽比.
高度和宽度参数也可以指定为绝对长度单位.
详细的信息可以在第92页的表6.
5中找到.
如果你想知道更多这方面的知识,请阅读文献[9]和[13].
4.
2参考文献你可以通过thebibliography环境来产生一个参考文献(bibliography).
每个参考文献的条目以如下的命令开头\bibitem[label]{marker}然后使用marker在正文中引用这本书、这篇文章或者论文.
\cite{marker}如果你不使用参数label,参考文献条目的编号是自动生成的.
\begin{thebibliography}命令后的参数设定了最大的编号宽度.
在下面的例子中,{99}告诉LATEX参考文献条目的编号不会比数字99更宽.
57Partl\cite{pa}hasproposedthat\ldots\begin{thebibliography}{99}\bibitem{pa}H.
Partl:\emph{German\TeX},TUGboatVolume9,Issue1(1988)\end{thebibliography}Partl[1]hasproposedthat.
.
.
Bibliography[1]H.
Partl:GermanTEX,TUGboatVol-ume9,Issue1(1988)对于大型项目,你也许需要使用BibTEX程序.
BibTEX包含在大多数的TEX发行版本中.
它能够让你维护一个参考文献数据库,并从中生成你的论文引用到的文献条目.
BibTEX产生的参考文献的外观是基于样式表,它可以让你按照大量预先设计好的格式来创建你的参考文献.
4.
3索引许多书籍的一个非常有用的部分就是它们的索引(index)了.
使用LATEX和辅助工具makeindex5,我们能够很容易的生成索引.
在这个手册里,只介绍了最基本的索引生成命令.
更进一步的了解请参考TheLATEXCompanion[3].
为了使用LATEX的索引功能,宏包makeidx必须在导言部分被载入:\usepackage{makeidx}然后在导言中使用\makeindex激活索引命令.
索引的内容通过命令\index{key}指定,这里key是索引项的关键词.
你可以在需要被索引的地方加入这条命令.
表4.
2举例解释了参量key语法.
当LATEX处理源文档时,每个\index命令都会将适当的索引项和当前页码写入一个专门的文件中.
这个文件的名字和LATEX源文档相同,但具有不同的扩5在文件名不能超过8个字符的操作系统上,这个程序被命名为makeidx.
58专业功能表4.
2–索引关键词语法示例.
示例索引项注释\index{hello}hello,1普通格式的索引项\index{hello!
Peter}Peter,3'hello'下的子项\index{Sam@\textsl{Sam}}Sam,2格式化的索引项\index{Lin@\textbf{Lin}}Lin,7同上\index{Jenny|textbf}Jenny,3格式化的页码\index{Joe|textit}Joe,5同上\index{ecole@\'ecole}ecole,4重音标记展名后缀(.
idx).
这个.
idx文件需要用makeindex程序来处理.
makeindexlenamemakeindex程序生成一个与源文件同名的序列化索引文件,这个文件使用.
ind为扩展名.
当再次用LATEX处理源文件时,这个序列化索引文件将被包含到源文件中\printindex命令出现的位置.
LATEX2ε附带的宏包showidx可以在正文的左边打印出索引项.
这个功能在校对文档和索引项时十分有用.
请注意不谨慎地使用\index命令,将会影响文档页版面布局.
MyWord\index{Word}.
AsopposedtoWord\index{Word}.
Notethepositionofthefullstop.
MyWord.
AsopposedtoWord.
Notethepositionofthefullstop.
4.
4定制页眉和页脚PietvanOostrum编写的fancyhdr宏包6,提供了一些简单的命令使得我们可以定制文档的页眉和页脚.
看一眼本页的顶部,你就能发现这个宏包的用处.

定制页眉和页脚时一件棘手的事情就是得到每个页面所属的章节名称.
LATEX通过两个步骤来完成这个任务.
在定义页眉和页脚时,你可以使用\rightmark命令来代表当前的section名,使用\leftmark来代表当前的chapter名.
这两个命令的值将在处理chapter或者section命令时被重新赋值.
为了获得最大的灵活性,\chapter等命令并不对\rightmark和\leftmark直接进行重定义,而是间接地通过调用\chaptermark、\sectionmark或者\subsectionmark来重新定义\rightmark和\leftmark.
因此,只需要重新定义\chaptermark命令,就能修改页眉上显示的章名.
图4.
1显示了如何配置fancyhdr来得到和本文相似的页眉.
无论如何我还是建议你先阅读一下fancyhdr宏包所带的文档.
6可以在macros/latex/contrib/supported/fancyhdr得到.
4.
5Verbatim宏包59\documentclass{book}\usepackage{fancyhdr}\pagestyle{fancy}withthisweensurethatthechapterandsectionheadingsareinlowercase.
\renewcommand{\chaptermark}[1]{%\markboth{#1}{}}\renewcommand{\sectionmark}[1]{%\markright{\thesection\#1}}\fancyhf{}%deletecurrentheaderandfooter\fancyhead[LE,RO]{\bfseries\thepage}\fancyhead[LO]{\bfseries\rightmark}\fancyhead[RE]{\bfseries\leftmark}\renewcommand{\headrulewidth}{0.
5pt}\renewcommand{\footrulewidth}{0pt}\addtolength{\headheight}{0.
5pt}%spacefortherule\fancypagestyle{plain}{%\fancyhead{}%getridofheadersonplainpages\renewcommand{\headrulewidth}{0pt}%andtheline}图4.
1–fancyhdr设置实例.
4.
5Verbatim宏包在本文的前面部分你已经知道了verbatim环境.
在这一节中,你将学会使用verbatim宏包.
verbatim宏包重新实现了verbatim环境,并解决了原来的verbatim环境的一些限制.
这本身并没有什么特别的,但verbatim宏包还实现了一些新增的功能,这才是我在这里提到这个宏包的原因.
verbatim宏包提供了\verbatiminput{lename}命令,这个命令允许你把一个ASCII码的文本文件包含到你的文档中来,就好像它们是在verbatim环境中一样.
verbatim宏包是'tools'宏包集的一部分,大多数的系统中都预装了这个宏包集.
如果你想更多地了解这个宏包,可以阅读[10].
4.
6安装额外的宏包大多数的LATEX安装都带有大量预装的样式宏包,但更多的宏包可以在网上得到.
在互联网寻找样式宏包的一个主要的地方就是CTAN(http://www.
ctan.
org/).
各种宏包的源文件,例如geometry,hyphenat等等,一般来说都包含两个文件:一个扩展名为.
ins,另一个扩展名为.
dtx.
此外,通常会有一个readme.
txt对宏包进行简要的说明.
你应该先阅读这个文件.
无论如何,一旦你得到了宏包的源文件,你还要对它们进行处理使得(a)你的TEX系统知道这个新的宏包,(b)生成说明文档.
下面是第一部分的步骤:60专业功能1.
对.
ins文件运行LATEX命令.
这将会产生一个.
sty文件.
2.
把.
sty文件移到LATEX系统能找到的地方.
一般是在.
.
.
/localtexmf/tex/latex子目录下(Windows或者OS/2用户应该改变斜线为反斜线).
3.
刷新系统的文件名数据库.
具体的命令取决于你使用的LATEX系统:teTeX,fpTeX–texhash;web2c–maktexlsr;MikTeX–initexmf-update-fndb或者使用图形界面.
现在你可以从.
dtx文件生成说明文档:1.
对.
dtx文件运行LATEX命令.
这会生成一个.
dvi文件.
注意你可能需要多次运行LATEX命令来正确处理交叉引用.
2.
检查一下LATEX命令是否产生了.
idx文件.
如果没发现这个文件,你就可以执行第5步了.
3.
为了生成索引,敲入命令:makeindex-sgind.
istname(这里name表示不带扩展名的主文件名).
4.
再次对.
dtx文件运行LATEX命令.
5.
最后一步但不是必需的,生成.
ps文件或者.
pdf文件以方便阅读.
有时你会看见生成了一个.
glo(glossary)文件.
在第4步和第5步之间运行下面的命令:makeindex-sgglo.
ist-oname.
glsname.
glo确认在执行第5步前最后对.
dtx文件运行一遍LATEX命令.
4.
7使用pdfLATEXByDanielFlipoPDF是一种超文本文档(hypertext)格式.
类似于网页,文档中的某些词可以被超链接标记.
它们链接到这个文档的另一个地方,甚至是另外一个文档.
如果你点击这样一个超链接,你将转调到链接的目的地.
这意味着在LATEX格式的文档中所有\ref和\pageref出现的位置都变成超链接.
此外,目录、索引和其它类似的结构变成超链接的集合.
现在大多数的网页都是用HTML超文本标记语言编写.
在写科技文档的时候,这种格式有两个严重的缺陷:1.
数学公式在HTML文档中通常都不被支持.
尽管对此有一个标准,但是大多是现在使用的浏览器都不支持,或者缺少需要的字体.
2.
打印HTML文档是比较容易的,但打印的结果会因系统平台和浏览器的不同而出现差异.
这结果与我们在LATEX世界中期待的高质量相差十万八千里.
有许多将LATEX转为HTML的尝试.
其中一些可以说是相当成功的,它们能将一个标准的LATEX源文件生成一个合格的网页.
但是为了达到目的,需要去掉一些支持.
当你开始使用LATEX的复杂功能和扩展宏包时,那些尝试就行不通了.
若希望即使是发不到网上也保留文档的高质量,作者们就要使用PDF(便4.
7使用pdfLATEX61携式文档格式),它保留了文档的版式和允许超链接导航.
现在大多数浏览器只要带上相应的插件都可以直接显示PDF文档.
尽管几乎所有的操作系统都有DVI和PS格式的阅读器,但你会发现人们更多地使用AcrobatReader和Xpdf来阅读PDF文档.
因而提供PDF格式的文档将使得潜在的读者更容易阅读.
4.
7.
1发布到网上的PDF文档有了H`anTheTh`anh开发的pdfTEX程序,使用LATEX源文件来创建PDF文件将变得非常简单.
一般的TeX生成DVI,而pdfTEX生成PDF.
还有pdfLATEX程序将LaTeX源文件生成PDF.
现在大多数的TEX发行版本都自动集成安装了pdfTEX和pdfLATEX,例如:teTEX,fpTEX,MikTEX,TEXLive和CMacTEX.
为了生成PDF而不是DVI,只需要将命令latexfile.
tex改成pdflatexfile.
tex.
在不是使用命令行的LATEX系统中,你可以在TEX控制中心找到一个专门的按钮.
在LATEX中,你可以通过documentclass的参数选项来定义页面的大小,例如:a4paper或letterpaper.
这些也对pdfLATEX有效,但是首先要让pdfTEX知道这种页面的实际大小来控制PDF文件的页面大小.
若你使用hyperref宏包(参见第63页),页面的大小将自动调整.
否则,你需要手动的将下面两行加入到文档的导言区:\pdfpagewidth=\paperwidth\pdfpageheight=\paperheight接下来的一节将深入介绍LATEX和pdfLATEX之间的不同.
主要的不同有三个方面:采用的字体,包含图像的格式和超链接的手动配置.
4.
7.
2字体pdfLATEX能处理所有的字体(PK点阵、TrueType、PostScripttype1……),但是作为LATEX通常的字体格式,PK点阵字体在AcrobatReader下的显示效果非常差.
为了获得文档更高的显示效果,最好使用PostScriptType1字体.
高级的TEX安装程序会自动设置好,你最好试一下,如果它正常运作,你就可以跳过这一节.
PostScriptType1的ComputerModern和AMSFonts字体由BlueSkyResearch和Y&Y,Inc.
制作,后来版权属于美国数学学会(AMS).
这些字体在1997年被开放,并且出现在大多数TEX发行版中.
然而,如果你使用LATEX来创建非英文的文档,你可能用到EC,LH或CB字体(关于OT1字体的讨论可参见第21页).
VladimirVolovich创建了cm-super字体包,包含全部EC/TC、ECConcrete、ECBright和LH字体集.
在CTAN:/fonts/ps-type1/cm-super可以获得,也被集成进了TEXLive7和MikTEX.
由ApostolosSyropoulos创建类似type1CB的希腊字体可在CTAN:/tex-archive/fonts/greek/cb获得.
不幸的是,这些字体集跟BlueSky/Y&Y的Type1CM字体的印刷质量不一样.
LATEX会自动提示,而且文档在屏幕的显示效果也不如BlueSky/Y&Ytype1CM字体那么整洁.
在高分辨率的输出设备下,它们生成的效果跟原来的EC/LH/CB点阵字体一样.
如果你使用一种拉丁语系的语文来创建文档,你有其它一些选择.
使用aeguill宏包,也叫AlmostEuropeanComputerModernwithGuillemets.
只需在导言区添加一行\usepackage{aeguill},来启用AE虚拟字体替代EC字体.
62专业功能或者使用mltex宏包,但是它只在pdfTEX设置了mltex选项时有效.
AE虚拟字体集,像MlTEX系统,在CM字体的字符基础上创建全部缺失的字母并按EC顺序重新排列,就使得TEX处理它的时候认为它有一个全部256个字符的字体集.
这样就可使用大部分系统中优质的type1格式的cm字体.
这套字体现在为T1编码,在拉丁语系的欧洲语文中能很好的运作.
唯一的不足就是创建的AE字符不支持AcrobatReader的查找功能,因此你不能在PDF文档中搜索那些带重音符号的单词.
对于俄文,一个类似的解决办法是使用C1虚拟字体,这可以在ftp://ftp.
vsu.
ru/pub/tex/font-packs/c1fonts上获得.
这套字体集成了标准的BlueskyCMtype1字体和Paradissa与BaKoMa的CMCYRtype1字体,这些都可以在CTAN上找到.
由于Paradissa字体只包含俄文字母,C1字体里就没有其他西里尔字符了.
另一种解决办法是使用其它PostScripttype1字体.
事实上,其中一些字体被包含在AcrobatReader的相应语言版本中.
由于这些字体有不同的字符大小,页面上的文本格式将会改变.
一般地,这类字体占得空间要比CM字体大,因为CM字体是一种非常节省空间的字体.
而且文档可视的一致性也被破坏了,因为Times、Helvetica和Courier字体(这些是Acrobat里基本的可替换字体)没有被设计来在单个文档中和平共处.
为了达到上述目的,有两套字体已经做好:pxfonts,它基于作为正文字体的Palatino;另外就是基于Times的txfonts宏包.
只需要在文档的导言区加入下列几行就可以使用这些字体:\usepackage[T1]{fontenc}\usepackage{pxfonts}注:当你编译的时候,在.
log文件中出现下面的信息:Warning:pdftex(fileeurmo10):Fonteur.
.
.
notfound这意味着文档使用的某些字体没有被找到.
你必须解决这些问题,否则输出的PDF文件可能不会显示缺失字符的页面.
上面讨论了如此多的字体问题,特别是缺乏与type1格式的CM字体同样高质量的EC字体一直困扰大家.
最近一套新的被称为LatinModern(LM)的高质量字体已开发完成.
这使得前面的担心都是多余的.
如果你安装了最新的TEX,你可能已经安装好这套字体,需要做的只是在你的文档的导言区添加\usepackage{lmodern}\usepackage[T1]{fontenc}\usepackage{textcomp}就可以创建支持所有拉丁字符的优质PDF输出文件.
4.
7.
3使用图形通过graphicx宏包(参见第55页),你可以在文档中插入图形.
使用pdftex作为driver的选项,这个宏包也可用于pdfLATEX:\usepackage[pdftex]{color,graphicx}上面这个例子中,我还包含了color宏包,因此网页上彩色的文档会看起来更自然一些.
好消息到此为止.
坏消息就是EncapsulatedPostScript格式的图形并不被PdfLATEX所支持.
如果你不在命令\includegraphics声明加载的文件的4.
7使用pdfLATEX63扩展名,宏包graphicx将依赖于driver选项的设置自动寻找一个合适的文件.
对于pdftex,它支持的格式有.
png,.
pdf,.
jpg和.
mps(MetaPost),但不支持.
eps.
一个解决这个问题的简单方法是通过在很多系统中可找到的epstopdf工具将你的EPS文件转化为PDF格式.
对于矢量图(画),这时一个很好的解决办法,但对于位图(相片、扫描图),这并不是很理想,因为PDF格式本来就支持包含PNG和JPEG图像.
PNG格式适合屏幕截图和其它一些只有较少颜色的图像.
JPEG是一种非常适合于相片的格式,而且占用空间少.
可能对于画一些特殊的几何图形这也不是很理想,幸好可以通过一些专门的命令语言来画图形,例如MetaPost,它可以在大多数的TEX发行版本中找到,并且也包含它的扩展手册.
4.
7.
4超链接hyperref宏包将你的文档中的所有内部引用变成超链接.
为此,一些特殊的设置是必须的,保证\usepackage[pdftex]{hyperref}是你的文档导言区的最后一行命令.
有很多选项用于定义hyperref宏包的效果:或者在\usepackage[pdftex]{hyperref}的pdftex选项后用逗号隔开列出;或者使用单独一行的命令\hypersetup{options}.
pdftex是唯一必须的选项,其他参数用来改变hyperref的默认效果7.
下面的列表中默认值被写成upright字体.
bookmarks(=true,false)显示或隐藏书签栏unicode(=false,true)允许在Acrobat书签栏使用非拉丁语系的字符pdftoolbar(=true,false)显示或隐藏Acrobat的工具栏pdfmenubar(=true,false)显示或隐藏Acrobat的菜单栏pdffitwindow(=true,false)调整显示PDF的初始化放大倍率pdftitle(={text})定义Acrobat显示的文档信息(DocumentInfo)pdfauthor(={text})PDF文件作者名字pdfnewwindow(=true,false)定义当超链接到另一个文档时,是否打开一个新的窗口colorlinks(=false,true)链接有一个彩色框架(false)或者链接文本的颜色设置(true).
链接的颜色通过下面的参数来控制(默认的颜色已列出)linkcolor(=red)内部链接的颜色(sections,pages,etc.
),citecolor(=green)引用链接的颜色(bibliography)filecolor(=magenta)文件链接的颜色7值得注意的是hyperref宏包并不只是在pdfTEX下可用.
它也可以用于将PDF特殊信息嵌入到由通常LATEX生成的DVI文件中.
然后通过dvips转化为PS格式,最后用AdobeDistiller将PS格式转成PDF.
64专业功能urlcolor(=cyan)URL链接的颜色(mail,web)如果你觉得这些默认值合适,就直接使用\usepackage[pdftex]{hyperref}为了使书签列表打开和链接为彩色(=true不需要写出来):\usepackage[pdftex,bookmarks,colorlinks]{hyperref}当创建PDF文档是用来打印的,使用彩色的链接并不是一件好事,因为彩色的链接将会被打印成灰色,从而难以阅读.
你可以设置不打印彩色的框架:\usepackage{hyperref}\hypersetup{colorlinks=false}或者将超链接变成黑色:\usepackage{hyperref}\hypersetup{colorlinks,%citecolor=black,%filecolor=black,%linkcolor=black,%urlcolor=black,%pdftex}当你只想提供PDF文件的文档信息(DocumentInfo):\usepackage[pdfauthor={PierreDesproges},%pdftitle={Desfemmesquitombent},%pdftex]{hyperref}除了自动的交叉引用的超链接,通过下面的命令可以嵌入明确的链接:\href{url}{text}代码The\href{http://www.
ctan.
org}{CTAN}website.
生成的效果为"CTAN";单击词"CTAN"将把你带到CTAN网站.
若链接的目的地不是一个URL,而是一个本地文件,你可以使用\href命令:Thecompletedocumentis\href{manual.
pdf}{here}生成的效果为"Thecompletedocumentishere".
单击"here"将打开文件manual.
pdf(文件名跟依赖于当前文档的位置).
若文章的作者希望读者可以容易地发邮件给她,只需要在文档的标题页的\author命令中使用命令\href:\author{MaryOetiker$$注意到这个链接不仅显示在链接中还显示在页面上.
下面的链接\href{mailto:mary@oetiker.
ch}{MaryOetiker}在Acrobat中可正常使用,但页面被打印时,邮箱地址将不可见.
4.
7使用pdfLATEX654.
7.
5链接的问题当一个计数器被重新初始化后可能出现下面的信息:!
pdfTeXwarning(ext4):destinationwiththesameidentifier(name{page.
1})hasbeenalreadyused,duplicateignored例如,在book类的文档中使用命令\mainmatter就可能出现上面的警告.
它在书的第一章重设页码计数器为1,但是书的序言部分也有页码1,从而链接到"页码1"不再是唯一的,故出现了"duplicatehasbeenignored.
"一个解决的办法是将plainpages=false加入到hyperref选项中.
不幸的是这样只对页码计数器有效.
或者冒险使用hypertexnames=false,但是这会使得索引中的页码链接失效.
4.
7.
6书签的问题书签中的文本有时并不会像你想象中的那样显示,因为书签仅仅是"文本",其中可使用的字符要比正常LATEX文件的少得多.
Hyperref经常遇到这类问题而出现下面的警告:PackagehyperrefWarning:TokennotallowedinaPDFDocEncodedstring:现在你可以通过为书签提供一个文本字符串来解决这个问题,用\texorpdfstring{TEXtext}{BookmarkText}来替换不正常显示的文本.
数学表达式也是这类问题的典型代表:\section{\texorpdfstring{$E=mc^2$}%{E=mc^2}}而通常在书签中\section{$E=mc^2$}显示为"E=mc2".
颜色的改变也在书签显示中出问题:\section{\textcolor{red}{Red!
}}显示的结果为"redRed!
".
命令\textcolor被忽略.
而它的参数(red)被输出.
如果你使用\section{\texorpdfstring{\textcolor{red}{Red!
}}{Red\!
}}结果将更美观.
如果你写unicode(统一字符编码)类型的文档,就需添加宏包hyperref的选项unicode,这样你就可以在书签中使用unicode字符.
然后使用\texorpdfstring命令将让你有较大范围的字符供选择.
66专业功能LATEX和pdfLATEX的源文件的兼容性理想的话,你的文档用LATEX和pdfLATEX编译的效果应该一致,这方面的问题主要是包含的图像.
一个简单的解决办法是在命令\includegraphics中不设置加载的图像的扩展名,它们会自动在当前目录寻找一个格式适合的文件,你需要做的是创建相应格式的图像文件.
LATEX会寻找.
eps格式,而pdfLATEX会尝试包含一个扩展名为.
png,.
pdf,.
jpg或.
mps(按这个顺序)的文件.
若你想在PDF格式的文件中使用不同的代码,只需要简单地在导言区加入宏包ifpdf8.
但前提是你已经安装了这个宏包,如果没有安装而你又使用MiKTEX的话,它将在你第一次使用的时候自动安装.
这个宏包定义了一个特殊的命令\ifpdf,利用它你可很容易编写条件代码.
例如,考虑到打印费用,用PostScript格式仅使用黑白色,但在线查看的PDF格式将是彩色的.
\RequirePackage{ifpdf}%runningonpdfTeX\ifpdf\documentclass[a4paper,12pt,pdftex]{book}\else\documentclass[a4paper,12pt,dvips]{book}\fi\ifpdf\usepackage{lmodern}\fi\usepackage[bookmarks,%addhyperlinkscolorlinks,plainpages=false]{hyperref}\usepackage[T1]{fontenc}\usepackage[latin1]{inputenc}\usepackage[english]{babel}\usepackage{graphicx}.
.
.
在上面的例子中,在非PDF格式中我也包含了hyperref宏包,这样\href命令在所有情形下都有效,这也使得我不用在每个情况下都使用条件声明.

注意到当前的TEX发行版本(例如TEXLive),通常的TEX会根据文档类型的设置自动选择输出PDF还是DVI.
如果你使用上面的代码,你仍然可以使用pdflatex命令来得到PDF格式的输出或使用latex得到DVI格式.
4.
8创建演示文稿ByDanielFlipo你可以将你的科学工作成果通过黑板、透明片或者在你的笔记本电脑上直接使用演示文稿软件呈现.
pdfLATEX和beamer文档类允许你创建PDF格式的演示文稿,结果跟你用一天时间制作的PowerPoint看上去差不多,但更便携因为AcrobatReader支持更多的系统平台.
beamer文档类使用带参数的宏包graphicx、color和hyperref来适应屏幕阅读的演示文稿.
8如果你想知道为什么要使用这个宏包,可以参见TEXFAQ的这个栏目http://www.
tex.
ac.
uk/cgi-bin/texfaq2htmllabel=ifpdf.
4.
8创建演示文稿67\documentclass[10pt]{beamer}\mode{%\usetheme[hideothersubsections,right,width=22mm]{Goettingen}}\title{SimplePresentation}\author[D.
Flipo]{DanielFlipo}\institute{U.
S.
T.
L.
\&GUTenberg}\titlegraphic{\includegraphics[width=20mm]{USTL}}\date{2005}\begin{document}\begin{frame}\titlepage\end{frame}\section{一个例子}\begin{frame}\frametitle{ThingstodoonaSundayAfternoon}\begin{block}{Onecould\ldots}\begin{itemize}\itemwalkthedog\dots\pause\itemreadabook\pause\itemconfuseacat\pause\end{itemize}\end{block}andmanyotherthings\end{frame}\end{document}图4.
2–beamer文档类的范例.
68专业功能当你用PDFLATEX编译图4.
2中的代码时,你将得到一个PDF文件,第一页为标题页,第二页有几个栏目,但当你单击你的演示文档时,一次显示一条栏目.
beamer类创建PDF文件的一个优点是直接生成可用的文档,而不像prosper需要先通过一个PostScript步骤,也不像ppower4宏包需要一个后加工处理才能生成演示文档.
用beamer类,你可以用一个源文件生成几种版本.
可以在源文件的中括弧中加入特定的选项来生成不同的版本.
有下面几种版式:beamerPDF屏幕阅读版本;trans幻灯片版本;handoutPDF讲义版本.
默认的版本为beamer,你可以通过设置不同的全局选项来修改,例如:用\documentclass[10pt,handout]{beamer}来生成讲义版本.
演示文稿外观依赖于你选择的主题.
你可以选择beamer类自带的一个主题,也可以自己定义一个新的主题.
详情请参见beamer类的帮助文档beameruserguide.
pdf.
让我们再来仔细分析图4.
2中的代码.
对于屏幕阅读版本的演示文稿\mode,我们选择了Goettingen主题,它将目录合成到导航面板.
通过选项控制面板的大小(这个例子采用22mm),和确定面板的位置(正文右侧).
选项hideothersubsections显示章节的标题,但只显示当前章节的子节标题.
对于\mode和\mode的设置也是一样的,它们将出现在它们标准的版面上.
命令\title{},\author{},\institute{}和\titlegraphic{}定义标题页的内容.
\title[]{}和\author[]{}的选项允许你定义显示在Goettingen主题的面板上的标题和作者名.
面板中的标题和子标题由frame环境外面的命令\section{}和\subsection{}来创建.
屏幕底部的一些微型导航图标也可以让你浏览整个文档.
它们的出现不依赖你选择的主题.
每张幻灯片或每版屏幕的内容放在frame环境中.
利用尖括弧()里面的选项,用演示文档的一个版式来定义一个特殊的帧.
在这个例子中,第一页不会由于参量而显示为讲义模式.
除了幻灯片的标题页,强烈建议通过命令\frametitle{}来重新设置每一张幻灯片的标题.
如果需要,使用block环境可以来定义子标题,在这个例子中也可体现出来.
注意到章节命令\section{}和\subsection{}不在幻灯片上产生输出结果.
列表环境中的命令\pause允许你一个接一个地显示列表栏目的内容.
命令:\only、\uncover、\alt和\temporal,可以让你获得其他的一些演示效果.
很多情况下,你可以通过尖括弧中的内容来定制演示效果.
无论如何,建议你阅读beamer类的文档beameruserguide.
pdf来获得一个全面的了解.
这个宏包正在活跃地开发中,去它们的网站http://latex-beamer.
sourceforge.
net/可获取最新的信息.
Chapter5数学图形大部分人使用LATEX来排版文本内容.
因其不面向内容和结构的特点给写作提供了巨大的方便,我们还可以有办法从文本描述生成图形输出.
此外,大量的LATEX扩展被开发出来以克服种种限制.
在本节中,我们将学习其中的一些.
5.
1概述picture环境可以在LATEX里直接设计图形.
详细的介绍请参考LATEXManual[1].
一方面,这种方法有严重的局限性,比如线段的斜率和圆的半径只能在一个很小的范围内取值.
另一方面,LATEX2ε的picture环境提供了\qbezier命令,"q"表示"quadratic".
许多常用的曲线如圆、椭圆、或者悬链线都可以用二次Bezier曲线得到令人满意的近似,虽然这可能需要一些辛苦的数学准备.
另外,如果有一种编程语言如Java能用来生成LATEX源文档的\qbezier模块,picture环境会更强大.
虽然直接在LATEX里设计图形的方法有严重的局限性而且通常比较繁琐,但它还是很有用的.
这份文档就是用它才变得体积很小,不需要插入额外的图片.

一些宏包,如epic和eepic(TheLATEXCompanion[3]里有介绍),或者pstricks可以排除picture环境的局限,并大大地增强了LATEX的图形功能.
跟前两个宏包只是加强了picture环境不同,pstricks宏包有自己的绘图环境,pspicture.
pstricks的强大之处在于它广泛应用了PostScript.
另外,许多宏包可以用来处理专门的问题.
其一是XY-pic,本章最后会讲到它.
TheLATEXGraphicsCompanion[4](勿与TheLATEXCompanion[3]混淆)里详细介绍了大量的宏包.
LATEX最强大的图形工具可能是MetaPost,DonaldE.
Knuth编写的METAFONT的孪生兄弟.
MetaPost使用非常强大的数学编程语言:METAFONT.
与METAFONT生成点阵图片不同,MetaPost生成的是封装的PostScript文件,可以导入LATEX中.
其介绍可以看AUser'sManualforMetaPost[15],或者[17].
关于LATEX和TEX图形(以及字体)支持方法的详细讨论请参考TEXUnbound[16].
5.
2picture环境ByUrsOswald70数学图形5.
2.
1基本命令一个picture环境1可以用下面两个命令中的一个来创建\begin{picture}(x,y).
.
.
\end{picture}或者\begin{picture}(x,y)(x0,y0).
.
.
\end{picture}数字x,y,x0,y0是相对于\unitlength而言的,任何时候(除了在picture环境之内以外),都可以使用命令如\setlength{\unitlength}{1.
2cm}来改变.
\unitlength的默认值是1pt.
第一个数对,(x,y),在文档中为图形保留一个矩形的区域.
可选的第二个数对,(x0,y0),为矩形左下角指派任意的坐标.
大多数的绘图命令是下面两种格式之一\put(x,y){object}或者\multiput(x,y)(x,y){n}{object}Bezier曲线是一个例外.
它们需要用命令\qbezier(x1,y1)(x2,y2)(x3,y3)来画.
1信不信由你,picture环境仅需标准的LATEX2ε,"开箱即用",无需载入宏包.
5.
2picture环境715.
2.
2线段\setlength{\unitlength}{5cm}\begin{picture}(1,1)\put(0,0){\line(0,1){1}}\put(0,0){\line(1,0){1}}\put(0,0){\line(1,1){1}}\put(0,0){\line(1,2){.
5}}\put(0,0){\line(1,3){.
3333}}\put(0,0){\line(1,4){.
25}}\put(0,0){\line(1,5){.
2}}\put(0,0){\line(1,6){.
1667}}\put(0,0){\line(2,1){1}}\put(0,0){\line(2,3){.
6667}}\put(0,0){\line(2,5){.
4}}\put(0,0){\line(3,1){1}}\put(0,0){\line(3,2){1}}\put(0,0){\line(3,4){.
75}}\put(0,0){\line(3,5){.
6}}\put(0,0){\line(4,1){1}}\put(0,0){\line(4,3){1}}\put(0,0){\line(4,5){.
8}}\put(0,0){\line(5,1){1}}\put(0,0){\line(5,2){1}}\put(0,0){\line(5,3){1}}\put(0,0){\line(5,4){1}}\put(0,0){\line(5,6){.
8333}}\put(0,0){\line(6,1){1}}\put(0,0){\line(6,5){1}}\end{picture}¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨$&&&&&&&&&&&&&&&(((((((((((((((222222222222222333333333333333444444444444444555555555555555777777777777777@DDDDDDDDDDDDDDD线段用命令\put(x,y){\line(x1,y1){length}}来画.
命令\line有两个参量:1.
一个方向向量,2.
一个长度.
方向向量需由以下整数构成6,5,5,6,而且它们需要互质(除1以外,没有公约数),图形显示了第一象限中所有25个可能的斜率值.
长度是相对于\unitlength来说的.
长度的参量当一个垂直线段时是垂直坐标,其他情况都是水平坐标.
72数学图形5.
2.
3箭头\setlength{\unitlength}{0.
75mm}\begin{picture}(60,40)\put(30,20){\vector(1,0){30}}\put(30,20){\vector(4,1){20}}\put(30,20){\vector(3,1){25}}\put(30,20){\vector(2,1){30}}\put(30,20){\vector(1,2){10}}\thicklines\put(30,20){\vector(-4,1){30}}\put(30,20){\vector(-1,4){5}}\thinlines\put(30,20){\vector(-1,-1){5}}\put(30,20){\vector(-1,-4){5}}\end{picture}E$$$$$XI¨¨¨¨¨¨¨B!
ygggggy画箭头要用命令\put(x,y){\vector(x1,y1){length}}箭头的方向向量元素比线段的限制更严格,需由以下整数构成4,3,3,4.
而且需要互质(除1以外,没有公约数).
注意命令\thicklines对指向左上方的两个箭头产生的效果.
5.
2picture环境735.
2.
4圆\setlength{\unitlength}{1mm}\begin{picture}(60,40)\put(20,30){\circle{1}}\put(20,30){\circle{2}}\put(20,30){\circle{4}}\put(20,30){\circle{8}}\put(20,30){\circle{16}}\put(20,30){\circle{32}}\put(40,30){\circle{1}}\put(40,30){\circle{2}}\put(40,30){\circle{3}}\put(40,30){\circle{4}}\put(40,30){\circle{5}}\put(40,30){\circle{6}}\put(40,30){\circle{7}}\put(40,30){\circle{8}}\put(40,30){\circle{9}}\put(40,30){\circle{10}}\put(40,30){\circle{11}}\put(40,30){\circle{12}}\put(40,30){\circle{13}}\put(40,30){\circle{14}}\put(15,10){\circle*{1}}\put(20,10){\circle*{2}}\put(25,10){\circle*{3}}\put(30,10){\circle*{4}}\put(35,10){\circle*{5}}\end{picture}ej"!
#87968796ehjm"!
#"!
#&%'$0)1(435243528796ruxz}命令\put(x,y){\circle{diameter}}画了一个圆心在(x,y)直径(不是半径)为diameter的圆.
picture环境只允许直径最大是14mm,而且即使在这个限制之下,也不是所有的直径都可获得.
命令\circle*生成圆盘(填充的圆形).
跟线段的情况一样,你可能需要其他宏包的帮助,比如eepic或者pstricks.
这些宏包的详细说明请参考TheLATEXGraphicsCompanion[4].
picture环境还有另外一个可能.
如果你不怕麻烦的必要的计算(或者交给一个程序来处理),任意的圆和矩形都可以由二次Bezier曲线拼成.
请看例子GraphicsinLATEX2ε[17]以及Java源文件.
74数学图形5.
2.
5文本与公式\setlength{\unitlength}{0.
8cm}\begin{picture}(6,5)\thicklines\put(1,0.
5){\line(2,1){3}}\put(4,2){\line(-2,1){2}}\put(2,3){\line(-2,-5){1}}\put(0.
7,0.
3){$A$}\put(4.
05,1.
9){$B$}\put(1.
7,2.
95){$C$}\put(3.
1,2.
5){$a$}\put(1.
3,1.
7){$b$}\put(2.
5,1.
05){$c$}\put(0.
3,4){$F=\sqrt{s(s-a)(s-b)(s-c)}$}\put(3.
5,0.
4){$\displaystyles:=\frac{a+b+c}{2}$}\end{picture}¨¨¨¨¨¨¨rrrrrABCabcF=√s(sa)(sb)(sc)s:=a+b+c2如本例所示,文本与公式可以使用\put命令按照正常方式在picture环境中使用.
5.
2.
6\multiput与\linethickness\setlength{\unitlength}{2mm}\begin{picture}(30,20)\linethickness{0.
075mm}\multiput(0,0)(1,0){26}%{\line(0,1){20}}\multiput(0,0)(0,1){21}%{\line(1,0){25}}\linethickness{0.
15mm}\multiput(0,0)(5,0){6}%{\line(0,1){20}}\multiput(0,0)(0,5){5}%{\line(1,0){25}}\linethickness{0.
3mm}\multiput(5,0)(10,0){2}%{\line(0,1){20}}\multiput(0,5)(0,10){2}%{\line(1,0){25}}\end{picture}命令\multiput(x,y)(x,y){n}{object}有4个参量:初始点,从一个对象到下一个的平移向量,对象的数目和要绘制的对象.
命令\linethickness可作用于水平和垂直方向的线段,但不能作用于倾斜的线段和圆.
然而,该命令可作用于二次Bezier曲线.
5.
2picture环境755.
2.
7椭圆\setlength{\unitlength}{0.
75cm}\begin{picture}(6,4)\linethickness{0.
075mm}\multiput(0,0)(1,0){7}%{\line(0,1){4}}\multiput(0,0)(0,1){5}%{\line(1,0){6}}\thicklines\put(2,3){\oval(3,1.
8)}\thinlines\put(3,2){\oval(3,1.
8)}\thicklines\put(2,1){\oval(3,1.
8)[tl]}\put(4,1){\oval(3,1.
8)[b]}\put(4,3){\oval(3,1.
8)[r]}\put(3,1.
5){\oval(1.
8,0.
4)}\end{picture}5423542354323§¤命令\put(x,y){\oval(w,h)}或\put(x,y){\oval(w,h)[position]}可以产生一个中心在(x,y)处、宽为w高为h的椭圆.
如本例所示,可选参量position可以是b,t,l,r,分别表示仅绘制椭圆的"下部"、"上部"、"左部"和"右部",如例所示,这些参数可以进行组合.
以下两类命令可以控制线宽:一类为\linethickness{length},另一类为\thinlines与\thicklines.
命令\linethickness{length}仅对水平和垂直直线(及二次Bezier曲线)有作用,\thinlines与\thicklines则可以作用于倾斜的线段、圆和椭圆.
76数学图形5.
2.
8重复使用预定义的图形盒子\setlength{\unitlength}{0.
5mm}\begin{picture}(120,168)\newsavebox{\foldera}\savebox{\foldera}(40,32)[bl]{%definition\multiput(0,0)(0,28){2}{\line(1,0){40}}\multiput(0,0)(40,0){2}{\line(0,1){28}}\put(1,28){\oval(2,2)[tl]}\put(1,29){\line(1,0){5}}\put(9,29){\oval(6,6)[tl]}\put(9,32){\line(1,0){8}}\put(17,29){\oval(6,6)[tr]}\put(20,29){\line(1,0){19}}\put(39,28){\oval(2,2)[tr]}}\newsavebox{\folderb}\savebox{\folderb}(40,32)[l]{%definition\put(0,14){\line(1,0){8}}\put(8,0){\usebox{\foldera}}}\put(34,26){\line(0,1){102}}\put(14,128){\usebox{\foldera}}\multiput(34,86)(0,-37){3}{\usebox{\folderb}}\end{picture}§¤§¤§¤§¤一个图形盒子可以使用命令\newsavebox{name}进行声明,然后使用命令\savebox{name}(width,height)[position]{content}进行定义,最后使用命令\put(x,y)\usebox{name}进行任意次数的重复绘制.
可选参数position的作用是定义图形存放盒子的"锚点".
在本例中该参数被设置为bl,从而将锚点设置为图形存放盒子的左下角.
其他的位置描述有t和r,分别表示"上"和"右".
参量name指明了LATEX存储槽,揭示了其命令本质(在本例中指反斜线).
图形盒子可以嵌套:在本例中,\foldera被用在了\folderb的定义中.
由于命令\line在线段长度小于大约3mm的时候不能正常工作,所以必须使用命令\oval.
5.
2picture环境775.
2.
9二次Bezier曲线\setlength{\unitlength}{0.
8cm}\begin{picture}(6,4)\linethickness{0.
075mm}\multiput(0,0)(1,0){7}{\line(0,1){4}}\multiput(0,0)(0,1){5}{\line(1,0){6}}\thicklines\put(0.
5,0.
5){\line(1,5){0.
5}}\put(1,3){\line(4,1){2}}\qbezier(0.
5,0.
5)(1,3)(3,3.
5)\thinlines\put(2.
5,2){\line(2,-1){3}}\put(5.
5,0.
5){\line(-1,5){0.
5}}\linethickness{1mm}\qbezier(2.
5,2)(5.
5,0.
5)(5,3)\thinlines\qbezier(4,2)(4,3)(3,3)\qbezier(3,3)(2,3)(2,2)\qbezier(2,2)(2,1)(3,1)\qbezier(3,1)(4,1)(4,2)\end{picture}¤¤¤¤¤¤$$$$$rrrrrrrhhhhhh如本例所示,将圆分割为4条二次Bezier曲线的效果不能令人满意,至少需要8条.
该图再一次展示了命令\linethickness对水平或垂直直线以及命令\thinlines和\thicklines对倾斜线段的影响.
该例同时显示:这两类命令都会影响二次Bezier曲线,每一条命令都会覆盖以前所有命令.
令P1=(x1,y1),P2=(x2,y2)和m1,m2分别表示一条二次Bezier曲线的两个端点及其对应斜率.
中间控制点S=(x,y)则由下述方程给出x=m2x2m1x1(y2y1)m2m1,y=yi+mi(xxi)(i=1,2).
(5.
1)关于生成必要的\qbezier命令的Java程序参见GraphicsinLATEX2ε[17].
78数学图形5.
2.
10悬链线\setlength{\unitlength}{1cm}\begin{picture}(4.
3,3.
6)(-2.
5,-0.
25)\put(-2,0){\vector(1,0){4.
4}}\put(2.
45,-.
05){$x$}\put(0,0){\vector(0,1){3.
2}}\put(0,3.
35){\makebox(0,0){$y$}}\qbezier(0.
0,0.
0)(1.
2384,0.
0)(2.
0,2.
7622)\qbezier(0.
0,0.
0)(-1.
2384,0.
0)(-2.
0,2.
7622)\linethickness{.
075mm}\multiput(-2,0)(1,0){5}{\line(0,1){3}}\multiput(-2,0)(0,1){4}{\line(1,0){4}}\linethickness{.
2mm}\put(.
3,.
12763){\line(1,0){.
4}}\put(.
5,-.
07237){\line(0,1){.
4}}\put(-.
7,.
12763){\line(1,0){.
4}}\put(-.
5,-.
07237){\line(0,1){.
4}}\put(.
8,.
54308){\line(1,0){.
4}}\put(1,.
34308){\line(0,1){.
4}}\put(-1.
2,.
54308){\line(1,0){.
4}}\put(-1,.
34308){\line(0,1){.
4}}\put(1.
3,1.
35241){\line(1,0){.
4}}\put(1.
5,1.
15241){\line(0,1){.
4}}\put(-1.
7,1.
35241){\line(1,0){.
4}}\put(-1.
5,1.
15241){\line(0,1){.
4}}\put(-2.
5,-0.
25){\circle*{0.
2}}\end{picture}ExTyu在本图中,悬链线y=coshx1对称的两半由二次Bezier曲线分别近似地绘成.
曲线的右半部分终止于点(2,2.
7622),对应的斜率为m=3.
6269.
再次使用公式(5.
1),我们可以计算中间控制点.
计算结果为(1.
2384,0)和(1.
2384,0).
图中的十字为真正的悬链线上的点.
误差小于百分之一,很难被发现.
该例指出了命令\begin{picture}的可选参数的用法.
该图通过使用命令\begin{picture}(4.
3,3.
6)(-2.
5,-0.
25)定义了方便的"数学"坐标:左下角(由黑色圆点标出)坐标是(2.
5,0.
25).
5.
3XY-pic795.
2.
11坐标的相对性\setlength{\unitlength}{0.
8cm}\begin{picture}(6,4)(-3,-2)\put(-2.
5,0){\vector(1,0){5}}\put(2.
7,-0.
1){$\chi$}\put(0,-1.
5){\vector(0,1){3}}\multiput(-2.
5,1)(0.
4,0){13}{\line(1,0){0.
2}}\multiput(-2.
5,-1)(0.
4,0){13}{\line(1,0){0.
2}}\put(0.
2,1.
4){$\beta=v/c=\tanh\chi$}\qbezier(0,0)(0.
8853,0.
8853)(2,0.
9640)\qbezier(0,0)(-0.
8853,-0.
8853)(-2,-0.
9640)\put(-3,-2){\circle*{0.
2}}\end{picture}EχTβ=v/c=tanhχt公式(5.
1)给出了两条Bezier曲线的控制点.
正向分支由P1=(0,0),m1=1和P2=(2,tanh2),m2=1/cosh22确定.
与前例相同,本图也定义了在数学上方便的坐标,左下角的坐标是(3,2)(黑点).
5.
3XY-picByAlbertoManuelBrandaoSimoesxy是绘制流程图的专用宏包.
要想使用它,只需在导言区加上:\usepackage[options]{xy}options列出你需要载入的XY-pic的选项.
这些选项基本上被用于调试这个宏包的使用.
建议你使用all,可以让LATEX载入XY的所有命令.
XY-pic流程图被绘制在一幅以矩阵定位的画布上,每一个流程图元素被放在矩阵的一个单元中:\begin{displaymath}\xymatrix{A&B\\C&D}\end{displaymath}ABCD命令\xymatrix必须置于数学模式中.
这里,我们设定了一个两行两列的矩阵.
为了画出流程,我们只需要使用命令\ar增加带方向的箭头即可.
\begin{displaymath}\xymatrix{A\ar[r]&B\ar[d]\\D\ar[u]&C\ar[l]}\end{displaymath}A//BDOOCoo80数学图形箭头命令要放在其出发的那个单元里.
参量是箭头的方向(u:上,d:下,r:右以及l:左).
\begin{displaymath}\xymatrix{A\ar[d]\ar[dr]\ar[r]&B\\D&C}\end{displaymath}A@@@@@@@//BDC要画对角线,可以指定不只一个方向参量.
实际上,你还可以重复同一个方向来得到更大的箭头.
\begin{displaymath}\xymatrix{A\ar[d]\ar[dr]\ar[drr]&&\\B&C&D}\end{displaymath}A@@@@@@@''PPPPPPPPPPPPPPBCD我们还可以绘制一些更有趣的流程图,给箭头加上标签,只需要使用普通的上标和下标.
\begin{displaymath}\xymatrix{A\ar[r]^f\ar[d]_g&B\ar[d]^{g'}\\D\ar[r]_{f'}&C}\end{displaymath}Af//gBgDf//C如图所示,就像数学模式里一样使用上下标.
唯一的区别在于:上标表示放在"箭头的上方",下标表示放在"箭头的下方".
把文本放到箭头上可以用|.
\begin{displaymath}\xymatrix{A\ar[r]|f\ar[d]|g&B\ar[d]|{g'}\\D\ar[r]|{f'}&C}\end{displaymath}Af//gBgDf//C绘制空心箭头的命令是\ar[.
.
.
]|\hole.
某些情况下,需要区分不同类型的箭头.
可以给它们标上标签,或者使用不同的外观来实现:5.
3XY-pic81\shorthandoff{"}\begin{displaymath}\xymatrix{\bullet\ar@{->}[rr]&&\bullet\\\bullet\ar@{.
}[rr]&&\bullet\\\bullet\ar@3{->}[rr]&&\bullet\\\bullet\ar@{=+}[rr]&&\bullet}\end{displaymath}\shorthandon{"}//oo_/o/o/o/o/o/o/o/o/o/o/o/o/o/o//+3_*4_注意下面两幅流程图的区别:\begin{displaymath}\xymatrix{\bullet\ar[r]\ar@{.
>}[r]&\bullet}\end{displaymath}////\begin{displaymath}\xymatrix{\bullet\ar@/^/[r]\ar@r]&\bullet}\end{displaymath}''77两条斜线间的修饰元素决定了曲线应该如何被画出.
XY-pi提供了很多办法来改变曲线的形状;更详细的内容请参考XY-pic的文档.
Chapter6定制LATEX到目前为止,运用你所学过的命令可以制作出能被绝大多数读者接受的文档.
尽管这些文档看上去不够奇妙,但它们遵循了高质量排版的已有规则,这些规则可以使得文档易读,同时看起来也非常舒适.
然而在一些情况下,LATEX也许并没有提供适合你需要的命令或者环境,或者现有的命令产生的输出和你想要的不同.
本章中,我将尝试给出一些新的技巧,运用这些技巧可以教会LATEX玩一些新的把戏,也可以使得LATEX产生与众不同的输出.
6.
1新建命令、环境和宏包你也许已经注意到我在这本书中介绍的所有命令都被包含在一个矩形框里,并且出现在本书最后的索引中.
我并没有直接使用所需的LATEX命令来实现这个,而是创建了一个宏包(package),并在其中定义了我所需要的命令和环境.
现在我可以简单的写:\begin{lscommand}\ci{dum}\end{lscommand}\dum在这个例子中,我使用了一个新的环境:lscommand.
这个环境负责在命令的周围画出一个矩形框.
同时我还使用了一个命令:\ci,这个命令负责输出命令的名字,并且在索引中添加相应的条目.
你可以在本书最后的索引中查找命令\dum,然后你会发现有一个\dum的条目,这个条目中列出了包含有\dum命令的所有页的页码.
一旦我不再喜欢在一个矩形框中排版命令,我可以轻松的改变lscommand环境的定义,来创建新的外观.
跟追踪并修改所有使用原始的LATEX命令在文字周围画框的地方相比,这种做法容易得多.
84定制LATEX6.
1.
1新建命令为了建立你自己的命令,可以使用如下的命令:\newcommand{name}[num]{denition}基本上,这个命令有两个参量,第一个name是你想要建立的命令的名称,第二个denition是命令的定义.
方括号里的参数num是可选的,用于指定新命令所需的参量数目(最多9个).
如果不给出这个参数,默认就是0,也就是新建的命令不要任何参量.
接下来的两个例子有助你的理解.
第一个例子定义了一个新的命令:\tnss.

这个命令是句子"TheNotSoShortIntroductiontoLATEX2ε"的简写.
如果你需要在文档中多次使用本书的名称,那么定义这个命令将是非常方便的.

\newcommand{\tnss}{ThenotsoShortIntroductionto\LaTeXe}Thisis''\tnss''\ldots{}''\tnss''Thisis"ThenotsoShortIntroductiontoLATEX2ε"ThenotsoShortIntroduc-tiontoLATEX2ε"下一个例子演示了如何建立一个接受单一参数的命令.
在命令的定义中,标记#1将被你指定的参量所代替.
如果你想使用多个参量,那么可以依次使用#2、……、#9等标记.
\newcommand{\txsit}[1]{Thisisthe\emph{#1}ShortIntroductionto\LaTeXe}%inthedocumentbody:\begin{itemize}\item\txsit{notso}\item\txsit{very}\end{itemize}ThisisthenotsoShortIntroductiontoLATEX2εThisistheveryShortIntroductiontoLATEX2εLATEX不允许你新建一个与现有命令重名的命令.
如果你确实需要这么做,有一个专门的命令用于处理这种情况:\renewcommand.
它使用与命令\newcommand相同的语法.
在某些情况之下,你可能会希望使用\providecommand命令.
它完成与\newcommand命令相同的工作.
但如果命令已经存在,LATEX2ε将会悄悄忽略原有的那个.
处理LATEX命令后尾随的空格有一些要注意的事项,参看第4页可以获得更多这方面的信息.
6.
1.
2新建环境与\newcommand命令类似,有一个命令用于建立新的环境.
这个命令就是\newenvironment,它的语法如下所示:\newenvironment{name}[num]{before}{after}同样地,\newenvironment命有一个可选的参量.
在before中的内容将在此环境包含的文本之前处理,而在after中的内容将在遇到\end{name}命令时处理.
6.
1新建命令、环境和宏包85下面的例子演示了\newenvironment命令的用法:\newenvironment{king}{\rule{1ex}{1ex}%\hspace{\stretch{1}}}{\hspace{\stretch{1}}%\rule{1ex}{1ex}}\begin{king}Myhumblesubjects\ldots\end{king}Myhumblesubjects.
.
.
参量num的使用方式与\newcommand命令相同.
LATEX还同样保证你不会不小心新建重名的环境.
如果你确实希望改变一个现有的环境,你可以使用命令\renewenvironment,它使用和命令\newenvironment相同的语法.
在这个例子中用到一些命令将在随后解释:\rule命令的解释可以参看第97页,\stretch命令的解释可以参看第91页,关于\hspace的信息可以在第91页找到.
6.
1.
3额外的空白间距当创建新的环境时,你或许会为遇到额外的空白间距而烦扰,这些间距可能产生严重的后果.
比如当你建立一个标题环境,既不要自身的缩进也不要紧接着的下一段缩进时,在begin中加入命令\ignorespaces会使新环境忽略执行begin之后遇到的一切空白间距,而end就需要耍个小花招,因为我们要等到环境结束后才开始处理.
使用\ignorespacesafterend,LATEX会在end处理完毕后,产生一个\ignorespaces.
\newenvironment{simple}%{\noindent}%{\par\noindent}\begin{simple}Seethespace\\totheleft.
\end{simple}Same\\here.
Seethespacetotheleft.
Samehere.
\newenvironment{correct}%{\noindent\ignorespaces}%{\par\noindent%\ignorespacesafterend}\begin{correct}Nospace\\totheleft.
\end{correct}Same\\here.
Nospacetotheleft.
Samehere.
6.
1.
4命令行的LATEX如果使用类Unix的操作系统工作,你可能会在使用Makeles建立你的LATEX项目.
那样的话,用命令行参数操控LATEX来创建同一份文档的不同版本可是十86定制LATEX分有趣的.
如果把下列配置写入你的文档:\usepackage{ifthen}\ifthenelse{\equal{\blackandwhite}{true}}{%"blackandwhite"mode;dosomething.
.
}{%"color"mode;dosomethingdifferent.
.
}现在,你可以像这样来操作LATEX:latex'\newcommand{\blackandwhite}{true}\input{test.
tex}'首先,定义命令\blackandwhite,然后使用input来读入实际的文档.
要创建彩色版本文档,需要设定\blackandwhite为false.
6.
1.
5自建宏包如果你定义了很多新的环境和命令,你的文档的导言部分将变得相当长,在这种情况下,建立一个新的LATEX宏包来存放所有你自己定义的命令和环境将是一个好的处理方式.
然后你可以在文档中使用\usepackage命令来引入自定义宏包.
%DemoPackagebyTobiasOetiker\ProvidesPackage{demopack}\newcommand{\tnss}{ThenotsoShortIntroductionto\LaTeXe}\newcommand{\txsit}[1]{The\emph{#1}ShortIntroductionto\LaTeXe}\newenvironment{king}{\begin{quote}}{\end{quote}}图6.
1–宏包样例.
写一个宏包的基本工作就是将你原本很长的文档导言内容拷贝到另外一个的文件中去,这个文件需要以.
sty结尾.
你还加入一个专用的命令:\ProvidesPackage{packagename}这个命令应该放在你的宏包的最前面.
\ProvidesPackage告诉LATEX宏包的名称从而让LATEX在你尝试两次引入同一个宏包的时候给出一个明显的错误信息,图6.
1给出了一个小的宏包示例,其中包含了我们之前定义的一些命令.
6.
2字体和字号6.
2.
1字体变换命令LATEX根据文档的逻辑结构(章节、脚注……)来选择合适的字体和字体大小.
在某些情况下,你可能会想要手动改变文档使用的字体及其大小.
为了完成这个目的,你可以使用表6.
1和表6.
2中列出的那些命令.
每个字体的实际大小是一个设计问题,并且它依赖于文档所使用的文档类及其选项.
表6.
3列出了这些命令在标准文档类中的绝对pt大小.
6.
2字体和字号87{\smallThesmalland\textbf{bold}Romansruled}{\Largeallofgreatbig\textit{Italy}.
}ThesmallandboldRomansruledallofgreatbigItaly.
LATEX2ε的一个重要特征是字体的各种属性是相互独立的,这意味着你可以改变字体的大小而仍然保留字体原有的粗体或者斜体的特性.
在数学模式中你可以使用字体变换命令来暂时退出数学模式,然后输入一些正常的文字.
如果你希望改变数学公式本身所使用的字体,LATEX提供了另外一套命令.
参看表6.
4.
使用字体命令的时候,大括号(curlybraces)扮演了一个重要角色.
它们被用于建立所谓的组(group).
组限制了大多数LATEX命令的作用范围.
Helikes{\LARGElargeand{\smallsmall}letters}.
Helikeslargeandsmallletters.
如果段落在字体的作用范围中结束,那么字号命令还将改变段落中行距.
因此用于分组的反向大括号}不应该太早出现.
注意下面两个例子中\par命令的位置1.
1\par相当于一个空行表6.
1–字体.
\textrm{.
.
.
}roman\textsf{.
.
.
}sansserif\texttt{.
.
.
}typewriter\textmd{.
.
.
}medium\textbf{.
.
.
}boldface\textup{.
.
.
}upright\textit{.
.
.
}italic\textsl{.
.
.
}slanted\textsc{.
.
.
}SmallCaps\emph{.
.
.
}emphasized\textnormal{.
.
.
}documentfont表6.
2–字号.
\tinytinyfont\scriptsizeverysmallfont\footnotesizequitesmallfont\smallsmallfont\normalsizenormalfont\largelargefont\Largelargerfont\LARGEverylargefont\hugehuge\Hugelargest88定制LATEX表6.
3–标准文档类中的绝对pt大小.
大小10pt(默认)11pt选项12pt选项\tiny5pt6pt6pt\scriptsize7pt8pt8pt\footnotesize8pt9pt10pt\small9pt10pt11pt\normalsize10pt11pt12pt\large12pt12pt14pt\Large14pt14pt17pt\LARGE17pt17pt20pt\huge20pt20pt25pt\Huge25pt25pt25pt表6.
4–数学字体.
\mathrm{.
.
.
}RomanFont\mathbf{.
.
.
}BoldfaceFont\mathsf{.
.
.
}SansSerifFont\mathtt{.
.
.
}TypewriterFont\mathit{.
.
.
}ItalicFont\mathcal{.
.
.
}CALLIGRAPHICFONT\mathnormal{.
.
.
}NormalFont6.
2字体和字号89{\LargeDon'treadthis!
Itisnottrue.
Youcanbelieveme!
\par}Don'treadthis!
Itisnottrue.
Youcanbelieveme!
{\LargeThisisnottrueeither.
ButrememberIamaliar.
}\parThisisnottrueeither.
ButrememberIamaliar.
如果你希望改变整段甚至更多文本的字体,你可能应该使用字体变换命令的环境语法.
\begin{Large}Thisisnottrue.
Butthenagain,whatisthesedays\ldots\end{Large}Thisisnottrue.
Butthenagain,whatisthesedays.
.
.
这将使你从一堆大括号中解脱出来.
6.
2.
2战战兢兢,如履薄冰正如本章开头曾经说过的那样,在你的文档中直接运用这些命令来修改格式是非常危险的事情,因为这种做法和LATEX的基础理念相反.
在编写LATEX文档的时候,要始终注意文章逻辑标记和样式标识的分离.
也就是如果你在文章的多个地方采用某种特殊的格式来排版一类经常使用的内容,就应该使用\newcommand来定义一个逻辑封装命令,并通过这个命令来修改相应的表现格式.
\newcommand{\oops}[1]{%\textbf{#1}}Donot\oops{enter}thisroom,it'soccupiedby\oops{machines}ofunknownoriginandpurpose.
Donotenterthisroom,it'soccupiedbymachinesofunknownoriginandpurpose.
这种方法具有一个明显的优点,你可以在以后决定使用一些不是很有把握实现的特别外观并使之不同于\textbf,那时你就不需要遍历你的整篇文章来找出所有\textbf的地方,然后一个一个地确定是不是要改成没有把握的外观.
6.
2.
3建议总结这一章中关于字体和字号的命令,下面是一个简短的建议:Remember!
TheMOREfontsyouuseinadocument,themorereadableandbeautifulitbecomes.
记住!
你使用的字体越多,文章看起来就越易读越美观.
90定制LATEX6.
3间距6.
3.
1行距如果你想在文档中使用更大的行距,你可以在导言中使用如下命令进行设定:\linespread{factor}如\linespread{1.
3}产生1.
5倍行距,而\linespread{1.
6}则产生双倍行距.
缺省情况下的行距为1.
注意\linespread的效果相当夸张而且不适合出版工作.
因此如果你很想改变行距可能会希望使用如下的命令:\setlength{\baselineskip}{1.
5\baselineskip}{\setlength{\baselineskip}%{1.
5\baselineskip}Thisparagraphistypesetwiththebaselineskipsetto1.
5ofwhatitwasbefore.
Notetheparcommandattheendoftheparagraph.
\par}Thisparagraphhasaclearpurpose,itshowsthatafterthecurlybracehasbeenclosed,everythingisbacktonormal.
Thisparagraphistypesetwiththebaselineskipsetto1.
5ofwhatitwasbefore.
Notetheparcommandattheendofthepara-graph.
Thisparagraphhasaclearpurpose,itshowsthatafterthecurlybracehasbeenclosed,everythingisbacktonormal.
6.
3.
2段落格式在LATEX中,有两个参数可以影响段落的布局.
在文档的导言部分,可以通过如下的定义来改变段落的布局.
\setlength{\parindent}{0pt}\setlength{\parskip}{1explus0.
5exminus0.
2ex}这两个命令增加了段落间距,并将首行缩进设置为0.
例子中,长度设定中的plus和minus部分将使得TEX按照指定大小压缩和伸展段落间距.
为了使得段落正确的显示在页面之上,TEX将在0.
8ex到1.
5ex之间调整段落间距.
在欧洲大陆,段落通常用一些空白分隔并且一般首行不缩进.
但是值得注意的是,这也会影响目录.
目录的行距也会变得非常疏松.
为了避免这种情况,你可能需要将上面的两个命令从导言中移到文档中\tableofcontents以下适合的位置,或者根本不要使用这些,因为一般来说专业的书籍都是用缩进并且通常不用空白来分离段落.
如果你想缩进一个本来没有缩进的段落2,可以在段落的开2为了缩进章节标题之后的第一个段落,可以使用indentrst包.
6.
3间距91始使用命令:\indent当然,这个命令只有在\parindent不为零的情况下才有效果.
为了创建一个不缩进的段落,你可以在段落的开始部分使用命令:\noindent当文档以正文而不是章节命令开始的时候,这个命令会提供方便.
6.
3.
3水平间距LATEX系统自动决定单词和句子之间的距离.
为了增加水平距离,使用命令:\hspace{length}如果这个水平间距即使在行首或者行末也应该保持的话,用命令\hspace*代替\hspace.
命令的length参数在简单的情况下只是一个带有单位的数字.
最重要的长度单位在表6.
5中列了出来.
This\hspace{1.
5cm}isaspaceof1.
5cm.
Thisisaspaceof1.
5cm.
下面的命令\stretch{n}将产生一个特殊的橡皮长度:一个能把行内剩余所有空隙填满的空白.
如果两个\hspace{\stretch{n}}命令位于同一行,那么它们将根据伸缩因子分配空间.
x\hspace{\stretch{1}}x\hspace{\stretch{3}}xxxx当在正文中使用水平间距的时候,相对于字号来调整间距大小会更有道理.

这可以通过使用与文本有关的单位em和ex来实现:{\Large{}big\hspace{1em}y}\\{\tiny{}tin\hspace{1em}y}bigytiny92定制LATEX表6.
5–TEX单位.
mmmillimetre≈1/25inchcmcentimetre=10mmininch=25.
4mmptpoint≈1/72inch≈13mmemapproxwidthofan'M'inthecurrentfontexapproxheightofan'x'inthecurrentfont6.
3.
4垂直间距在段落、节、小节……之间的距离是由LATEX系统自动决定的.
如果必要的话,可以在两段之间增加额外的距离,使用的命令如下所示:\vspace{length}这个命令通常用于两个空行之间.
如果这个额外的行距应该在于页的顶部和末尾也保留下来,那么使用这个命令的星号版本\vspace*来代替\vspace.
命令\stretch和\pagebreak结合使用可以在页的最后一行输出文本,也可以用来保证文本在页面上垂直居中.
Sometext\ldots\vspace{\stretch{1}}Thisgoesontothelastlineofthepage.
\pagebreak同一段或同一个表格中两行之间的距离可以用如下命令来指定:\\[length]使用命令\bigskip和\smallskip你可以获得一个预定义的垂直间距.
6.
4页面布局LATEX2ε允许你在\documentclass命令中指定纸张尺寸(papersize).
然后它将自动的选择合适的页边距.
但有些时候你可能不满意LATEX的预设值,这个时候你可以自己改变这些参数.
图6.
2中显示了所有能改变的页面参数.
这个图是用layout宏包产生的3.
先等等!
……在你开始幻想"让这个狭窄的页面看起来宽一点"之前,先花一些时间想想.
和LATEX中的大多数规定一样,缺省的页面布局是有其合理原因的.
确实,相对于你的MSWord页面来说,它看上去非常的狭窄.
但是看看你喜欢的书籍4并且统计每个标准文本行的字符数目.
你会发现每行的字符不超过66个.
现在你的LATEX页面也正是如此.
经验显示,如果在一行中塞入更多的3macros/latex/required/tools4我说的是卓有声誉的出版商正式出版的书籍.
6.
4页面布局93HeaderBodyFooterMarginNotesi8'Ei7cTi1'E'Ei3i10'E'Ei9Tci11i2cTi4Tci5Tci6Tc1oneinch+\hoffset2oneinch+\voffset3\oddsidemargin=28pt4\topmargin=23ptor\evensidemargin5\headheight=12pt6\headsep=18pt7\textheight=598pt8\textwidth=345pt9\marginparsep=7pt10\marginparwidth=115pt11\footskip=25pt\marginparpush=5pt(notshown)\hoffset=0pt\voffset=0pt\paperwidth=597pt\paperheight=845pt图6.
2–页面布局参数.
94定制LATEX字符,阅读将变得困难.
这是因为眼睛从行的开始移动到行的结束变得困难了.

wordpress公司网站模板 wordpress简洁高级通用公司主题

wordpress公司网站模板,wordpresss简洁风格的高级通用自适应网站效果,完美自适应支持多终端移动屏幕设备功能,高级可视化后台自定义管理模块+规范高效的搜索优化。wordpress公司网站模板采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时...

GigsGigsCloud(年付26美元)国际线路美国VPS主机

已经有一段时间没有听到Gigsgigscloud服务商的信息,这不今天看到商家有新增一款国际版线路的美国VPS主机,年付也是比较便宜的只需要26美元。线路上是接入Cogentco、NTT、AN2YIX以及其他亚洲Peering。这款方案的VPS主机默认的配置是1Gbps带宽,比较神奇的需要等待手工人工开通激活,不是立即开通的。我们看看这款服务器在哪里选择看到套餐。内存CPUSSD流量价格购买地址1...

提速啦:美国多IP站群云服务器 8核8G 10M带宽 7IP 88元/月

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

免费空间背景代码为你推荐
名侦探柯南644名侦探柯南新一出现的集数【600-现在的800多集】软银支付日本支付平台月付百万的女人们我们家的女人们92集在线观看 韩剧我们家的女人们92中字 我们家的女人们93集快播下载滚筒洗衣机和波轮洗衣机哪个好滚筒洗衣机和波轮洗衣机有什么不同麒麟820和980哪个好820和980哪个处理器好?视频剪辑软件哪个好视频剪辑哪个软件好用音乐播放器哪个好音乐播放器哪个好用英语词典哪个好买什么英语词典比较好苹果手机助手哪个好iphone手机助手哪个好用?尼康和佳能单反哪个好尼康和佳能哪个好
云服务器租用 长沙域名注册 北京vps主机 blackfriday kdata unsplash 香港新世界电讯 服务器日志分析 国外免费全能空间 阿里校园 世界测速 hdd 上海服务器 防cc攻击 lamp架构 阿里云邮箱登陆 带宽测试 七十九刀 免费赚q币 香港博客 更多