Latex的语法和使用
本文最后更新于 2024年5月14日 上午
本文主要整理了一些常用的Latex语法。
整体架构
1 |
|
导入模板
*.cls
模板文件放在与*.tex
同一个路径下。- 导入包,
\documentclass{cls文件名}
,与*.cls
文件名字保持一致,运行就行了。
换行&分段&换页&空格
换行
- 在LaTeX中,一个回车表示一个空格,两个回车表示一个分段。多个连续的空行,只会被看成一个空行。
- 在段落模式下,
\newline
命令相当于双反斜杠(\\
)。
分段
\par
换页
\newpage
空格
要求 | Latex语法 | 可视化 | 说明 |
---|---|---|---|
两个quad空格 | a \qquad b |
两个m的宽度 | |
quad空格 | a \quad b |
一个m的宽度 | |
大空格 | a\ b |
1/3m宽度 | |
中等空格 | a\;b |
2/7m宽度 | |
小空格 | a\,b |
1/6m宽度 | |
没有空格 | ab |
||
紧贴 | a\!b |
缩进1/6m宽度 |
\quad
、1em
、em
、m
代表当前字体下接近字符M
的宽度。
数学公式
基本语法
1 |
|
涉及到上下标的公式就算是一个变量前后也要加
$
,不然会编译失败
1 |
|
向量表示
1 |
|
单行公式
如果用 \begin{equation}
和 \end{equation}
,则公式除了独占一行还会自动被添加序号。
如何公式不想编号则使用 \begin{equation*}
和 \end{equation*}
。
1 |
|
多行公式
导包:\usepackage{amsmath}
1 |
|
1 |
|
插入矩阵
1 |
|
插入图片
-
导入图片包
\usepackage{graphicx}
。 -
把图片跟
*.tex
文件放在同一路径下,可以直接导入,如果不是同一路径就使用绝对路径。1
2
3
4
5
6
7
8
9
10
11
12% 一张图片占一栏
\begin{figure}[h]
\centering
\includegraphics[scale=0.35]{system_model.png}
\caption{system model}
\end{figure}
% 一张图片占双栏
\begin{figure*}[h]
\centering
\includegraphics[scale=0.35]{system_model.png}
\caption{system model}
\end{figure*}其中,
1
2
3
4
5figure参数:h 此处(here)t 页顶(top)b 页底(bottom)p 独立一页(page)
figure* 双栏排版可加入通栏图片
\centering表示的是里面紧跟的内容都居中
\includegraphics[缩放比例]{图片途径}
\caption添加标题 -
插入并排图片:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25% 导包
\usepackage{geometry}%页面设置
\usepackage{graphicx}%图片设置
\usepackage{subfig}%多个子图
\usepackage{caption}%注释设置
\begin{figure*}[htp] %[htbp]中的h是浮动的意思
\centering %居中
\subfloat[子图1名称] %第一张子图
{
\begin{minipage}[t]{0.5\textwidth}
\centering %子图居中
\includegraphics[scale=0.5]{paper_img/ave_delay.png}
\end{minipage}%
}%注意这里不能回车空行,否则两张图会上下排列,而不是并排排列
\subfloat[子图2名称] %第二张子图
{
\begin{minipage}[t]{0.5\textwidth}
\centering %子图居中
\includegraphics[scale=0.5]{paper_img/all_delay.png} %以行宽的0.5倍大小显示
\end{minipage}
}%
\caption{大图名称} % %大图名称
\label{fig2} %图片引用标记
\end{figure*}
插入表格
小技巧
控制表格标题位置
现有一个表格,若要把表格标题放在表格下面,则把\caption{***}
这一行代码放在下面,如下所示:
1 |
|
若要把表格标题放在表格上面,则把\caption{***}
这一行代码放在上面,如下所示:
1 |
|
\label{tab1}
一定要放在\caption{***}
后面。(\label
即标记,用于\ref
即引用)
控制浮动体的位置
在LaTeX中,table
和figure
等环境都是浮动体。当我们在这些环境后面添加[htbp!]
等参数时,如\begin{figure}[h]
,我们实际上在告诉LaTeX我们希望浮动体出现在何处。
[htbp!]
中的每个字母代表一个特定的位置:
h
(here):就在当前位置。t
(top):在当前页面的顶部。b
(bottom):在当前页面的底部。p
(page):在一个特殊的浮动体页面,该页面除了浮动体和它们的标题外不包含任何其他内容。!
:这是一个特殊的标记,它告诉LaTeX忽视大部分对浮动体位置的内建限制,尽可能地满足我们的位置需求。
要使用[htbp!]
,只需将其作为参数添加到浮动体环境后面即可。例如:
1 |
|
在上面的例子中,figure
环境的参数是[h]
,这告诉LaTeX我们希望图像就在当前位置。table
环境的参数是[ht]
,这告诉LaTeX我们优先希望表格在当前位置,如果这不可能,那么就放在页面顶部。
虽然
[htbp!]
能够让我们对浮动体的位置有更多的控制,但它们并不总是能够完全满足我们的期望。LaTeX的排版算法有其内在的逻辑和限制,它旨在使整个文档的排版看起来整齐和美观。因此,即使我们使用了[htbp!]
,LaTeX也可能不会完全按照我们的期望来放置浮动体。
导入参考文献
-
创建
*.bib
文件。在TexStudio中新建文件,然后保存的时候选择保存为*.bib
文件,即创建了一个BibTex参考文献库,如创建的BibTex库的名字为:ref.bib
。 -
添加引用文章的内容,复制文献的BibTex引用格式,粘贴到
ref.bib
里。例如:1
2
3
4
5
6
7
8
9
10@article{mur2017orb,
title={Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras},
author={Mur-Artal, Raul and Tard{\'o}s, Juan D},
journal={IEEE transactions on robotics},
volume={33},
number={5},
pages={1255--1262},
year={2017},
publisher={IEEE}
} -
在
*.tex
文章开头,\begin{document}
前加入\usepackage{cite}
。 -
添加引用配置,可选的引用格式包括:
1
2
3
4
5
6
7
81. plain,按字母的顺序排列,比较次序为作者、年度和标题
2. unsrt,样式同plain,只是按照引用的先后排序
3. alpha,用作者名首字母+年份后两位作标号,以字母顺序排序
4. abbrv,类似plain,将月份全拼改为缩写,更显紧凑
5. ieeetr,国际电气电子工程师协会期刊样式
6. acm,美国计算机学会期刊样式
7. siam,美国工业和应用数学学会期刊样式
8. apalike,美国心理学学会期刊样式例如,如果想按照cite顺序自动排序文献编号,则把
\bibliographystyle{unsrt}
放在\begin{document}
后面,\bibliography{ref(这里是管理参考文献.bib文件的文件名)}
放在\end{document}
前面。 -
添加引用,在文中添加引用,引用格式如下:
\cite{mur2017orb}
,括号里面填ARTICLE后面的代号就行了,此时引用序号为正文字体大小。使用\upcite{}
,此时引用序号为上标。 -
点击Tools-Bibliography先把
*.bib
文件编译一下,然后编译两次*.tex
文件就行成看到引用的文献啦。将参考文献在正文中进行引用后,再进行编译。如果不引用,该参考文献将不会出现在参考文献列表中。
小技巧
比较两个Latex文件的不同
使用latexdiff,而且TexLive就自带了latexdiff。
-
查看latexdiff是否可用:
在终端输入命令:
1
latexdiff
结果如下则可以直接使用:
1
2 and only 2 non-option arguments required. Write latexdiff -h to get help
-
比较两个文件的不同:
1
latexdiff origin.tex modify.tex > diff.tex
-
报错处理:
- 使用
PdfLaTex
编译器编译直接报错编译失败,没有提示信息。切换为XeLaTex
编译器编译成功。这个问题是因为latexdiff默认的编码方式是UTF-16 LE
格式导致的。也可以通过将diff.tex
的编码方式改为UTF-8
或者新建一个文本文档,将diff.tex
的内容复制进去解决。
- 使用
删除注释行
根据参考链接,定义LaTeX格式文本注释行的正则表达式如下:
注释类型 | 正则表达式 |
---|---|
多行注释 | r'(?m)^%.*\n?' |
单行注释 | r'[^\\]%.+$' |
经测试,单行注释的正则表达式为%.+$
,将其替换为空字符即可。不过删除之后留下的空行可能会导致报错,根据报错位置删除空行即可。