我的$\LaTeX$使用笔记及格式约定。
基础设置
% !TeX encoding = UTF-8
% !TeX program = xelatex
% !TeX spellcheck = en_US
常用宏包
\usepackage{amsmath,amsthm,amsfonts,amssymb,amscd} % 数学公式、符号等宏包
\usepackage{enumerate} % 插入带序号列表
\usepackage{graphicx} % 插入图片
\usepackage{listings} % 插入代码块
\usepackage{hyperref} % 插入超链接,官方文档建议在最后调用
\usepackage[backref]{hyperref} % 章节引回
\usepackage[pagebackref]{hyperref} % 页码引回
\hypersetup{ % 超链接样式设置
colorlinks=false,
linkcolor=blue,
linkbordercolor={0 0 1}
}
\hypersetup{hidelinks} % 不显示超链接线框
\usepackage{ctex} % 中文支持
\usepackage{mathtools} % 插入分段函数
\usepackage{algorithm} % 插入伪代码
\usepackage{algpseudocode} % 插入伪代码
\renewcommand{\algorithmicrequire}{\textbf{Input:}} % Use Input in the format of Algorithm
\renewcommand{\algorithmicensure}{\textbf{Output:}} % Use Output in the format of Algorithm
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode} % 插入MATLAB代码块,基于listings开发
\usepackage{multirow} % 跨多行表格
\usepackage{subfigure} % 插入子图
\usepackage{tabto} % 插入Tab
\NumTabs{16} % define 16 equally spaced tabs starting at the left margin
% and spanning \linewidth
\usepackage{fontawesome} % 添加小图标
\usepackage{pifont} % 添加对号、错号
\newcommand{\cmark}{\ding{51}} % 定义对号命令,本质上是重命名pifont宏包中的\ding{51}命令
\newcommand{\xmark}{\ding{55}} % 定义错号命令,本质上是重命名pifont宏包中的\ding{55}命令
\usepackage[square,super]{natbib} % 调整参考文献样式:方括号、右上角
\usepackage[landscape]{geometry} % 设置页面为横向
\usepackage{tikz} % 绘制图形
\usepackage{tikz-3dplot} % 绘制三维坐标系,坐标变换
\usepackage{courier} % 使用打字机字体/等宽字体
\usepackage{placeins} % 限制浮动体位置
\usepackage{siunitx} % 使用国际单位制
格式约定
- 源码在遇到
\begin{}
时要缩进; -
数学符号参考常用数学符号的LaTeX表示方法,但有以下几点注意事项:
- 上下标使用
{}
括起来; - 矩阵和向量使用粗体(boldface):
\mathbf{}
或\boldsymbol{}
; - 常数使用正体,也被称为罗马体(roman):
\mathrm{}
; - 数集使用黑板粗体(blackboard bold):
\mathbb{}
; - 坐标系使用书法体(calligraphic):
\mathcal{}
; - 一些特殊符号使用哥特体,也被称为德文尖角体(fraktur):
\mathfrak{}
; - 绝对值使用
|
或\vert
,范数使用\|
; - argmin使用
\mathop{\arg\min}\limits_{}
,argmax同理; - 小空格用
\quad
,大空格用\qquad
; - 分式尽量使用
\dfrac{}{}
,若显示有问题再使用\frac{}{}
; - 角度使用
\angle
,度数使用^{\circ}
; - 点乘使用
\cdot
或\bullet
,叉乘使用\times
; - 导数使用
\mathrm{d}
,偏导数使用\partial
; - 反对称矩阵使用
^{\wedge}
,其逆运算使用^{\vee}
; - 矩阵转置使用
^{\mathrm{T}}
; - 一阶导数使用
^{\prime}
; - 定义等号使用
\triangleq
或\overset{def}{=}
; - 内容上加长横线使用
\overline{}
; - 内容上加文字使用
\overset{}{}
; - 公式上方大括号使用
\overbrace{}^{}
,公式下方大括号使用\underbrace{}_{}
; - 向上取整使用
\lceil \rceil
、向下取整使用\lfloor \rfloor
;
- 上下标使用
-
括号大小根据内容自动调整:
\left( \right) % 小括号() \left[ \right] % 中括号[] \left\{ \right\} % 大括号{} \left| \right| % 绝对值|| \left\| \right\| % 范数 \left. \right| % 左侧不显示,右侧大小自动调整 \left\lceil \right\rceil % 向上取整⌈⌉ \left\lfloor \right\rfloor % 向下取整⌊⌋
- 使用
\hfill
进行水平填充,同理,使用\vfill
进行垂直填充; - 使用
\hspace{}
插入水平间隔,同理,使用\vspace{}
插入垂直间隔,大括号前添加*
表示强制插入; - 使用
\tab
插入Tab
,一个Tab
对应的宽度通过\NumTabs{}
进行定义,将当前环境下的行宽若干等分; -
公式、图片、表格的引用标记要进行区分:
\label{eq:XXX} % 公式 \label{fig:XXX} % 图片 \label{tab:XXX} % 表格
-
插入对号、错号:
\cmark % 对号 \xmark % 错号
- 使用
\today
插入当天日期; - 使用
\
或{}
在$\LaTeX$命令后插入空格; -
字母音调:
\={} % 一声 \'{} % 二声 \v{} % 三声 \u{} % 类似三声的圆弧 \`{} % 四声 \.{} % 加点 \"{} % 加双点
- 电子邮箱名使用等宽字体,也被称为打字机字体(teletype):
\texttt{}
;
自定义命令
\newcommand{命令名}[参数个数][默认参数]{命令定义} % 定义新命令,要求新命令名不能与已有命令重名
\renewcommand{命令名}[参数个数][默认参数]{命令定义} % 重命名命令,要求被重命名的命令存在
\providecommand{命令名}[参数个数][默认参数]{命令定义} % 条件定义命令,如果命令不存在则定义新命令,此时效果与\newcommand相同,如果命令已存在则无操作
% 要求参数不超过一段
\newcommand*{命令名}[参数个数][默认参数]{命令定义}
\renewcommand*{命令名}[参数个数][默认参数]{命令定义}
\providecommand*{命令名}[参数个数][默认参数]{命令定义}
- 命令名不能以
\end
开头; - 参数个数不能超过9个,缺省表示无参数输入;
-
默认参数:
- 在定义命令时,默认参数只能指定第一个参数的默认值,
[]
表示默认参数为空字符串,缺省表示无默认参数; - 在调用命令时,对于第一个参数,可以通过新参数覆盖默认参数,
[]
表示新参数为空字符串,缺省表示使用默认参数; - 在调用命令时,如果定义了默认参数,其余参数从第二个参数开始输入;
- 在定义命令时,默认参数只能指定第一个参数的默认值,
- 命令定义中使用
#n
表示第n个参数;
示例:
\newcommand{\RS}{Robin Smith}
\newcommand{\qedsymbol}{\small QED}
\newcommand{\defref}[1]{Definition~\ref{#1}}
\newcommand{\salutation}[1][Sir or Madam]{Dear #1:}
字体
字体样式
- 粗体(boldface):
\textbf{}
; - 意大利斜体(italics):
\textit{}
; - 倾斜正体(slanted):
\textsl{}
; - 打字机字体(teletype):
\texttt{}
; - 下划线(underline):
\underline{}
;
字体大小
全局模式
在文档开头定义默认字体大小:
\documentclass[12pt]{article}
局部模式
在全局模式的基础上修改字体大小:
\tiny % 最小
\scriptsize
\footnotesize
\small
\normalsize % 默认字体大小
\large
\Large
\LARGE
\huge
\Huge % 最大
列表
无序号列表
\begin{itemize} % 默认:实心点
\item 默认样式
\item[*] 指定样式
\end{itemize}
有序号列表
\begin{enumerate}[(1)] % 此处指定序号样式,默认:1.
\item 支持123
\item 支持abc
\item 支持ABC
\item 支持i ii iii
\item 支持I II III
\item 在上述基础上支持左右括号
\end{enumerate}
公式
行内公式
$公式内容$
行间公式
带编号
单个公式
\begin{equation}
\label{eq:1.1} % 引用标记
公式内容
\end{equation}
多个公式
分别编号
\begin{align}
\label{eq:1.2}
& 公式内容 \\
\label{eq:1.3}
& 公式内容
\end{align}
相同编号
\begin{equation}
\label{eq:1.4}
\begin{aligned}
& 公式内容 \\
& 公式内容
\end{aligned}
\end{equation}
公式引用
\eqref{eq:1.1} % 有括号
\ref{eq:1.2} % 无括号
无编号
\begin{align*}
& 公式内容 \\
& 公式内容
\end{align*}
分段函数
通常在equation
或align
环境中使用,对于大括号整体编号。
-
使用
dcases
:\begin{dcases} 公式内容 & 条件 \\ 公式内容 & 条件 \end{dcases}
dcases
:条件为纯公式,文本使用\text{}
;dcases*
:条件为纯文本,公式使用$ $
;
-
使用
array
:\left\{\begin{array}{l} 公式内容 \\ 公式内容 \end{array}\right.
向量/矩阵
使用array
环境
\begin{array}{ccc} % 指定每列的对齐方式,个数对应列数
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array}
-
对齐方式:
c
:center,居中;l
:left,左对齐;r
:right,右对齐;
-
列之间可以添加分隔线
|
;
使用矩阵环境
\begin{bmatrix} % 矩阵样式
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}
-
矩阵样式:
matrix
:无括号;pmatrix
:圆括号;bmatrix
:方括号;Bmatrix
:大括号;vmatrix
:行列式;Vmatrix
:范数;
图片
插入单个图片
\begin{figure}[htbp] % 指定图片位置
\centering % 居中
\includegraphics[width=10cm]{image.png}
\caption{Image Title} % 图片标题
\label{fig:1}
\end{figure}
-
浮动格式说明:
h
:here,当前位置;t
:top,顶部;b
:bottom,底部;p
:page of its own,浮动页;
- 强制浮动格式:
[!h]
,不考虑美观性; - 使用
\FloatBarrier
限制浮动体位置; -
图片格式说明:
- 建议矢量图片使用
.pdf
格式,比如数据可视化的绘图; - 照片应使用
.jpg
格式; - 其他的栅格图应使用无损的
.png
格式; - 注意,$\LaTeX$不支持
.tiff
格式,.eps
格式已经过时;
- 建议矢量图片使用
- 图片跨双栏使用
\begin{figure*}
;
插入子图
以四个子图2*2排列为例进行说明:
\begin{figure}[htbp]
\centering
\subfigure[Subfigure Title 1] % 子图标题
{
\includegraphics[width=0.3\textwidth]{image1.png}
\label{fig:2a}
}
\quad
\subfigure[Subfigure Title 2]
{
\includegraphics[width=0.3\textwidth]{image2.png}
\label{fig:2b}
}
% 这里换行
\subfigure[Subfigure Title 3]
{
\includegraphics[width=0.3\textwidth]{image3.png}
\label{fig:2c}
}
\quad
\subfigure[Subfigure Title 4]
{
\includegraphics[width=0.3\textwidth]{image4.png}
\label{fig:2d}
}
\caption{Title} % 总标题
\label{fig:2}
\end{figure}
表格
\begin{table}[htbp] % 指定表格位置
% \def\arraystretch{1.3} % 调整表格整体行高
\centering
\caption{Table Title} % 表格标题
\label{tab:1}
\begin{tabular}{ccc} % 指定每列的对齐方式,个数对应列数
\hline
方法 & APE [m] & RPE [\%]\\
\hline
方法1 & 0.10 & 0.20 \\
方法2 & 0.05 & 0.15 \\
\hline
\end{tabular}
\end{table}
- 浮动格式说明同上;
-
对齐方式:
c
:center,居中;l
:left,左对齐;r
:right,右对齐;p{}
:超过指定宽度后自动换行,例如:p{3cm}
;
-
表格框线:
- 水平框线:使用
\hline
; - 垂直框线:在对齐方式处对应的列之间添加分隔线
|
; - 部分列水平框线:使用
\cline{i-j}
在i到j列间添加水平框线,使用\rule{0pt}{11pt}
调节垂直方向距离;
- 水平框线:使用
- 表格跨双栏使用
\begin{table*}
; -
不规则形状表格:
\multicolumn{number of cols}{pos}{text} % 跨多列,pos表示对齐方式 \multirow{number of rows}{width}{text} % 跨多行,宽度不定可用{*}
超链接
网址超链接
\url{网址} % 直接显示待超链接的网址
\href{网址}{显示文字} % 显示带超链接的文字
邮箱超链接
\href{mailto:xxx@xxx.xxx}{显示文字}
伪代码
\begin{algorithm}[htbp]
\caption{Title} % 伪代码标题
\label{alg:1}
\begin{algorithmic}[1]
\If{condition}
\State statement
\ElsIf{condition}
\State statement
\ForAll{condition}
\If{condition}
\State statement
\EndIf
\EndFor
\State statement
\EndIf
\State \Return return value
\end{algorithmic}
\end{algorithm}
代码块
常用语言支持
- bash
- C
- C++
- Matlab
- Octave
- Python
- TeX
设置显示样式
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{blue}\bfseries,
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=4,
frame=shadowbox,
framerule=0.5pt,
otherkeywords={string}
}
插入代码块
直接插入
\lstset{style=mystyle} % 使用显示样式
\begin{lstlisting}[language=语言]
代码段
\end{lstlisting}
示例:
\lstset{style=mystyle}
\begin{lstlisting}[language=C++]
#include <iostream>
using namespace std;
int main()
{
// This is a comment.
cout << "Hello, World!" << endl;
return 0;
}
\end{lstlisting}
从文件插入
\lstset{style=mystyle} % 使用显示样式
\lstinputlisting[language=语言]{文件名}
示例:
\lstset{style=mystyle} % 使用显示样式
\lstinputlisting[language=C++]{main.cpp}
脚注
\footnote{脚注内容} % 编号自动递增
\footnote[编号]{脚注内容} % 人为指定编号(纯数字)
引用参考文献
不使用BibTeX
文献保存
在文章末尾插入:
\begin{thebibliography}{99} % 最大参考文献个数
\bibitem{标签}参考文献引用格式 % 标签在引用时使用
\end{thebibliography}
示例:
\begin{thebibliography}{99}
\bibitem{ref1}Zhang J, Singh S. LOAM: Lidar Odometry and Mapping in Real-time[C]//Robotics: Science and Systems. 2014, 2(9).
\bibitem{ref2}Zhang J, Singh S. Low-drift and real-time lidar odometry and mapping[J]. Autonomous Robots, 2017, 41(2): 401-416.
\bibitem{ref3}Shan T, Englot B. Lego-loam: Lightweight and ground-optimized lidar odometry and mapping on variable terrain[C]//2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2018: 4758-4765.
\bibitem{ref4}Shan T, Englot B, Meyers D, et al. Lio-sam: Tightly-coupled lidar inertial odometry via smoothing and mapping[J]. arXiv preprint arXiv:2007.00258, 2020.
\end{thebibliography}
文献引用
\cite{ref1}
\cite{ref2, ref3}
使用BibTeX
文献保存
-
保存
.bib
文件:@article{name1, % 名称在引用时使用 author = {作者, 多个作者用 and 连接, 多个词当成一个整体用{}括起来, 例如团体名和组织名}, title = {标题}, journal = {期刊名}, volume = {卷}, number = {页码}, year = {年份}, abstract = {摘要, 引用时自己参考, 非必须} } @book{name2, author ="作者", year="年份", title="书名", publisher ="出版社名称" }
示例:
@inproceedings{zhang2014loam, title={LOAM: Lidar Odometry and Mapping in Real-time.}, author={Zhang, Ji and Singh, Sanjiv}, booktitle={Robotics: Science and Systems}, volume={2}, number={9}, year={2014} } @article{zhang2017low, title={Low-drift and real-time lidar odometry and mapping}, author={Zhang, Ji and Singh, Sanjiv}, journal={Autonomous Robots}, volume={41}, number={2}, pages={401--416}, year={2017}, publisher={Springer} } @inproceedings{shan2018lego, title={Lego-loam: Lightweight and ground-optimized lidar odometry and mapping on variable terrain}, author={Shan, Tixiao and Englot, Brendan}, booktitle={2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, pages={4758--4765}, year={2018}, organization={IEEE} } @article{shan2020lio, title={Lio-sam: Tightly-coupled lidar inertial odometry via smoothing and mapping}, author={Shan, Tixiao and Englot, Brendan and Meyers, Drew and Wang, Wei and Ratti, Carlo and Rus, Daniela}, journal={arXiv preprint arXiv:2007.00258}, year={2020} }
-
在文章末尾插入:
\bibliographystyle{plain} % 预设样式 \bibliography{ref} % 对应.bib文件名
-
预设样式说明:
plain
:按字母的顺序排列,比较次序为作者、年度和标题;unsrt
:样式同plain
,只是按照引用的先后排序;alpha
:用作者名首字母+年份后两位作标号,以字母顺序排序;abbrv
:类似plain
,将月份全拼改为缩写,更显紧凑;ieeetr
:国际电气电子工程师协会期刊样式;acm
:美国计算机学会期刊样式;siam
:美国工业和应用数学学会期刊样式;apalike
:美国心理学学会期刊样式;
文献引用
\cite{name1}
\cite{name1, name2}
文献格式化工具
.bib
文件格式化
引用样式格式化
TikZ绘图
- 单独整理。
Beamer演示文稿
- 单独整理。
高质量网站存档
提升输入效率
LaTeX数学公式
数学符号
- 常用数学符号的LaTeX表示方法
- List of LaTeX mathematical symbols-OeisWiki
- LaTeX Mathematical Symbols-Rice University
- Detexify
公式编辑器
- LaTeX公式编辑器
- Equation Editor
- 在线LaTeX公式编辑器
- LaTeX在线:吴文中数学公式编辑器
- 公式王
- google/latexify_py
- blaisewang/img2latex-mathpix
Office数学公式
表格
中文支持
代码格式化
参考文献
模板和学习资源查询
网站
- LaTeX工作室
- Overleaf Documentation
- Overleaf Templates
- LaTeX Templates
- MOON
- BibTeX
- TikZ
- TeXample
- LaTeX Beamer
教程
- 各个宏包的说明文档(TeXstudio中在对应命令上右键打开);
- latex中文教程-15集从入门到精通包含各种latex操作-bilibili
- 【1天玩转LaTeX】【写论文不怕格式出错啦!!!】【耿楠教授授权发布】-bilibili
- LaTex教程【中文字幕】LaTeX by Michelle Krummel-bilibili
GitHub
教程
- CTeX-org/lshort-zh-cn
- MartinThoma/LaTeX-examples
- wklchris/Note-by-LaTeX
- egeerardyn/awesome-LaTeX
- xinychen/latex-cookbook
- huangxg/lnotes
- tuna/thulib-latex-talk
- oetiker/lshort
- OsbertWang/install-latex-guide-zh-cn
- wch/latexsheet
模板
文档模板
- ElegantLaTeX/ElegantBook
- ElegantLaTeX/ElegantPaper
- ElegantLaTeX/ElegantNote
- DeathKing/LaTeX-Template-Cn
简历模板
- posquit0/Awesome-CV
- billryan/resume
- sb2nov/resume
- dyweb/awesome-resume-for-chinese
- jankapunkt/latexcv
- hijiangtao/resume
- darwiin/yaac-another-awesome-cv
- huajh/awesome-latex-cv
- dyweb/Deedy-Resume-for-Chinese
Beamer模板
- wzpan/BeamerStyleSlides
- XiangyunHuang/awesome-beamers
- 清华大学中文Beamer模板-Overleaf
- TsinghuaBeamer-Overleaf
- Trinkle23897/THU-Beamer-Theme
- YangLaTeX/thubeamer
- fuujiro/DLUT-Beamer-Slide-V2
- fuujiro/DLUT-Beamer-Slide-V1
有趣模板
- Wandmalfarbe/pandoc-latex-template
- Keldos-Li/typora-latex-theme
- Ruzim/NSFC-application-template-latex
- MattX/texword
高质量模板
参考
- !TeX-Stack Exchange
- argmin&argmax-CSDN博客
- 矩阵转置-知乎
- \prime-CSDN博客
- \triangleq-CSDN博客
- \overline-Stack Exchange
- 公式上方下方大括号-百度经验
- 长竖线-知乎
- \tab-Stack Exchange
- 对号&错号-Stack Exchange
- LaTeX页面设置-冬日暖阳的文章-知乎
- 空格-Stack Exchange
- 音调1-CSDN博客
- 音调2-知乎
- 音调3-CSDN博客
- 自定义命令1-Stack Exchange
- 自定义命令2-Stack Exchange
- 字体大小-简书
- 列表-CSDN博客
- 公式1-简书
- 公式2-CSDN博客
- 矩阵-知乎
- 图片1-CSDN博客
- 图片2-CSDN博客
- 单元格换行-CSDN博客
- \cline-CSDN博客
- \rule-Stack Exchange
- 长度单位-CSDN博客
- \multirow-CSDN博客
- 超链接-CSDN博客
- 代码块1-Overleaf
- 代码块2-CSDN博客
- 脚注-LaTeX工作室
- 参考文献1-知乎
- 参考文献2-知乎
- 参考文献3-Stack Exchange
- 参考文献4-CSDN博客
- 参考文献5-CSDN博客
- LaTeX写作工具-平凡的文章-知乎
- LaTeX公式转Word公式-简书
- 截至目前LaTeX入门最好资料-我是科研小秘书的文章-知乎