关闭

澳际学费在线支付平台

学术写作利器——LaTeX入门教程

刚刚更新 编辑: 英国 浏览次数:176 移动端

141031091001_WgEvw.jpg

文/三江小渡

LaTeX比Word更适合学术写作的编纂语言。写学术相关的论文、幻灯片、报告之类,其实也可以用来做简历,只要找对package和模板。

LaTeX是专为学术写作开发的语言和编纂程序,拥有强大的package资源,这意味着用LaTeX写作可以避免Word带来的令人头疼的排版问题,而且世界上有很多人已经写好了针对各种写作格式的coding package,我们只需要套用这些package就行了。很多主流学术期刊都有自己的LaTeX模板,所以要把同一篇文章投给不同期刊的话,只要套用相应的package就可以了,比起在word里面一点点调整页边距行距引用格式之类的细节,LaTeX的效率显然要高得多。

Credit:讲座是敝系的几个技术宅办的,作者只负责记录和整理。后面的更新是个人心得。写这篇日志的初衷是小圈子分享和个人心得记录,适合完全不了解tex的入门者阅读,我的水平有限所以肯定有所疏漏,欢迎提出建议。具体使用什么写作工具,还要看写作内容和个人习惯,毕竟优化工作效率才是最终目标 :) 有兴趣的可以翻翻推荐语,有不少高人给出了相关资源和意见。

第一眼看上去,LaTex的语法也许有些吓人,但是只要你熟悉了基本的编纂模式,就会发现它的强大之处。 第一部分:新手资源

线上编纂 LaTeX可以进行线上编纂,好处是能够随时自动保存工作进度和数据,而且可以多人合作编写文档。 常用的LaTex online compiler基本就是sharelatex.com和writelatex.com这两个,需要注册,基本账户免费。 本地编纂 如果希望用LaTeX Compiler在本地电脑工作,则需要以下软件: For Windows: MikTex: 和TexMaker: For Mac: MacTeX: 和TexMaker,地址同Windows. 之所以都需要两个软件是因为它们各自的作用不同:MikTex是package管理软件,而TexMaker是用这些package和你自己的文字来生成最终PDF文件的软件。package的作用会在下面专门解释。 下面以sharelatex.com的界面为例子演示LaTeX的基本编纂规则和package的作用。 第二部分:文档编写基础 基本界面 打开sharelatex.com注册账号之后,点击右上角的New Project,在下拉菜单中选择example project,随便起个名字,出现这个Metro风格的界面。

ShareLaTeX基本界面
ShareLaTeX基本界面
如果图太小看不清请戳 B栏中蓝色的字符是function,function后面{}的里面是argument。LaTeX的function使用“”符号表示开头,“%”表示comment out即不执行此行代码。有编程知识的同学都知道这些语句的意义是把特定的argument插入到function表达式中,LaTeX也不例外。 基本function解释 documentclass{article}的意思是这篇文档的类型是学术文章,除此之外也有book,booklet等其他出版物类型,这一句限定了排版能够使用的格式,比如说如果类型是article,那么排版就可以用APA/Chicago/MLA等版式,而不是专用于booklet的一些版式; userpackage这一行不用改动,只是定义文档的编码方式; title是整个文档的标题,会自动居中,可以试着把例子中的42改成其他标题,再点击Recompile,可以看到生成了带新标题的文件。 再往下,author和date是文档的作者和日期信息,如果想让date自动显示今天的日期,就把这一行改为date{today}。 下面两行usepackage规定了文档使用的文字排版是natbib,图表排版是graphicx。natbib在理科写作中比较常用,如果要换成文科生常用格式比如APA的话,把上面一行改成:usepackage{apacite}。 这里就要讲到package的作用了。package类似于一个插件,能够把各种事先设定好的标准排版方式、图表排列方式、公式生成方式等等直接插入文档中,免去了手动调整这些参数的麻烦。很多常用的package都有高人写好的代码,我们只要拿过来用就行了,比用word调整页边距、页码等等要方便得多。apacite就算是一个广泛使用的package,我们学校也有专门的机构负责编写论文排版的package,我们只要在usepackage{}中把这些package作为argument插入{}就可以了。 如果需要的话,我们可以在下一行加一个function:tableofcontents,然后点击recompile,可以看到latex会自动在标题后面插入目录,而且目录内容会根据后面的正文小标题改变。还可以在tableofcontents后面加上另一个function:pagebreak,这样文档的正文就会另起一页。pagebreak类似于word里面的分页符,在任何需要分页的地方都可以使用。 begin{document}是正文正式的开始标志,相应的结束标志end{document}则在文档最后。end{document}后面的任何内容都不会在compile里面显示出来,所以如果我们需要只把编码的一部分生成文档,只要在这部分的结束处输入end{document}就行了。begin和end的命令也适用于标记文中插入的图表的起始和结束。 很多时候我们还需要在文章前面加上abstract,方法也很简单,只要像下面这样进行编码: begin{document} maketitle begin{abstract} (这里放置abstract的文字) end{abstract} 就可以了。 注意maketitle这一行一定要在begin{document}的下面,否则LaTeX会判定为语法错误。maketitle命令的作用是把标题信息(也就是begin{document}之前的title,author,date等)显示出来,如果comment out或者删去maketitle这一行,这些标题信息将不会显示在C栏的PDF中。当然,如果你正好不需要显示标题,就可以删去这个命令。 section{introduction}是对文档部分的划分,括号里是这部分的名称,latex会生成具体的部分数字编号。子分层的命令是subsection。一般来说latex不允许过多子分层,比如说在usepackage{apacite}规则中,只允许两个子分层也就是subsubsection{}。 了解了以上基础知识之后,就可以进行最基本的LaTeX文档编写了。下面几部分要讲的是如何插入引用和生成参考书目。 第三部分:引用 Google Scholar和LaTeX的协作 打开Google Scholar首页,点击右上角设置,将“参考书目管理软件”设置为“显示导入BibTex的链接”。然后随便搜索一篇文章,点击搜索结果下面的“导入BibTex”,可以看到几行代码,这就是LaTeX能够识别的bibliography。
设置导入BibTeX之后的Google Scholar条目
设置导入BibTeX之后的Google Scholar条目
点击“导入BibTex”之后的代码
点击“导入BibTex”之后的代码
把这几行代码复制粘贴到sharelatex界面A栏的rerence.bib中:
讲代码复制到rerence.bib里面
将代码复制到rerence.bib里面
但是如果这时候点recompile,会看到生成的rerence里并没有新加入的这篇文章,因为我们在正文中还没有引用它。 于是接下来讲一下如何在正文中插入引用。 在正文中插入引用 复制刚才粘贴的代码的第一行中划红线的内容(也就是BibTeX自动生成的引用文章代码),然后在正文中需要插入引用的部分插入citeA{文章代码},这样就能在正文中引用了。
正文中引用,注意只复制文章代码
正文中引用,注意只复制文章代码
这时候再点recompile,才能看到rerence中出现了新加的这篇文章。注意:citeA是APA格式的引用function,示例文档代码里面的citep是另一种排版格式的引用function。 在rerence中,latex会自动调整文章标题的大小写为只大写首单词的开头字母。如果需要保留文章原标题的大小写格式,就在rerence.bib里面相应文章标题title的两边再加上一个括号{},比如title={{A bird’s-eye view of learner CORPUS research}},就可以保留原标题的大小写了。 第四部分:LaTeX维基百科全书

