关闭

关闭

关闭

封号提示

内容

首页 lnotes.pdf

lnotes.pdf

lnotes.pdf

davidwu 2012-05-18 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《lnotespdf》,可适用于IT/计算机领域,主题内容包含LATEXNotesvAlphaHuang年月日http:wwwdralphacom看什么看没见过空白页?序满纸荒唐言一把辛酸泪!都云作者痴谁解其中符等。

LATEXNotesvAlphaHuang年月日http:wwwdralphacom看什么看没见过空白页?序满纸荒唐言一把辛酸泪!都云作者痴谁解其中味?|曹雪芹最早听说LATEX大约是年一位同事演示了用它排版的一篇文章和几幅图。包老师不以为然因为那些东西用MicrosoftWord和Visio也可以做到而且可以做得更快。再次听说它是王垠同学在闹退学传说他玩Linux和LATEX而走火入魔。大约是年底看了一下lshort用LATEX记了些数学笔记开始有点感觉。包老师生性愚钝所以喜欢相对简单的东西。HTML、Java都用手写FrontPage、Dreamweaver、JBuilder之类笨重的家伙看两眼就扔了所以喜欢上LATEX只是时间问题。次年老妻要写博士论文拿出Word底稿让我排版。大家都知道Word太简单了谁都能用但是不是谁都能用好。人称电脑杀手的老妻制作的Word文档自然使出了各种奇门遁甲加上她实验室、学校和家里电脑里的三个EndNote版本互不兼容实在难以驯服。我只好重起炉灶拿她的博士论文当小白鼠试验一下LATEX的威力。就这样接触了两三年总算略窥门径感觉LATEX实在是博大精深浩如烟海。而人到中年大脑储存空间和处理能力都有点捉襟见肘故时常作些笔记。一来对常用资料和问题进行汇编索引便于查询二来也记录一些心得。当年作博士论文时虽不曾增删五次披阅十载也被折磨得欲仙欲死故与室友戏言将此五绝加入序言。多年以后的今天终于实现了此夙愿。吾有多重人格比如本色的是阿黄下围棋的是隐忍灰衣人道貌岸然的是包老师。iv序日前老妻吵着要学LATEX便想这份笔记对初学者或有些许借鉴意义于是系统地整理了一番添油加醋包装上市。原本打算分九章以纪念《九章算术》实际上第八章完成时已如强弩之末最后一章还须另择黄道吉日。本文第一章谈谈历史背景第二章介绍入门基础第三至五章讲解数学、插图、表格等对象的用法第六章是一些特殊功能第七、八章讨论中文和字体的处理第九章附加定制内容。从难易程度上看前两章较简单插图、字体两章较难。一般认为LATEX相对于微软的傻瓜型软件比较难学所以这里采取循序渐进温水煮青蛙的方法。初则示弱麻痹读者再则巧言令色请君入瓮三则舌绽莲花诱敌深入彼入得罄中则摧动机关关门打狗继而严刑拷打痛加折磨待其意乱情迷彷徨无计之时给予当头棒喝醍醐灌顶虽戛然而止亦余音绕梁。鄙人才疏学浅功力不逮面对汗牛充栋罄竹难书的资料未免考虑不周挂一漏万或有误导敬请海涵。若有高手高手高高手略拨闲暇指点一二在下感激不尽。借此感谢一下老妻如果不是伊天天看韩剧包老师也不会有时间灌水和整理这份笔记。此处用法循阿扁古例。huangxinganggmailcom目录序iii简介历史回顾优点和缺点软件准备学习方法入门Hello,World!格式及其转换页面描述语言格式转换LATEX语句文档结构文档类、序言、正文标题、摘要、章节目录文字排版字符输入换行、换页、断字字样、字号vi目录常用命令环境列表对齐摘录原文照排交叉引用脚注长度单位盒子mbox和fboxmakebox和frameboxparbox和minipage数学数学模式基本原素字母指数、下标、根号分数运算符分隔符箭头标注省略号空白间距矩阵和行列式多行公式长公式公式组定理和证明数学字体目录vii插图图形格式EPSDriver们的口味图形格式转换插入图形插入命令缩放、旋转gure环境插入多幅图形图形绘制工具比较METAPOST准备工作基本图形对象点和线宽图形控制编程功能PSTricks准备工作基本图形对象图形控制对象布局PGF准备工作基本图形对象图形控制样式流程图表格简单表格表格宽度viii目录跨行、跨列表格彩色表格长表格杂项超链接长文档参考文献BibTeXnatbib索引页面布局中文字符集和编码中文解决方案CJK的使用字体字样字体格式点阵字体和矢量字体常见字体合纵连横字体应用DVIdvipsdvipdfm(x)TrueType字体安装配置目录和文件ttftfm字体定义文件配置ttfpk目录ix配置dvipdfmx跋看什么看没见过空白页?第一章简介滚滚长江东逝水浪花淘尽英雄。是非成败转头空。青山依旧在几度夕阳红。白发渔樵江渚上惯看秋月春风。一壶浊酒喜相逢。古今多少事都付笑谈中。|杨慎《临江仙》历史回顾LATEX是一种面向数学和其它科技文档的电子排版系统。一般人们提到的LATEX是一个总称它包括TEX、LATEX、AMSLATEX等。TEX的开发始于年月DonaldEKnuth开发它的初衷是用于《TheArtofComputerProgramming》的排版。年Knuth开始写一本关于编译器设计的书原计划是章的单行本。不久Knuth觉得此书涉及的领域应该扩大于是越写越多如滔滔江水连绵不绝又如黄河泛滥一发不可收拾。年完成的初稿居然有页全是手写的!据出版商估计这些手稿印刷出来需要页出书的计划只好改为七卷每卷一或两章。年Knuth改写第二卷的第二版时很郁闷地发现第一卷的铅版不见了而当时电子排版刚刚兴起质量还差强人意。于是Knuth仰天长啸:我要扼住命运的咽喉"决定自己开发一个全新的系统这就是TEX。一般认为TEX是一种引擎LATEX是一种格式而AMSLATEX等是宏集。此处目的是简介故不展开讨论。斯坦福大学计算机系教授已退休。第一章简介年TEX第一版发布后好评如潮Knuth趁热打铁在年发布了第二版。人们现在使用的TEX基本就是第二版中间只有一些小的改进。年TEXv发布后Knuth宣布除了修正bug外停止TEX的开发因为他要集中精力完成那本巨著的后几卷。此后每发布一个修正版版本号就增加一位小数使得它趋近于(目前是)。Knuth希望将来他离世时TEX的版本号永远固定下来从此人们不再改动他的代码。他开发的另一个软件METAFONT也作类似处理它的版本号趋近于e目前是。TEX是一种语言也是一个宏处理器这使得它很好很强大但是它同时又很繁琐让人难以接近。因此Knuth提供了一个对TEX进行了封装的宏集PlainTEX里面有一些高级命令有了它最终用户就无须直接面对枯燥无味的TEX。然而PlainTEX还是不够高级所以LeslieLamport在年代初期开发了另一个基于TEX的宏集LATEX。年LATEXv发布后Lamport退居二线之后的开发活动由FrankMittelbach领导的TheLaTeXTeam接管。此小组发布的最后版本是年的LATEX"他们同时还在进行LATEX的开发只是正式版看起来遥遥无期。起初美国数学学会(AmericanMathematicalSocietyAMS)看着TEX是好的就派MichaelSpivak写了AMSTEX这项基于PlainTEX的开发活动进行了两年({)。后来与时俱进的AMS又看着LATEX是好的就想转移阵地但是他们的字体遇到了麻烦。恰好Mittelbach和RainerSchÄopf(后者也是LaTeXTeam的成员)刚刚发布了NewFontSelectionSchemeforLATEX(NFSS)AMS看着还不错就拜托他们把AMSFonts加入LATEX继而在年请他们开发AMSLATEX。AMSLATEX发布于年之后它被整合为AMS宏包像其它宏包一样可以直接运行于LATEX。已出版的前三卷是:《FundamentalAlgorithms》、《SeminumericalAlgorithms》、《SortingandSearching》第四卷《CombinatorialAlgorithms》和第五卷《SyntacticAlgorithms》正在写作中预计年出版第六卷《TheoryofContextfreeLanguages》和第七卷《CompilerTechniques》尚未安排上工作日程。现供职于微软研究院。优点和缺点优点和缺点当前的文字处理系统大致可以分为两种:标记语言(MarkupLanguage)式的比如LATEX所见即所得(WYSIWYG)式的比如MSWord。一般而言LATEX相对于所见即所得系统有如下优点:ˆ高质量它制作的版面看起来更专业数学公式尤其赏心悦目。ˆ结构化它的文档结构清晰。ˆ批处理它的源文件是文本文件便于批处理虽然解释(parse)源文件可能很费劲。ˆ跨平台它几乎可以运行于所有电脑硬件和操作系统平台。ˆ免费多数LATEX软件都是免费的虽然也有一些商业软件。相应地LATEX的工作流程、设计原则资源的缺乏以及开发人员的历史局限性等种种原因也导致了一些缺陷:ˆ制作过程繁琐有时需要反复编译不能直接或实时看到结果。ˆ宏包鱼龙混杂水准参差不齐风格不够统一。ˆ排版风格比较统一但因而缺乏灵活性。ˆ用户支持不够好文档不完善。ˆ对国际语言和字体的支持很差。抛开MSWord不谈即使跟同为标记语言的HTMLWeb系统相比LATEX也有一些不足之处。比如Web浏览器对HTML内容的渲染(render)比DVI浏览器对LATEX内容的渲染要快上许多基本上可以算是实时。虽然HTML内容可能没有LaTeX那么复杂但是DVI毕竟是已经被LATEX编译过的格式。其实Word也有自己的标记语言域代码(eldcode)只是一般用户不了解。第一章简介还有一点令人困惑的是有一部分LATEX阵营的人士习惯于称对方为邪恶的"或出卖灵魂的"如果昂贵的微软系统应当为人诟病那么更贵的苹果系统为何却被人追捧?年有记者在采访Lamport时问:为什么当前没有高质量的所见即所得排版系统?"他回答道:门槛太高了一个所见即所得系统要做到LATEX当前的水平工作量之大不是单枪匹马所能完成。微软那样的大公司可以做但是市场太小了。我偶尔也会想加入DarkSide"让微软给我一组人马来开发一个这样的系统。"(包老师注:他果然于次年加入微软。)窃以为这两大阵营其实是萝卜青菜的关系与其抱残守缺、互相攻讦不如各取所需甚至可以捐弃前嫌、取长补短共建和谐社会。软件准备LATEX是一个软件系统同时也是一套标准。遵照这些标准实现了(implement)所要求功能的软件集合被称为发行版(distribution)。与此类似的例子有Java和Linux比如SUN、IBM、BEA等公司都有自己的Java虚拟机(JVM)它们都被称作Java的实现而Linux有RedHatFedora、Ubuntu、SuSE等众多的发行版。表:LATEX发行版与编辑器操作系统发行版编辑器WindowsMikTeXTeXnicCenter、WinEdtUnixLinuxTeXLiveEmacs、vim、KileMacOSMacTeXTeXShopLATEX发行版只提供了一个LATEX后台处理机制用户还需要一个前台编辑器来编辑它的源文件。常用的LATEX发行版和编辑器见表。在使用LATEX的过程中可能还需要其它一些软件将在后面相关章节中分别介绍。TEXLATEX也不单单是那几个大腕儿完成的他们背后还有众多默默无闻的小人物比如当年Knuth手下的大批学生。此所谓一将功成万骨枯。学习方法学习方法在科学上没有平坦的大道只有那些不畏劳苦沿着陡峭山路攀登的人才有希望达到光辉的顶点。|卡尔马克思无他唯手熟尔。|卖油翁用心。|斯蒂芬周限于篇幅和水平本文只能提供一个概览外加一些八卦。比较严谨的入门资料有TobiasOetiker的《A(NotSo)ShortIntroductiontoLATEX"》(简称lshort)若想对LATEX有更深入全面的了解可以拜读Mittelbach的《TheLATEXCompanion》。中文资料可参考李果正的《大家来学LATEX》lshort有吴凌云等人翻译的中文版本。ComprehensiveTeXArchiveNetwork(CTAN)和TeXUsersGroup(TUG)提供了权威、丰富的资源。英国TUG和CTeX分别提供了常见问题集(FAQ)一般问题多会在这里找到答案。中文TEX论坛有水木清华BBSTeX版、CTeX论坛。参考文献TobiasOetikerA(NotSo)ShortIntroductiontoLaTeXe,URLhttp:wwwctanorgtexarchiveinfolshortenglishFrankMittelbach,MichelGoossens,JohannesBraams,DavidCarlisle,andChrisRowleyTheLaTeXCompanion(ToolsandTechniquesfor此译本首发于CTeX论坛但是需要注册才能看见链接所以请读者自行搜索。第一章简介ComputerTypesetting)AddisonWesley,ndedition,URLhttp:wwwamazoncomexecobidostgdetail李果正大家来学LaTeX,URLhttp:edtsayyaorgtexlatexUKTeXUserGroupUKListofTeXFrequentlyAskedQuestionsURLhttp:wwwtexacukfaq中国TeX用户组CTeX常见问题集,URLhttp:wwwctexorgCTeXFAQ第二章入门Hello,World!把下面例子用编辑器保存为helloworldtex这就是一个最简单的LATEX源文件。helloworldtexdocumentclass{article}begin{document}Hello,World!end{document}有了源文件我们可以在命令行把它编译成DVI文件(DVI格式见小节)。此命令知道输入的是LATEX源文件所以这里的tex后缀可以省略。以后的示例中可以省略的后缀都用()标出不再特别声明。latexhelloworld(tex)如果系统显示类似下面的错误信息请检查源文件是否有拼写错误。log文件里有更详细的编译信息。!LaTeXError:!EmergencystopNopagesofoutputTranscriptwrittenonhelloworldlog第二章入门如果编译成功系统会报出类似下面的信息:Outputwrittenonhelloworlddvi(page,bytes)Transcriptwrittenonhelloworldlog每种LATEX发行包附带不同的DVI浏览器比如MiKTeX的是yap。yaphelloworld(dvi)格式及其转换页面描述语言页面描述语言(PageDescriptionLanguagePDL)是一种在较高层次上描述实际输出结果的语言。本文只讨论其中三种与LATEX紧密相关的格式:DVI、PostScript、PDF。PostScript最早的打印机只用于打印字符它使用的硬字符与打字机类似。后来出现的点阵(dotmatrix)打字机用一系列的点来画"出字符当然它也可以画出图形。当时矢量图的打印只能由绘图仪(plotter)来完成。年施乐(Xerox)推出了首台激光打印机它结合了点阵打印机和绘图仪的优点可以同时打印高质量的图形和文字。同一时期JohnWarnock也在酝酿一种类似于Forth的图形设计语言也就是后来的PostScript(PS)当时他正在旧金山一家电脑图形公司EvansSutherland工作。年老板想让Warnock搬到位于犹他州的总部他不想搬家就跳槽到了施乐。Warnock和MartinNewell开发了新的图形系统JaM(JohnandMartin)它后来被合并到施乐的打印机驱动程序InterPress中去。这两位还开发过另一个系统MaJ。年Warnock和施乐研究中心图形实验室主任ChuckGeschke一起离开施乐成立了Adobe公司。Newell后来也加入了Adobe。格式及其转换年Adobe发布PS后不久SteveJobs跑来参观并建议用它来驱动激光打印机。次年武装着PS驱动的AppleLaserWriter横空出世打响了年代中期桌面出版革命的第一枪。年代中后期廉价喷墨打印机的流行使得PS逐渐式微因为PS驱动对它们毕竟是一个成本负担。PDF年Adobe推出了一种开放的格式:PortableDocumentFormat(PDF)它于年成为ISO标准。除了开放PDF比起PS还有一些其它优势:ˆPDF基本上是PS的一个子集因此更轻便。ˆPDF可以嵌入更先进的字体具体见节。ˆPDF支持嵌入乱七八糟的东东比如动画。ˆPDF支持透明图形。PDF虽然拥有上述优势起初它的推广却并不顺利因为其读写工具Acrobat太贵。Adobe很快推出了免费的AcrobatReader(后更名为AdobeReader)并不断改进PDF终于使它超越了曾经的事实标准PS成为网络时代电子文档的新标准。DVIKnuth最初设计的TEX只能用于XGP打印机这台打印机本身还需要一台PDP主机为它服务。年DavidFuchs提出把TEX的输出改为设备无关的格式也就是DeviceIndependentformat(DVI)。DVI只是一种中间格式用户还需要另外的处理程序(driver)把它转换为其它格式比如PS或PDF甚至PNG、SVG等。DVI不能嵌入字体和图形PS和PDF可以选择是否嵌入字体。Fuchs本科毕业于普林斯顿年进入斯坦福攻读博士学位。他不是Knuth的学生但是完成过一些TEX的开发任务。他在Adobe工作过一段时间现在混入了娱乐圈担任过电影《RedDiaperBaby》和《HaikuTunnel》的制片人。第二章入门GhostscriptPS输出时需要一个解释器(RasterImageProcessorRIP)来把它转换为点阵图形。RIP可以是软件也可以是固件(rmware)或硬件。Ghostscript是一个基于RIP的软件包除了RIP它还有一些其它功能比如处理EPS把PS转换为PDF等。Ghostscript已经被移植到Windows、UnixLinux、MacOS等多种操作系统和它匹配的前端图形用户界面(GUI)有GSview、Ghostview、gv等。格式转换DVI、PS、PDF等格式的的转换关系如图所示。texdvipdfpslatexdvipdfmdvipspspdfpdatex图:格式转换最早的driver是dvips它把DVI转换为PS。dvipdf把DVI转为PDF它后来被dvipdfm所取代dvipdfm主要用于处理单字节字符年之后停止开发在dvipdfm基础上发展来的dvipdfmx可以处理多字节编码(字符编码详见节)。pdfTEX是一种特殊的driver它跳过DVI直接用TEX源文件生成PDF。基于pdfTEX的pdfLATEX则把LATEX源文件转为PDF。包老师倾向于dvipdfmx因为它对图形格式的兼容性较好而且擅长处理中文。得到DVI后我们可以在控制台用以下命令把它转为PDF。dvipdfmhelloworld(dvi)固件RIP在打印机内置处理器上运行硬件RIP常见于高端打印设备。LATEX语句我们也可以把它转为PS接着用Ghostscript的一个命令行程序把它转换为PDF注意第二个命令需要ps后缀。一般情况下不推荐这种方法因为它多了个步骤。dvipshelloworld(dvi)pspdfhelloworldpspdfLATEX用法如下。pdflatexhelloworld(tex)LATEX语句LATEX源文件的每一行称作一条语句(statement)语句可以分三种:命令(command)、数据(data)和注释(comment)。命令分为两种:普通命令和环境(environment)。普通命令以起始大多只有一行而环境包含一对起始声明和结尾声明用于多行的场合。命令和环境可以互相嵌套。数据就是普通内容。注释语句以起始它在编译过程中被忽略。例如在节例中第一行是注释第二行是普通命令第三、五行是环境的起始和结尾声明第四行是数据。文档结构文档类、序言、正文LATEX源文件的结构分三大部分依次为:文档类声明、序言(可选)、正文。文档类声明用来指定文档的类型序言(preamble)用来完成一些特殊任务比如引入宏包定义命令设置环境等文档的实际内容则放在正文部分。这里的正文指得是begin{document}和end{document}之间的部分和通常人们心目中的正文"概念有所出入。这三部分的基本语法如下:第二章入门documentclassoptions{class}文档类声明usepackageoptions{package}引入宏包begin{document}正文end{document}常用的文档类(documentclass)有三种:article、report、book它们的常用选项见表。表:文档类常用选项pt,pt,pt正文字号缺省pt。LATEX会根据正文字号选择标题、上下标等的字号。letterpaper,apaper纸张尺寸缺省是letter。notitlepage,titlepage标题后是否另起新页。article缺省notitlepagereport和book缺省有titlepage。onecolumn,twocolumn栏数缺省单栏。oneside,twoside单面双面。article和report缺省单面book缺省双面。landscape打印方向横向缺省纵向。openany,openright此选项只用于report和book。report缺省openanybook缺省openright。draft草稿模式。有时某些行排得过满draft模式可以在它们右边标上粗黑线提醒用户。LATEX的核心只提供基本的功能系统以宏包(package)的形式提供附加功能或增强原有功能。其它一些编程语言也有类似的模块化机制比如CC的#includeJava的import。标题、摘要、章节一份文档正文部分的开头通常有标题、作者、摘要等信息之后是章节等层次结构内容则散布于层次结构之间。文档结构标题、作者、日期等命令如下注意maketitle命令要放在最后。title{标题}author{作者}todaymaketitle摘要环境用法如下:begin{abstract}end{abstract}常用的层次结构命令如下chapter{}section{}subsection{}subsubsection{}每个高级层次可以包含若干低级层次。article中没有chapter而report和book则支持上面所有层次。目录我们可以用tableofcontents命令来生成整个文档的目录LATEX会自动设定目录包含的章节层次也可以用setcounter命令来指定目录层次深度。tableofcontentssetcounter{tocdepth}{}如果不想让某个章节标题出现在目录中可以使用以下带*的命令来声明章节。chapter*{}section*{}subsection*{}第二章入门类似地我们也可以用以下命令生成插图和表格的目录插图和表格功能将在后面章节中介绍。listoffigureslistoftables当章节或图表等结构发生变化时我们需要执行两遍编译命令以获得正确结果。LATEX之所以设计成这样可能是因为当时的电脑内存容量有限。文字排版字符输入文档中可以输入的内容大致可以分为:普通字符、控制符、特殊符号、注音符号、预定义字符串等。而这些内容有两种输入模式:文本模式(缺省)和数学模式普通的行间(inline)数学模式用$$来表示。LATEX中有些字符(例如#$^{}~等)被用作特殊的控制符所以不能直接输入多数需要在前面加个。而本身则要用textbackslash命令来输入因为被用作了换行指令。很奇怪为什么不用C语言的n也许是因为TEX的编程语言是Pascal。#$^{}{}~{}textbackslash表提供了一些符号的输入方法示例完整的符号列表见ScottPakin的《TheComprehensiveLATEXSymbolList》。换行、换页、断字通常LATEX会自动换行、换页。用户也可以用或newline来强制换行用newpage来强制换页。一般情况下LATEX会尽量均匀地断字(Hyphenate)使得每一行的字间距分布整齐。但有时我们也需要显式指明断字位置比如下例就指明BASIC这个词不能断开而blarblarblar可以在处断开。hyphenation{BASICblarblarblar}文字排版表:一些符号和预定义字符串特殊符号注音符号预定义字符串textcopyrightºaaaJune,todaytextregisteredºAAATEXTeXC$^circ$CaeLATEXLaTeXtextyenoLATEX"LaTeXepoundsÄo"oMETAFONTMFtexteuroo^^oMETAPOSTMPdots~o~o字样、字号LATEX会自动调整正文、标题、章节、上下标、脚注等的字样、字号。我们也可以用表中的命令来设置字样用表中的命令来设置相对字号比如正文字号是pt、pt、pt时tiny的字号就分别是pt、pt、pt。LATEX有一个特别的字样强调命令:emph它在不同字样和装饰环境下有不同效果。比如周围文字是正体它就是斜体反之它就是正体。表:字样命令textrm{}romantextbf{}boldfacetextsf{}sansseriftextit{}italictexttt{}typewritertextsl{}slantedemph{}emphasizedunderline{}underlinetextsc{}SmallCaps关于字样详见节第二章入门表:字号命令正文字号命令ptptpttinyptptptscriptsizeptptptfootnotesizeptptptsmallptptptnormalsizeptptptlargeptptptLargeptptptLARGEptptpthugeptptptHugeptptpt常用命令环境列表LATEX中有三种列表环境:itemize、enumerate、description它们的一般用法如下:begin{itemize}itemCitemJavaitemHTMLend{itemize}ˆCˆJavaˆHTMLbegin{enumerate}itemCitemJavaitemHTMLend{enumerate}

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/21
仅支持在线阅读

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料