由于美赛的原因,我接触了LaTeX。当时的我抱着速成LaTeX且要学到东西的念头,打开各类学习平台,但总被各种奇奇怪怪却毫不实用的教程劝退。
某小电视网站上的视频大多分为三类:
1.古早到还在用TeXworks editor
2.讲解Overleaf但内容简单
3.有一定实用性但在用TeX studio或VS Code写LaTeX
本网站上的技术贴有不少好的内容,也主要分为三类:
1.内容略显单薄以至于刚到重点就断更了
2.内容略显臃肿,包含了太多“为什么是LaTeX”这类的轱辘话和只写正常论文800年也用不到的命令
3.少量实用但略冗长的技术贴
翻着翻着还是觉得这些帖子不能够实现“速成”,于是在跟着官方帖学习后,我决定自己开坑写文。这篇文章是我边学边写的成果,更多用于自己以后回顾,但也希望能够对想要入门LaTeX的你有所帮助。
本文最大的特点可能是并不试图从头把你教成LaTeX大师,更倾向于:
申明:本帖主要借鉴梳理了OverLeaf的官方入门贴+技术帖。全文会以英文论文为例进行讲解,中文论文格式类似。
特此附上本人学习过程中用到的Overleaf资料文档的链接:
在30分钟内学习LaTeX(如果你边看边练边记录,300分钟还差不多系列)
官方的超仔细学习文章(太多噜!!))
最后,新手上路,问题难免,还请各路大佬温柔指正,不要直接激情开麦。
一个略长的背景
目录
适用人群
一、LaTeX和Overleaf的简单介绍
1.LaTeX简介
2.认识Overleaf
3.从Overleaf中导出项目与文件
二、论文基础
1.普通论文
①论文的格式和内容
②段落格式
2.LaTeX论文
三、序言内容
1.分区
2.申明文档类型
3.导入宏包
4.信息申明
四、正文内容
1.分区
2.LaTeX中的“ \”
3.环境
4.内容与注释
5.空格、换行、强制换页
①空格
②换行
③强制换页
6.缩进与行高
①缩进
②行高
7.字体格式
8.对齐方式
9.我写到哪里了?
①正文
②摘要
③章节
④其他
10.图片
11.列表
12.表格
13.生成目录
五、数学公式
1.与数学相关的宏包
2.公式模式
3.学着“写”公式
六、页面的小装饰
1.页眉和页码
2.页码标识符
3.脚注
七、总结
想要快速拥有一定的LaTeX论文排版技能且能够联网的朋友。
你可以将LaTeX理解为一种语言工具,帮助你只使用键盘就完成论文的撰写与排版。输入文本得到内容,输入命令控制格式。
通过敲代码,论文内容会按照指定格式排布,实现排版效果。它与Word等传统文本编辑器最大的不同点在于:
数学公式方面,最简单的例子是:Word中分数的排版格式总是以1/2的形式出现,但LaTeX可以轻松呈现出的形式。你完全可以认为没有LaTeX无法排版的数学公式。
标准化复刻方面,由于LaTeX通过代码控制内容排版,通过复制粘贴代码可以快速而准确地实现内容的复现,避免了Word复制文本潜在的格式混乱问题。
我们需要着重学习的则是这门语言的语法和命令。
Overleaf是一个需要联网才能用的LaTeX在线排版网站(Overleaf),本文主要通过该网站实现。
经过注册等流程后,我们可以看到主页:
点击绿色的“New Project”按钮创建项目,通过选择“Blank Project”并自定义Project标题即可看到如下初始页面:
我用矩形框将页面分为三个部分。红色框我将其命名为操作栏;黄色框我将其命名为代码栏,蓝色框我将其命名为编译栏(接下来我都会这么称呼这三部分,今后不再赘述)。
操作栏:用于创建和管理文件夹及菜单。
代码栏:用于编辑代码。可以看到在创建项目以后,系统已经自动生成了一段代码。
编译栏:用于查看排版效果。在编译栏会出现预期内容的PDF文档页面。
重要:
由于编辑与呈现并非同步,每当你需要查看代码带来的效果,必须点击“Recompile”进行编译查看最新的PDF效果。在使用部分命令排版内容,进行交叉引用时,需要对.tex源文件编译两次以上 。
当然你也可以点击“Recompile”处的倒三角,在“Auto Compile”处选择“On”,开启自动编译,实现同步。(该设置完全依据个人习惯及喜好,但我并不习惯也不推荐这样做。)
无论论文质量与内容如何,我们都应该了解如何在Overleaf中导出项目导出和实打实的PDF文件。
在操作栏我们可以看到Menu选项,单击进入。
可以看到,“Download”处有两个选项:
点击“Source”选项可以下载整个项目,格式为zip文件;点击“PDF”选项可以下载PDF文档。根据需求,自行下载即可。
常见的论文格式包括但不限于:“摘要 - 背景 - 正文 - 结语 - 参考文献”这样的基础格式。
根据需要,你可以加入“假设”、“稳定性分析”、“模型改进”等任何内容。但可以明确的是,我们总将论文写作分部完成。
常见的论文内容无外乎序言和正文两部分。
论文序言应该申明论文的基本信息,包括作者、工作单位、完成时间等;论文正文应该有目录,每一页应该有页码标注,甚者有页眉要求。
英文论文有两种常见的段落格式,你可以根据需要进行选择:
2.每个段落开头不缩进,段落之间有空行。(雅思要求,本文也将使用此种格式)
LaTeX中完成论文同样分为序言、正文两个部分。
序言部分:主要负责申明论文文体、导入宏包(部分功能的实现需要导入其他的插件协助完成,将这些套件称为“宏包”)、表明文章的标题、作者及时间等信息。
正文部分:主要负责论文的主体内容书写。
序言部分即代码段 \begin{document} 前(红色框)的内容。系统已经生成了默认代码,我们可以对其进行微调。
通常情况下,我们将以下代码置于首行,申明文档类型、文章的基础字号、纸张类型。
\documentclass[字号,纸张类型]{文本类型}
宏包是 Latex 发行版的插件功能,通过安装宏包可以扩展或提供更多的功能。多数情况下,我们简称宏包为“包”。我们需要通过以下代码导入宏包。
\usepackage[可选选项]{包名}
由于包的数量庞大,该导入哪些包反而不需要我们格外操心。当你需要完成某项功能时(如导入图片),直接在搜索引擎上搜索相关宏包的代码即可。
在此附上一些基础宏包:
%文档的编码选择utf8。
\usepackage[utf8]{inputenc}
%使用graphicx包添加图片
\usepackage{graphicx}
%设置字体为Times New Roman(英文论文的经典字体)
\usepackage{times}
\usepackage{mathptmx}
%数学包
\usepackage{amsmath}
感兴趣的小伙伴可以根据需要,查阅学习站里一位大佬总结的宏包引用及常用宏包简介:宏包链接
通过以下三行代码,我们可以实现对论文标题、作者、日期的申明。
\title{标题名称}
\author{作者}
\date{日期}
(可以看到"\today"生效,自动输出当前日期)
正文部分即代码段 \begin{document} 到 \end{document} (蓝色框)的内容,默认代码已经给出架构,我们可以直接进行编辑。
我们可以看到正文部分的以下代码:
\maketitle
这段代码使我们在序言部分设置的标题、作者、日期得以显示,具有重要的作用。
LaTeX可以认为由普通文本和命令组成,其中\是LaTeX命令的核心。LaTeX中,几乎所有命令都需要依赖于“ \”符。其格式为:
\命令名称{}
大到导包操作\usepackage,小到添加空格\quad,都需要使用到这个符号。但具体到每个命令,我们也无需格外留意,根据需要拷贝命令即可。
唯一需要注意的是斜线的方向。
LaTeX中有一个重要的概念“环境”,即\begin{ } 和 \end{ }两个命令包裹代码块,使文本内容具有特殊格式或对内容进行标识。其格式如下:
\begin{类型}
......
\end{类型}
类型则根据个人需求决定,通常可分为三类:
其实如果不讲究所谓格式与排版,我们可以在document环境中编辑任意内容,与正常的Word输入没有两样。凡是在document环境中的内容,都是论文的正文。
值得一提的是,我们通常会将不愿意呈现在最终文档里,但起到提示作用的内容进行注释,只需在文本前加上%即可,格式为:
%任意内容
以一段简单的文本输入为例。可以看到:没有加“%”进行注释的内容经过编译后得以呈现,但注释行则无法显示。
空格、换行、强制换页是文本操作中三个重要的操作。
对于空格,在LaTeX中无论多少个空格(space键)都会被认为是一个空格。因而当我们需要行内键入一段空白时,需要通过其他命令实现。
\qquad | 更更大空格 |
\quad | 更大空格 |
\+space键 | 大空格 |
\; | 中空格 |
\, | 小空格 |
感兴趣的可以参考另一位大佬给出的总结:Latex中的空格。
对于换行,在LaTeX中单个“Enter”键并没有真正的换行效果。我们在编辑区键入“Enter”,在编辑栏可以看到文本内容被分割,但实际上并没有空格效果。
(第13行与第14行在编辑栏用“Enter”进行分割,但编译栏并没有换行)
LaTeX中,正常的段间换行需要键入两个“Enter”键。也就是在编辑区的内容与内容之间加入空行。
除此以外,常见的换行方法有以下三种:
我个人比较推荐\\命令,简单且功能强大:
\\[字体大小]
举个栗子:
(注意:出现的“\noindent”命令用于取消缩进效果,我们会在下一节讲到。)
可以看到,我们插入的空行有着不同的宽度,看上去实现了段间的“空行”。但实际上,我们有更为简便的方法:
\setlength{\parskip}{1em}
在序言部分输入这行代码,段落间会自动产生与文档字体同高的空行。1em(element)即字体的单倍高度。举个栗子:
因此,如果你习惯第二种论文段落格式,建议\setlength{\parskip}{1em}命令在序言部分买房。
最后要强调的是:采用任意环境后,环境的上下两侧自动换行,无需格外操心。
对于摘要页等特殊内容页面,我们通常令其独立成页。这就需要用到\newpage命令:
\newpage
在任意内容后使用该命令,即可使得接下来的内容呈现在PDF的下一页,当前内容独立成页。
论文中的两种段落格式都与缩进有着紧密的关系。
LaTeX很有趣,它会默认部分命令后的文本需要缩进或无需缩进。比如在以后要提到的\section命令,LaTeX默认其后的首段强制不缩进,后续段落缩进两格。因此,缩进的相关命令非常重要。
缩进的相关命令分为全局命令与局部命令,且局部命令优先级高于全局命令。
%全局命令:
\setlength{\parindent}{0em} %段首不缩进
\setlength{\parindent}{2em} %段首缩进两字符
%局部命令:
\noindent %取消缩进
\indent\setlength{\parindent}{2em} %缩进两字符
举个栗子:
可以看到,我们实现了全局缩进两字符,但第三段取消缩进的效果。
灵活使用缩进相关命令,可以帮助我们适应各种格式需求。
最后要提的一点是:面对\section命令带来的首段不缩进问题,可导入以下宏包解决:
\usepackage{indentfirst}
对于段落,我们还有一个重要的参数没有涉及,那就是行高。
通常情况下,我们无需另外设置行高,只需使用默认值即可。但面对特殊需求,我们可以在序言部分加入以下命令修改行高:
\renewcommand{\baselinestretch}{行距倍数}
我认为字体有五要素:字体、字号、加粗、倾斜、下划线。我们逐一进行讲解:
%设置字体为Times New Roman
\usepackage{times}
%主体中正文和数学公式都将以 Times 字体排版,其他仍以默认字体排版
\usepackage{mathptmx}
%粗体
\textbf{...}
%斜体
\textit{...}
%下划线
\underline{...}
这里举一个最为简单的例子:
可以看到,通过不同的命令,我们实现了文本的简单格式控制。
此外,还有众多的文本格式控制命令,包括但不限于:\emph{...}命令(根据上下文环境对文本格式化)等。感兴趣的小伙伴可以导入ulem宏包,了解相关的其他操作。
无论是文本还是图片,都要面对“对齐”的审判。
我们常见的对齐方式有两种,一种是添加环境,一种是段前添加对齐命令。
添加环境的对齐方式更适合文本,其相关命令如下:
\begin{对齐方式}
......
\end{对齐方式}
举个栗子:
添加命令的对齐方式更适合图片、表格等,其相关命令如下:
\raggedright 环境flushleft的替代方法
\raggedleft 环境flushright的替代方法
\centering 环境center的替代方法
举个栗子:
无论哪种对齐方式,习惯和达到效果才是关键。
论文写作过程中,我们需要清楚地告诉编辑器现在写的内容属于论文的哪一部分。是摘要?还是第一章“背景”?还是 第三章“模型建立”……
此外,章节经常会存在层次关系。比如,“第三章第一节”中,相比“第一节”,第三章应该是更高一级的概念,字号应该更大,且能够包含很多小节的内容。
通过建立document环境可以告诉编辑器,现在是正文部分:
\begin{document}
......
\end{document}
通过建立abstract环境可以告诉编辑器,现在是摘要部分:
\begin{abstract}
......
\end{abstract}
LaTeX通常将论文分为三个层级,通常是部分、子部分、子子部分。对应的命令为: \section{}、\subsection{}、\subsubsection{},括号内为该部分的名称。
LaTeX会自动根据层级关系为你适配内容的对应字号大小,父章节会比子章节字号大一些。总之,当我们通过命令申明内容对应的论文部分后,层级关系就会一目了然。
%部分
\section{章节名称}
%子部分
\subsection{子章节名称}
%子子部分
\subsubsection{子子章节名称}
对于子部分的嵌套,只需要在两个父级部分之间添加即可,系统会将子部分归于上一个父级。
这里有一个简单的示例:
可以看到,通过三种章节命令,可以基础地对论文进行层次排版。
在LaTeX中也有很多其他的申明内容对应的论文部分的命令,包括但不限于申明:附录(Appendix)、参考文献(References)等,感兴趣的小伙伴可以学习了解。
图片是论文中不可或缺的一部分。
首先,我们需要在操作栏创建新的文件夹(New Folder),并对其进行命名,以images为例。
可以看到我们已经创建了images文件夹。点击文件夹右端的图标,选择“Upload”上传图片即可。
通过拖拽或选择将目标图片进行上传,成功后可以看到images文件夹中已经有了我们的图片:(我选择的是名为scenery的jpg格式的图片)
通过导入graphicx宏包可以完成添加图片功能,通过设置图片路径可以使得系统定位到图片所在的位置。如果是images文件夹,则图片位置为\graphicspath{ {images/} },其余同理。
%导入与图片相关的宏包
\usepackage{graphicx}
%设置图片路径
\graphicspath{图片位置}
通过 \includegraphics{}命令,我们可以插入图片。以scenery.jpg为例。
\includegraphics[可选参数]{图片名称}
可以看到,通过上述代码,我们确实成功插入了图片。但由于我们没有设置这个图片的大小、对齐方式等参数,这张图片并没有以理想的状态呈现出来,甚至出现了溢出(Overfull)。
接下来我们对图片的宽高进行调整,通过在可选参数列表中指定参数即可调整图片的宽、高。
\includegraphics[宽度,高度]{图片名称}
一般有两种方法:
通过指定长度,可以直接确定图片的精确长宽;而指定比例,则是根据页面整体的宽高确定图片在页面中的宽高占比。我比较推荐第二种。
可以看到,我们已经成功调整了图片的大小。
接下来我们对图片的对齐方式进行调整,与文本的对齐方式调整完全相同。我们对图片添加对齐方式环境即可,以居中(center)效果为例:
这样我们就基本完成了对图片参数的修改。
事实上,在LaTeX中,我们有专门的figure环境来控制图片,格式如下:
\begin{figure}
\对齐方式
\includegraphics[宽度,高度]{图片名称}
\caption{图片标题}
\label{fig:标签名称}
\end{figure}
举个栗子:
可以看到我们成功添加图片、为其添加了标题,并成功在文本中引用该图片。
列表分为两类:有序列表和无序列表。有序列表在每个条目前会有递增的数字对内容进行排序,无序列表则在每个条目前用黑色圆点进行标识。
有序列表:
内容前会有1、2、3进行标识。
无序列表:
内容前会有黑色圆点进行标识。
对于有序列表,我们使用enumerate环境;对于无序列表,我们需要使用itemize环境。但无论哪种类型,每个条目前面必须有控件序列\item,作为条目标识符。
\begin{enumerate}
\item A
\item B
\item C
\end{enumerate}
\begin{itemize}
\item A
\item B
\item C
\end{itemize}
举个栗子:
可以看到通过使用不同的环境,我们成功创建了两类列表。
由于表格的复杂性,表格应该大讲特讲。在LaTeX中创建表格并不如Excel一样边编辑边可视,主要用到了table环境和tabular环境。
举个简单的栗子(只需看图,无需关注生成方法):
创建左边一个格式清晰,内容简单,长度友好的表格,便需要右边这么长的一段代码,这工作量着实让人头痛。如果创建表格全程都是手动敲入代码,很是麻烦。
如果可以在Excel中导出表格,直接把它用到LaTeX中就好了。
tableconvert网站就可以满足你的诉求!它可以实现csv文件到LaTeX代码的转换!
我们需要做的就是以下三步:
首先是创建csv文件。对csv文件不熟悉的小伙伴可以把csv当成一种二维表格式,通常我们用Excel或者记事本就可以创建。
打开Excel,在Excel上输入你的目标表格:
点击左上方的保存文件。在文件处千万要选择:csv文件,文件名无所谓。
打开tableconvert,找到你的文件并将其拖拽(上传)到对应的区域:
滚动鼠标滑轮,找到网站转译出的LaTeX代码进行复制。
将其粘贴到你的Overlef编辑区中进行编译后,你会发现一个一模一样的美丽表格:
这时候你会发现你的表格的大小可能并没有那么理想,我们便需要通过\resizebox命令对表格大小进行调整,格式如下:
\resizebox{宽度}{高度}{
\begin{tabular}{}
......
\end{tabular}
}
宽度和高度的参数设置与图片的参数设置相同,如图:
此外,表格也有表格标题和表格标签:
\caption{表格标题}
\label{table:表格标签}
根据需要,你也可以将其加入table环境中,方便个人使用。
注意:
对于图片和表格,系统会自动寻找合适的位置进行放置。因而经常会出现图片(表格)“到处乱蹿”的问题,一般通过修改其宽高参数即可矫正。
如果对图片等的位置有较严格的位置要求可以进一步深入学习。
最后的最后,也许有朋友会纳闷,折腾半天,为什么不能我自己做好Excel表截个图呢?我这边来一个不太正经的回答(猜测):
因为并不能保证图片状态下的表格与LaTeX代码呈现的文本是格式相符的,而且很有可能图会糊。
摘要和目录是我们粗略了解一篇论文的关键。
如何为一篇论文添加目录,在LaTeX中是一件重要但容易的事。你只需要使用\tableofcontents这行命令即可。
%添加目录
\tableofcontents
LaTeX会根据你使用的\section、\subsection、\subsubsection帮助你自动生成目录:
这是一篇我曾经写过的论文模板,系统已经帮我生成了目录。
虽然但是,每次写论文在序言部分不分青红皂白地导入数学包,可以帮助你省很多事:
%数学包
\usepackage{amsmath}
问就是很香!
终于到了我们的重中之重——数学公式的模式。
请直接忽略本部分涉及到的公式的具体内容(上标、下标等)。
数学公式根据排版类型可以分为:内联模式和显示模式两种。内联模式将数学公式与普通文本排版于同行;而显示模式则将数学公式单独成行,加以强调。
此处借用Learn LaTeX in 30 minutes中的示例进行表示:
内联模式:
对于内联模式,我们有许多方法可以表示,我推荐使用一对美元符号($ ... $ )包裹目标公式:
以上述内容为例,对应的LaTeX代码如下:
In physics, the mass-energy equivalence is stated
by the equation $E=mc^2$, discovered in 1905 by Albert Einstein.
显示模式(分为两类):
对于无编号的显示模式,我推荐使用 “ \[ ” 和 “ \] ”包裹目标公式:
以上述内容为例,对应的LaTeX代码如下:
The mass-energy equivalence is described by the famous equation
\[ E=mc^2 \] discovered in 1905 by Albert Einstein.
对于有编号的显示模式,我推荐使用equation环境包裹目标公式,系统会自动帮你编号:
\begin{equation}
......
\end{equation}
以上述内容为例,对应的LaTeX代码如下:
In natural units ($c = 1$), the formula expresses the identity
\begin{equation}
E=m
\end{equation}
一般情况下,我们都会选择有编号的显示模式表示数学公式,也方便我们进行引用。
我们已经提到,你需要表达的所有数学公式,LaTeX都可以生成。编写和生成公式是最为关键的一环,但也正因为它关键,使得速成LaTeX变得困难。
所以我推荐一个好用的网站:latexlive.com。
它并不需要你有任何LaTeX排版数学公式的基础,你只需要把期望得到的公式图片(手写也可)粘贴到指定区域,系统会快速识别内容并帮你生成LaTeX代码。
首先,打开网站,点击右上角完成注册。(没有注册的用户无法进行图片识别功能。我PS掉了自己的信息)
点击上图中的“图片识别”,任意选择自己的目标数学公式的图片:
将其上传以后,系统会快速生成对应LaTeX代码,将其复制即可。
如果对其正确性存疑,可以返回“快捷工具”页面,系统会将刚刚生成的代码自动粘贴到输入区域,并在输出区域给出代码对应的编译结果,借此我们可以对结果进行检查:
这样,我们就可以“零基础”直接拿到公式对应的代码了。
对于想要从头学习(拒绝偷懒)数学公式书写的小伙伴,建议跳转这里:Mathematical_expressionshttps://www.overleaf.com/learn/latex/Mathematical_expressions
对该页及最后的“进一步阅读”的其他内容 进行认真且深入的学习!
顾名思义,页眉就是页面上端的内容;页码就是用来标注“这是哪一页”的数字。页眉和页码设置同样分为全局命令和局部命令。
对于全局命令,通常使用\pagestyle{}对页眉和页码共同设置:
\pagestyle{empty} 不显示页眉、页脚(默认值)
\pagestyle{plain} 不显示页眉、页脚在页面下端中部
\pagestyle{myheadings} 不显示页眉、页脚在页面上端中部
\pagestyle{headings} 页眉、页脚都在页面上端
通常情况下,我们使用默认值即可即可。
对于局部命令,通常使用\thispagestyle{}进行单独设置,修改有特殊要求的页面的显示。
\thispagestyle{empty} 不显示页眉、页脚(默认值)
\thispagestyle{plain} 不显示页眉、页脚在页面下端中部
\thispagestyle{myheadings} 不显示页眉、页脚在页面上端中部
\thispagestyle{headings} 页眉、页脚都在页面上端
通常情况下,论文的前几页为摘要、目录等内容,而非正文。
但我们更习惯从正文开始对页码计数。因此,我们倾向于不显示前几页的页码,并将正文的第一页作为计数的首页。
对前几页,添加如下命令,设置不显示页码(但不是不计数):
\thispagestyle{empty}
对正文部分,添加如下命令,设置当前页为计数首页:
\setcounter{page}{1}
以我曾经的某篇论文举个栗子(关注页码,忽略内容):
在添加相关代码前,摘要页、目录页也计入页码计数中,正文首页页码为3,目录也从3开始。
在添加相关代码后,摘要页、目录页不再计入页码计数中,正文首页页码为1,目录也从1开始。
如果你厌倦了页码形式,你可以在序言部分添加以下命令进行更换:
\pagenumbering{roman} 小写罗马字母
\pagenumbering{Roman} 大写罗马字母
\pagenumbering{alph} 小写字母
\pagenumbering{Alph} 大写字母
\pagenumbering{arabic} 阿拉伯数字(默认)
脚注的添加方式有许多种。我最推荐的是以下命令:
普通文本\footnote{脚注文本}
这样的添加方式使得系统能够自行进行顺序标注。
可以看到,我们已经为文本内容添加了脚注,系统为我们自动添加了顺序值。
其实LaTeX的内容还有很多,但我们目前已经掌握了基本功能。
对于LaTeX,我们始终应该明白,它只是一种提供更多可能的工具,并非必需品。
LaTeX有其优点,也有明显的缺点。
言而总之,先权衡,再选择。
新技能提供新可能,而非新桎梏。
最后的最后,欢迎各位大佬指出问题!