上面也提到了LaTeX的function中有很多不同的package供选择,那么到哪里去找不同类型的package呢?比如说我这篇文章用了apacite,那如果我下一篇文章要用MLA格式,该用什么package? LaTeX的维基页面 页面中详细列出了各部分function所能够使用的package,只要点开目录链接去找到package名称就行了。对于本地编纂软件来说,则需要下载package之后用MikTex来进行管理。 (今天的讲座只讲到了这里,下周继续写) 2013. 04.05 期末赶论文期间更新 自从写了LaTeX教程笔记之后,我试着用ShareLatex代替word完成了三个written assignment和两个presentation,写作体验和效果都还不错。所以像我一样的文科僧大可不必对写代码这件事感到头疼,比起HTML/CSS,LaTeX还算是对新手比较友好的,毕竟很多常用的格式和排版都有写好的LaTeX package。 下面就以我自己已经完成的一个assignment和一个presentation作为例子来讲LaTeX的具体应用和注意事项。主要涉及的document type有article和beamer两种,主要的功能有1)用qtree画树形结构,2)用tabular做表格,3)调整行间距/字体字号/页边距等,4)beamer(幻灯片)的一些简单排版。 ********实例一:用Beamer做presentation******* LaTeX也可以做幻灯片,而且直接保存为pdf格式,不用担心pptx在不同的电脑上渲染效果不同了。网上有一个流传较广的Beamer Quick Start: 也比较实用。 【PREAMBLE】

首先在preamble(就是begin{document}前面的那些部分)中定义:documentclass[xcolor=dvipsnames]{beamer} 其中方括号[]里的指令是要求beamer使用xcolor来生成dvipsnames指定的色彩效果。LaTeX的很多指令都是这个[]{}的格式,大多数遵循【[ ]定义具体参数 - { }定义上层argument】的规则,所以这一行的意思是“建立一个颜色可由dvip指定的beamer文件”。(beamer自带的dault) 然后下面这几行: usecolortheme[named=Maroon]{structure} usetheme{Boadilla} usepackage{helvet} usecolortheme就是来指定beamer的颜色是Maroon,{structure}的意义我也不清楚,大概是只在heading和title这些构建structure的文字上菜使用自定义颜色的意思。所以可以看到,生成的slide中只有标题和页脚等部分才是红色的。 usetheme是指定beamer的主题,类似ppt中的设计模板。BQS中给出了好几个常用的theme。需要注意的是有一些不常用的theme是不会直接被sharelatex识别的,必须和开发者设计的其他的指令配合使用。不过类似Boadilla,Warsaw,Singapore和BQS里面给的这些theme都能被sharelatex识别,而且足够应付一般的presentation了。 usepackage{helvet}用来指定beamer使用的字体。beamer的默认字体是略带圆角的某个字体,如果不喜欢的话就在preamble中另外设置,几个比较常用的helvet (Helvetica),times (Times New Roman),bookman (Bookman Old Style),serif等等都是不错的选择。字体对应的名称见: 中的第48页。 【标题和页眉设置】

