LaTeX的学习笔记 - ShareLaTeX(OverLeaf)使用教程
本篇大致介绍了LaTeX的基本排版语法,平台用的是 overleaf 在线工具。
背景
近期需要学习下Latex排版(基于TeX排版系统的标记语言和排版系统),同时使用ShareLaTeX(是一个在线的 LaTeX 编辑器和合作工具)。这里对两者的学习做个笔记,并且做个分享。
在前面先放一下ShareLaTeX官网:
“好消息!Overleaf 和 ShareLaTeX 已经合并,推出了 Overleaf v2,将两项服务的优势结合在一起。由于 Overleaf v2 是基于 ShareLaTeX 编辑器构建的,因此对于之前使用 ShareLaTeX 的用户来说会非常熟悉。”
据说是Overleaf v2 在保留 ShareLaTeX 优势的基础上,提供了更多的功能和便利性,使得用户能够更轻松地撰写、编辑和共享 LaTeX 文档。
-
更好的编辑器: Overleaf v2 是基于 ShareLaTeX 的编辑器构建的,具有更好的性能和用户体验。编辑器支持语法高亮、自动补全、实时预览等功能,使得 LaTeX 文档的编辑更加便捷和流畅。
-
更丰富的模板和工具: Overleaf 提供了大量的 LaTeX 模板和工具,包括论文模板、报告模板、幻灯片模板等,方便用户快速开始并规范排版。
-
实时协作: Overleaf 支持多人实时协作,团队成员可以同时编辑同一个文档,实时查看对方的编辑内容,提高协作效率。
-
版本控制和历史记录: Overleaf 具有版本控制和历史记录功能,可以查看文档的修改历史并进行版本比较,方便追踪和管理文档的变更。
-
云存储和共享: Overleaf 提供了云存储功能,用户可以将文档保存在云端并实现跨设备访问和共享,方便团队协作和文档管理。
那就也顺便放下 Overleaf 的官网,进去就可以注册:
Overleaf, Online LaTeX EditorAn online LaTeX editor that’s easy to use. No installation, real-time collaboration, version control, hundreds of LaTeX templates, and more.https://www.overleaf.com/有免费的可以使用,当然充钱有更多功能和更多线上协作,大家根据需求。
题外话,如果有一定的保密需求,不想把论文放在公共平台上,也可以自己用docker搭建一个平台,相对麻烦一点,可以参考这里:
使用Docker搭建ShareLatex | 生命不息 折腾不止摘要本文介绍如何使用Docker搭建自己的ShareLatex平台,以及Latex的基本语法。http://blog.sysu.tech/Docker/%E4%BD%BF%E7%94%A8Docker%E6%90%AD%E5%BB%BAShareLatex/
一、引入
这里为了准确,直接参考的官方提供的文档,链接放这里。(纯英文)
LaTeX是一种用于排版专业文档的工具。
其他的“所见即所得”工具为用户提供了一个交互式页面,用户可以在其中输入和编辑文本,并应用各种样式。而LATEX的文档是一个普通的文本文件,其中穿插着用于表达所需(排版)结果的LATEX命令。
为了生成可见的、排版过的文档,LATEX文件会被一种称为TeX引擎的软件处理,该引擎使用嵌入在文本文件中的命令来指导和控制排版过程,将LATEX命令和文档文本转换为专业排版的PDF文件。
这意味着只需专注于文档内容,计算机会通过 LATEX命令 和 TeX 引擎来处理视觉外观(格式)。
LATEX的优点包括:
- 支持排版极其复杂的数学、表格和物理科学的技术内容;
- 支持脚注、交叉引用和管理参考文献;
- 便于生成复杂或繁琐的文档元素,如索引、术语表、目录、图表列表等;
- 由于其固有的可编程性和通过数千个免费附加包的可扩展性,可高度定制以生产定制文档。
LATEX为用户提供了对按极高标准排版的文档制作的极大控制权,并且一个重要好处是将文档内容与文档样式分开:一旦编写了文档的内容,就可以轻松更改其外观。这允许科学出版商创建LATEX中的文章模板,作者可以用来撰写提交给期刊的论文。
二、创建
第一步是创建一个新的 LATEX 项目。
可以直接创建一个新的 .tex 文件来完成这个操作;或者,也可以在 Overleaf 上开始一个新项目。
\documentclass{article}
\begin{document}
First document. This is a simple example, with no
extra parameters or packages included.
\end{document}
会产生如下输出:
说明:
- LATEX 自动缩进了段落的第一行。
`\documentclass{article}`
声明了文档类型,即它的类别,控制文档的整体外观。(比如:CV就是学术履历......类型比较多,具体可以看:CTAN: Class)- 文档的主体,被写在 `
\begin{document}`
和 `\end{document}`
标签之间。()
如果用的是Overleaf,可以比较方便的书写和对照:(可选中文)
添加内容后可以点击`Recompile`进行重新编译,右侧就会更新。当然月可以设置`自动编译`:
二、前言格式
上面只是最基本格式,其实在`\begin{document} `之前的部分,都属于前言部分。可以定义文档类别(类型)以及诸如在编写文档时要使用的语言等具体信息;加载想要使用的包,以及进行其他类型的配置。
2.1 documentclass
`\documentclass[12pt, letterpaper]{article} `定义了文档的整体类别(类型)。
方括号内是额外的参数,用逗号隔开。用于适配这个类别的实例,即基于特定文档使用的设置。
- 12pt:设置字体大小(不指定默认 10 pt)
- letterpaper:设置纸张大小(比如:a4paper 和 legalpaper,更多参考:Page size and margins - Overleaf, Online LaTeX Editor)
2.2 usepackage
`\usepackage{graphicx}`是加载一个外部包的示例(这里是 graphicx),以扩展 LATEX 的功能,使其能够导入外部图形文件。
当然可以多次加载,进行不同的配置:
% Language setting
\usepackage[english]{babel}
% Set page size and margins
\usepackage[letterpaper,top=2cm,bottom=2cm,left=3cm,right=3cm,marginparwidth=1.75cm]{geometry}
2.3 title
添加标题:(就是最上面最剧中的,文档的标题)
`\title{My first LaTeX document}`
2.4 author
`\author{Mr.Ant,Tom,Jack}`:在这里写入作者(们)的名字,可选择性地在大括号内使用
2.5 thank
`\thanks{Funded by the Overleaf team.}`:
可以在作者名字后面,即作者命令的大括号内添加。这将添加一个上标和带有大括号内文本的脚注。如果需要在文章中感谢某个机构,就在这里写(会出现在首页左下角)。
2.6 date
`\date{August 2022}`:可以手动输入日期,
也可以使用`\date{\today}`命令,在每次编译文档时排版当前日期。
三、正文格式
3.1 注释
跟编程语言一样,这里也支持写注释,即在开头写 `%` 即可,用来补充一些解释性说明。
当然,也有 多行注释 ,使用` \iffalse`
和 `\fi`
,不常用而已。使用一种trick,实际上利用了LaTeX 的条件编译功能。
\documentclass{article}
\title{My Document}
\begin{document}
\maketitle
This is the main text of the document.
%This line here is a comment. It will not be typeset in the document.
\iffalse
This is a multi-line comment.
You can write as many lines as you want here.
This content will not be typeset in the document.
\fi
\end{document}
3.2 粗体、斜体和下划线
- 粗体:在 LaTeX 中,使用 ` \textbf{...} `命令可以排版粗体文本。
- 斜体:使用 `\textit{...}` 命令可以产生斜体文本。
- 下划线:要在文本下划线,使用 `\underline{...}` 命令。
Some of the \textbf{greatest}
discoveries in \underline{science}
were made by \textbf{\textit{accident}}.
效果如下:(这里可以看到,代码书写中的换行,不会影响编译后的)
- 强调: `\emph{argument}`,它对其参数的效果取决于上下文。
在普通文本中,强调的文本会变成斜体,但如果在斜体文本中使用,则效果相反。
Some of the greatest \emph{discoveries} in science
were made by accident.
\textit{Some of the greatest \emph{discoveries}
in science were made by accident.}
\textbf{Some of the greatest \emph{discoveries}
in science were made by accident.}
效果如下,可以看到这里的格式化针对的是大括号里的内容,其他命令然后嵌套即可:
注意:有些包可能会影响命令效果(比如 Beamer,会改变 \emph 命令的行为。)
3.3 添加图片
三种方式给文档添加图片:
- 使用编辑器工具栏上的插入图片按钮(Visual Editor 或 Code Editor 中的插入图片按钮)来插入图片。
- 将图片复制粘贴到 Visual Editor 或 Code Editor 中。
- 在 Code Editor 中编写 LaTeX 代码来插入图片。
前两种比较简单,并且会自动生成代码。第三种需要先上传图片到线上项目中,在写代码:
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{images/}} % 设定图片存放的文件夹路径
\begin{document}
\includegraphics{universe} % 插入名为 universe 的图片
\end{document}
- `\graphicspath{{images/}} `告诉 LaTeX 图片存放在一个名为 images 的文件夹中,该文件夹位于当前目录下。
- `\includegraphics{universe} `实际上是将图片插入到文档中。这里的 universe 是图片文件的名称,但不包括扩展名。
上面的示例加载了 graphicx 包,其中包含了许多其他命令,比如` \includegraphics{...} `用于导入图形和` \graphicspath{...} `用于告诉 LaTeX 图形所在的位置。
需要注意:
- 虽然在 \includegraphics 命令中可以使用完整的文件名(包括扩展名),但最佳实践是省略扩展名,因为这样会提示 LaTeX 搜索所有支持的格式。
- 图形文件名通常不应包含空格或多个点;上传图片文件到 Overleaf 时,还建议使用小写字母作为文件扩展名。
3.4 标题、标签和引用
通过 figure 环境,可以为图片添加标题、标签和引用,示例如下:
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{images/}}
\begin{document}
\begin{figure}[h]
\centering
\includegraphics[width=0.75\textwidth]{mesh}
\caption{A nice plot.}
\label{fig:mesh1}
\end{figure}
As you can see in figure \ref{fig:mesh1},
the function grows near the origin.
This example is on page \pageref{fig:mesh1}.
\end{document}
\includegraphics[width=0.75\textwidth]{mesh}
:这种形式的\includegraphics
命令指示 LaTeX 将图形的宽度设置为文本宽度的 75%,文本宽度的值存储在\textwidth
命令中。(mesh是图片文件的名字)\caption{A nice plot.}
:正如其名称所示,这个命令设置了图形的标题,可以放在图形上方或下方。如果创建一个图形列表,该标题将在列表中使用。\label{fig:mesh1}
:使用\label
命令为图片添加标签,以便在文档中引用它。标签用于为图像生成一个编号,并与下一个命令结合使用,允许您引用它。(这里只是起个名字)\ref{fig:mesh1}
:这段代码将被替换为对应于被引用图像的编号。
运行结果:
图片位置的参数比较多(对齐方式,并列,嵌入文本等),详情可以看:Positioning images and tables - Overleaf, Online LaTeX Editor
3.5 创建列表
可以使用 环境 来创建不同类型的列表,这些环境用于封装实现特定排版功能所需的 LaTeX 代码。一个环境以 `\begin{environment-name} `开始,以` \end{environment-name} `结束。
environment-name 可能是 figure、tabular 或者列表类型之一。
3.5.1 无序列表
无序列表通过 itemize 环境创建。每个列表条目前必须使用 \item 命令,示例如下:
\documentclass{article}
\begin{document}
\begin{itemize}
\item The individual entries are indicated with a black dot, a so-called bullet.
\item The text in the entries may be of any length.
\end{itemize}
\end{document}
运行如下:
3.5.2 有序列表
有序列表使用与无序列表相同的语法,但是使用 enumerate 环境创建:
\documentclass{article}
\begin{document}
\begin{enumerate}
\item This is the first entry in our list.
\item The list numbers increase with each entry we add.
\end{enumerate}
\end{document}
运行如下:(会自动生成数字有序列表的标签值,从 1 开始递增)
3.6 添加数学公式
LaTeX 的一个主要优势是书写数学表达式的简便性。LaTeX 提供了两种写作模式用于排版数学:
- inline - 行内数学模式,用于书写作为段落一部分的公式。
- display - 显示数学模式,用于书写不属于文本或段落的表达式,并且在单独的行上排版。
3.6.1 Inline 数学模式
要排版行内数学模式,可以使用以下其中之一的定界符对:
- \(......\)
- $......$
- \begin{math} ...... \end{math}
示例:
\documentclass[12pt, letterpaper]{article}
\begin{document}
\begin{math}
E=mc^2
\end{math} is typeset in a paragraph using inline
math mode---as is $E=mc^2$, and so too is \(E=mc^2\).
\end{document}
展示效果:
3.6.2 Display 数学模式
在显示模式中排版的方程可以带有编号或者不带编号,如下面的示例所示:
\documentclass[12pt, letterpaper]{article}
\begin{document}
The mass-energy equivalence is described by the famous equation
\[ E=mc^2 \] discovered in 1905 by Albert Einstein.
In natural units ($c = 1$), the formula expresses the identity
\begin{equation}
E=m
\end{equation}
\end{document}
可以使用的定界符:
- \[ ... \]
\begin{displaymath}......\end{displaymath}
- \begin{equation} ...... \end{equation}(会自动给公式加上序号)
显示效果如下:
3.6.3 公式的引用
当然上面提到的 label 也可以用(加个名字),然后直接引用就行:
\begin{equation}
E=m \label{eq:natural-units}
\end{equation}
Equation \ref{eq:mass-energy} is the......
3.6.4 复杂公式的例子
因为公式样式很多,书写格式也就很多,这里不具体列举了,放个官方例子:
\documentclass{article}
\begin{document}
Subscripts in math mode are written as $a_b$ and
superscripts are written as $a^b$.
These can be combined and nested to write expressions such as
\[ T^{i_1 i_2 \dots i_p}_{j_1 j_2 \dots j_q} = T(x^{i_1},\dots,x^{i_p},e_{j_1},\dots,e_{j_q}) \]
We write integrals using $\int$ and fractions using $\frac{a}{b}$.
Limits are placed on integrals using superscripts and subscripts:
\[ \int_0^1 \frac{dx}{e^x} = \frac{e-1}{e} \]
Lower case Greek letters are written as $\omega$ $\delta$ etc.
while upper case Greek letters are written as $\Omega$ $\Delta$.
Mathematical operators are prefixed with a backslash
as $\sin(\beta)$, $\cos(\alpha)$, $\log(x)$ etc.
\end{document}
贴个官方链接,方便大家查询:
四、基础文档结构
接下来按照正常论文结构,将 LaTeX 文档分成不同的章节、节和段落。
4.1 Abstract - 摘要
摘要是论文中极其重要的一部分,是对文章的核心主题或论点的简要概述/总结。
使用 LaTeX 的 abstract 环境排版摘要:
\documentclass{article}
\begin{document}
\begin{abstract}
This is a simple paragraph at the beginning of the
document. A brief introduction about the main subject.
\end{abstract}
\end{document}
其书写于 document 内,出来的效果也是在前言之后(标题、作者、日期):
4.2 段落和换行
- 通过按下“回车”键两次来创建新的段落,结束当前行并插入一个空行,从而开始新的段落;
- 如何在不开始新段落的情况下开始新行,通过使用双反斜杠 \ 命令插入手动换行;或者,可以使用 \newline 命令。
\documentclass{article}
\begin{document}
\begin{abstract}
This is a simple paragraph at the beginning of the
document. A brief introduction about the main subject.
\end{abstract}
After our abstract we can begin the first paragraph,
then press ``enter'' twice to start the second one.
This line will start a second paragraph.
I will start the third paragraph and then add \\
a manual line break which causes this text to start
on a new line but remains part of the same paragraph.
Alternatively, I can use the \verb|\newline|\newline
command to start a new line, which is also part of the same paragraph.
\end{document}
例子中起了三个段落,效果如下:
需要注意的是:
- LaTeX 会自动缩进段落(除非紧接在节、子节等文档标题之后)。
- 不应该使用多个 \ 或 \newline 来“模拟”具有更大间距的段落,这可能会干扰排版算法。
- 推荐的方法是继续使用空行来创建新的段落,而不使用任何 \,并通过在导言部分添加 \usepackage{parskip} 加载 parskip 宏包。
更多参考:
4.3 章节和节
长篇文档,通常都会分成部分、章、节、子节等。LaTeX 也提供了文档结构命令,但可用的命令及其实现(即它们的功能)可能取决于所使用的文档类。
举例来说,使用 book 文档类创建的文档可以分成部分、章、节、子节等,但 letter 文档类不提供任何用于此目的的命令。
示例使用book文档类构建文档结构:
\documentclass{book}
\begin{document}
\chapter{First Chapter}
\section{Introduction}
This is the first section.
Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Etiam lobortisfacilisis sem. Nullam nec mi et
neque pharetra sollicitudin. Praesent imperdietmi nec ante.
Donec ullamcorper, felis non sodales...
\section{Second Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis facilisissem. Nullam nec mi et neque pharetra
sollicitudin. Praesent imperdiet mi necante...
\subsection{First Subsection}
Praesent imperdietmi nec ante. Donec ullamcorper, felis non sodales...
\section*{Unnumbered Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis facilisissem...
\end{document}
命令还是比较好理解的:
- `\chapter{First Chapter}` 创建一个名为 First Chapter 的新章节;
- `\section{Introduction}` 产生一个名为 Introduction 的节;
- 节还可以进一步划分为 `\subsection{...}` 甚至 `\subsubsection{...}`;
- 节、子节等的编号是自动的,但可以通过使用相应命令的所谓星号版本来禁用,该版本在末尾有一个星号( * ),比如:\section*{...} 和 \subsection*{...}。
- 当然还有其他分节命令,比如:\part{...}、\paragraph{...}、\subparagraph{...} 等等。
4.4 Table - 表格
4.4.1 创建表格
LaTeX创建表格的默认方法是tabular 环境,必须为环境指定参数:
\begin{center}
\begin{tabular}{c c c}
cell1 & cell2 & cell3 \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{center}
- 参数 {c c c} 是告诉表格有三列,每列中的文本必须居中。(同理 r 右对齐,l 左对齐)
- & - 用于在表格行内标示单个表格单元格,\\ - 表示要结束这一行;
- center 环境 在这里的作用是,让 表格 在页面的文本宽度中居中显示。
4.4.2 添加边框
tabular 环境支持添加水平和垂直线作为边框:
- 要添加 水平 边框,在行的上方和下方使用 \hline 命令;
- 要添加 垂直 边框,在列之间使用垂直线参数 “ | ”;
接上面的示例,加边框如下:
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
cell1 & cell2 & cell3 \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9 \\
\hline
\end{tabular}
\end{center}
- {|c|c|c|},声明了三个(居中的)列,每个列之间由一个垂直线分隔;
- \hline 在第一行上方和最后一行下方放水平边框;
官方还提供了一个更复杂的例子,看得出来这些边框可以 “叠加“:
\begin{center}
\begin{tabular}{||c c c c||}
\hline
Col1 & Col2 & Col2 & Col3 \\ [0.5ex]
\hline\hline
1 & 6 & 87837 & 787 \\
\hline
2 & 7 & 78 & 5415 \\
\hline
3 & 545 & 778 & 7507 \\
\hline
4 & 545 & 18744 & 7560 \\
\hline
5 & 88 & 788 & 6344 \\ [1ex]
\hline
\end{tabular}
\end{center}
提示:为更高效画表格,有一个在线的交互工具,能自动生成LaTeX代码:
4.4.3 标题、标签和引用
可以像处理图片一样为表格添加标题和引用。唯一的区别是,要使用 table 环境,而不是 figure 环境。
Table \ref{table:data} shows how to add a table caption and reference a table.
\begin{table}[h!]
\centering
\begin{tabular}{||c c c c||}
......
\end{tabular}
\caption{Table to test captions and labels.}
\label{table:data}
\end{table}
- 从上例能看出包含关系,即 table环境 包含了 tabular表格 + caption标题 + label标签;
- label是在下面起名字为 data ,但是ref引用在上面引用的,看来对于顺序没有要求。
- \begin{table}[h!] 中的 h 表示“here”,表示希望浮动对象出现在代码所在的位置。而感叹号 ! 表示强制(force),表示强制将浮动对象放置在指定的位置,
4.5 Content - 目录
创建目录方便,就像Word中自动生成一样,使用命令 \tableofcontents :
\documentclass{article}
\title{Sections and Chapters}
\author{Gubert Farnsworth}
\date{August 2022}
\begin{document}
\maketitle
\tableofcontents
\section{Introduction}
This is the first section.
Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Etiam lobortisfacilisis sem. Nullam nec mi et
neque pharetra sollicitudin. Praesent imperdietmi nec ante.
Donec ullamcorper, felis non sodales...
\section*{Unnumbered Section}
\addcontentsline{toc}{section}{Unnumbered Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis facilisissem. Nullam nec mi et neque pharetra
sollicitudin. Praesent imperdiet mi necante...
\section{Second Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Etiam lobortis facilisissem. Nullam nec mi et neque pharetra
sollicitudin. Praesent imperdiet mi necante...
\end{document}
- 章节、子章节和章节自动包含在目录中。
- 要手动添加条目,例如未编号的章节,使用命令 \addcontentsline。
- 这里需要注意,未编号的章节(Unnumbered Section)本身是不会自动添加到目录中;
- 具体来看命令:\addcontentsline{toc}{section}{Unnumbered Section}
`{toc}`
:表示将要添加内容的目录文件,这里是目录(table of contents),这里还有{lof}
(图表目录)或{lot}
(表格目录),分别表示要添加内容的不同目录文件。`{section}`
:表示要添加的内容类型,这里是一个章节(section),当然还有{chapter}
、{figure}
或{table}
等。{Unnumbered Section}
:表示要添加到目录中的标题文本,这里是未编号的章节的标题。
五、补充内容
5.1 下载文档
使用这个在线工具,编辑后可以直接导出下载,点击左上角菜单或者右边的下载按钮即可:
5.2 查找和使用LaTeX包
LaTeX不仅提供了排版功能,还通过使用附加包(packages)提供了可扩展性的框架。
LaTeX旨在具有可扩展性,允许用户加载更专业排版功能或扩展LaTeX内置功能的外部代码包。
加载包:
\usepackage[options]{somepackage}
方括号“[...]”告知LaTeX在加载somepackage时应用哪一组选项。在用户请求的选项集合中,单独的选项或设置通常用逗号分隔;
包的文件:
当编写\usepackage[...]{somepackage}时,LaTeX会寻找一个名为somepackage.sty的对应文件,这是它需要加载和处理的文件,即以使包的命令可用并执行该包提供的任何其他代码。
加载报错:
如果LaTeX找不到somepackage.sty,它将终止并显示错误,如下面的Overleaf示例所示。
包的托管:
包通过 Comprehensive TeX Archive Network(通常简称为CTAN)进行分发,该网络(截至撰写本文时)托管了来自2881个贡献者的6287个包。这是官网链接:
CTAN: Comprehensive TeX Archive Networkhttps://www.ctan.org/
结束语
本篇大致介绍了LaTeX的基本排版语法,平台用的是 overleaf 在线工具。
主要参考了 overleaf官方 提供的教程文档 ”Learn LaTeX in 30 minutes“(30?一脸黑线!)
后续如果用到更多内容,会进行补充,欢迎一起讨论学习!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)