title[Short title of the presentation]{Full title of the presentation} 标题:方括号是缩写,会显示在每一张slide的页脚;大括号里是完整的标题。 subtitle{subtitle here} 副标题。 author[John Smith]{John Smith} 演讲者姓名。方括号里的名字会显示在页脚中。 institute[XX University]{M.A. in XXX XXX University[1ex] texttt{example@XXX.edu}} 演讲者的affiliation。方括号还是页脚内容。大括号中的用来分行,[1ex]用来减小email的字号。 date[March 2013]{today} 演讲日期。估计都已经摸着规律了,beamer中title这几行,方括号里都是页脚的内容。 【插入新幻灯片】

begin{document}之后就是幻灯片正文了。每一张幻灯片的起始和结束用begin{frame}和end{frame}来标示。这两个tag之间的代码就是这张幻灯片上的内容。begin{frame}{slide title}则可以把title直接插入页眉,更符合实际需要;但是相应的end{frame}后面不需要加上{slide title}。 【插入Bulletin point】

begin{itemize} item (空一格后输入每个point的内容) item (同上) item ... end{itemize} 【插入数字列表】

begin{enumerate} item item item ... end{enumerate} (学过HTML的同学可以把itemize和enumerate理解为ordered list和unordered list) 【分行】 在两行文字中间插入par。也可以用一行空白来代替。 需要较大行间距,则可在两行之间插入: par bigskip 【插入图片】

先把要插入的图片用A栏的upload file导入。如果compiler是pdfLaTeX的话,常用图片格式比如JPG/PNG/BMP都兼容,如果compiler是LaTeX则只有EPS才能插入。compiler可在setting中设置。 导入之后,输入插入图片的指令includegraphics[scale=X]{X.PNG},如下图所示,左边为代码,右边为对应的slide:

用includegraphics插入图片(红色划线部分)
用includegraphics插入图片(红色划线部分)
scale就是图片的缩放,X一般是个大于0小于1的数字,比如0.6就是原图片缩放百分之六十。{ }里面是图片文件名。【注意:图片文件名中不能有空格,否则latex无法识别】 如果需要让图片居中,则需要centering这个命令: ... par centering includegraphics[] {} par ... 经个人实验得出结论:par这个空行命令在这里是必不可少的,因为如果不用par把居中的图片和上下文分隔开的话,上下文靠近图片的部分也会居中。 插入图片的方法是把图片作为Figure插入,比如:(建立一个example file也能看到类似的例子) begin{figure}[h!] centering includegraphics[scale=1.7]{universe.jpg} caption{The Universe} label{threadsVsSync} end{figure} 这样还能给图片加上caption,功能更完善一些。 【控制内容显示先后顺序】

LaTeX也可以实现powerpoint那种逐一显示每一项的效果。还是刚才那张图:

用pause控制内容显示顺序(蓝色划线)
用pause控制内容显示顺序(蓝色划线)
加入pause这个命令后,下面新加入的内容会在一张新的slide上显示,播放的时候,配合讲解,可以营造一种“揭晓谜底”“步步推进”的效果。 【插入简单表格】
插入简单表格
插入简单表格
图片中代码太小看不清楚所以直接复制在这里:

begin{frame}{Quantifier and Scope} The scope of quantifier is directly rlected by the surface structure; par bigskip begin{center} begin{tabular}{|c|c|c|c|} hline textsc{Obj} position & Scrambling & Trace & Ambiguity hline Spec,TP & A-scrambling & non-recoverable & unambiguous hline Spec,HP & A'-scrambling & recoverable & ambiguous hline end{tabular} end{center} (cf.23 and 24) par bigskip Disambiguation can be reached by inserting a higher adverb such as 'fortunately'. end{frame} 关键就是从begin{center}到end{center}之间的这一段代码。 {center}是表格居中的命令; begin{tabular}{|c|c|c|c|} hline这一行建立表格的结构。其中第二个{ }里面有多少个用“|” 分开的格子,表格就有多少个column。可以把“|”理解为vertical line,很形象。每个格子里面能出现的字幕只有r/c/l三种,分别代表左对齐、居中、右对齐,所以这个表格所有的单元格都是居中对齐的。hline是加入一个horizontal line也就是分行的命令。 再往下是表格的具体内容: Spec,TP & A-scrambling & non-recoverable & unambiguous hline 因为设置了表格有四个column,所以对应的每一个row里面就要用三个“&”把四个column分隔开。“&”相当于“|”的作用。每一个row的结束由“空格 + ”标示。最后的hline用来给这一横行下面加上边栏。如果没有hline,就没有这一行下面的边栏。 以此类推,最后以 end{tabular} end{center} 结束这个表格。

© 版权属于原作者三江小渡 商业转载请联系原作者

立即咨询
  • 澳际QQ群:610247479
  • 澳际QQ群:445186879
  • 澳际QQ群:414525537