安装 LaTex 发行版

LaTex 是基于 TeX 语言拓展的一组宏集(我理解为一个 LaTex 的命令可能集成了多个 TeX 的命令)。
而不同的人可能会去实现不同的 TeX 宏集,并且都做的十分出色。因此就有不同的 Latex 发行版这一说。
当前常见的 LaTex 发行版有 [MiKTeX](https://miktex.org/download)、[[TeXLive](https://tug.org/texlive/acquire-netinstall.html)](https://tug.org/texlive/acquire-netinstall.html) 和 [MacTeX](https://www.tug.org/mactex/mactex-download.html),本教程就选择安装 TeXLive 作为示例。

下载

安装




测试

使用命令latex -v,xelatex -v,pdflatex -v验证安装是否成功


安装 Visual Studio Code

Visual Studio Code(VScode) 是微软开源的一款轻量级跨平台编辑器,可以通过安装不同的插件实现高效的代码编辑。

下载

安装



VScode 中配置 LaTex 编译

VScode 中有一个 LaTex Workshop 插件,可以实现对 LaTex 编辑的支持。

安装 LaTex Workshop 插件

未安装插件前的效果:

在 VScode 的拓展中搜索 LaTex Workshop 插件并安装


安装后效果:

在拓展栏出现了 TEX 标志,并且语法出现高亮

配置 LaTex Workshop 插件

为了更好的在 VScode 中使用 LaTex,我们需要对 LaTex Workshop 插件进行一些配置。

在 VScode 中使用快捷键Ctrl+Shift+P并在搜索框内输入Preferences:Open Settings(JSON)

添加配置

配置如下

!!! 注意,如果原先的 setting.json 内有配置参数,则需要把下面的配置删除最外层 { } 删除后添加至原先的 { } 内。

{
      // Latex workshop

    "latex-workshop.latex.tools": [
      {
        "name": "latexmk",
        "command": "latexmk",
        "args": [
        "-shell-escape",
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-pdf",
        "%DOC%"
        ]
      },
      {
        "name": "xelatex",
        "command": "xelatex",
        "args": [
        "-shell-escape",
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "%DOC%"
          ]
      },          
      {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
        "-shell-escape",
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "%DOC%"
        ]
      },
      {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
        "%DOCFILE%"
        ]
      }
    ],
    "latex-workshop.latex.recipes": [
      {
        "name": "xelatex",
        "tools": [
        "xelatex"
        ]
      },
      {
        "name": "pdflatex",
        "tools": [
            "pdflatex"
        ]
      },
      {
        "name": "latexmk",
        "tools": [
        "latexmk"
        ]
      },
      {
        "name": "pdflatex -> bibtex -> pdflatex*2",
        "tools": [
        "pdflatex",
        "bibtex",
        "pdflatex",
        "pdflatex"
        ]
      },
      {
        "name": "xelatex -> bibtex -> xelatex*2",
        "tools": [
        "xelatex",
        "bibtex",
        "xelatex",
        "xelatex"
        ]
      }],
    "latex-workshop.view.pdf.viewer": "tab",  
    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.latex.autoClean.run": "onBuilt",
    "latex-workshop.latex.clean.fileTypes": [
        "chapters/*.aux",
        "misc/*.aux",
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk"
      ],
    "latex-workshop.message.update.show": false,
    "editor.fontSize": 18,
    "files.autoSave": "afterDelay",
    "window.zoomLevel": 1
 }
配置属性的一些解释
  1. latex-workshop.latex.tools 在编译过程中需要使用到的编译命令,默认就行,不需要进行修改
  2. latex-workshop.latex.recipes 此串代码是对编译链进行定义,其中 name 是标签,也就是出现在工具栏中的链名称;tools 是 name 标签所对应的编译顺序,其内部编译命令来自上文 latex-workshop.latex.tools 中内容
  3. latex-workshop.latex.autoClean.run 定义在编译过程中是否需要清除过程文件
  4. latex-workshop.latex.clean.fileTypes 配合上一个配置使用,表示需要清除的文件类型
编译链的解释

一般我们在使用 LaTex 写文献的时候,会涉及到论文引用这方面的问题,而一般的方式是使用 BibTex
如果说我们的内容不包含文献,其实只用 xelatexpdflatex 就足够将文本编译成 pdf 文件了
但一般我们使用 LaTex 的目的还是写论文,因此肯定逃不开使用 BibTex,而使用 BibTex 就需要多次编译
而一般的流程就是 xelatex → \to → bibtex → \to → xelatex → \to → xelatex 或者 pdflatex → \to → bibtex → \to → pdflatex → \to → pdflatex
具有的过程在[这篇文章](https://blog.csdn.net/huitailangyz/article/details/99685683)中有介绍,有兴趣可以看一下。
Tip: xelatexpdflatex 的区别在于如果内容中有中文,需要引入中文支持的包并只能使用 xelatex 编译

使用 LaTex Workshop 插件

进行上述配置以后,我们就可以在 VScode 拓展面板看到我们所配置的结果

COMMANDS 中有五种不同的编译链,对应我们在latex-workshop.latex.recipes下的配置
SNIPPET VIEW 中提供了 LeTax 的公式编辑帮助,点击其中的符号就可以在 tex 文本中直接添加

使用定义好的编译链编译. tex 文件

示例的 CVPR 模板可以从我的阿里云下载:下载地址
首先选中并打开需要编译的. tex 文件

然后打开 VScode 拓展栏中的 TEX
COMMANDS 选择 xelatex → \to → bibtex → \to → xelatex → \to → xelatex 或者 xelatex → \to → bibtex → \to → xelatex → \to → xelatex
单击后,tex 文件便会被编译成 pdf

编译后效果

LaTex 基础

文档的基本结构

一般的文本结构如下,标识是以 \开头的
\begin{document}后,在标识与标识之间填写的内容会属于开始的标识
例如,Zzbro1 属于第一节的内容,Zzbro1~1 属于第一节的第一子节

%文档的类型
\documentclass{article}
%导入需要用的宏包,不限制数量
\usepackage{amsmath}

%内容开始-只有以下内容会出现在最终的pdf文档中
\begin{document}
%节的标识
\section{First}
Zzbro1
%子节的标识
\subsection{One}
Zzbro1~1
\subsection{Two}
Zzbro1~2
\section{Seconde}
Zzbro2
\section{Third}
Zzbro3

\end{document}
%内容结束

使用 xelatexpdflatex 进行编译,结果如下

向文档中插入图片

这个时候需要导入 graphicx 宏包来支持插入图片,使用命令\usepackage{graphicx}
插入图片的基本结构如下

%图片的标识
\begin{figure}
    %居中
    \begin{center}
        %插入图片,{}内是图片的名字,!!!路径需要填写以tex文件所在路径的相对位置
        \includegraphics{clock.png}
    \end{center}
    %图片描述信息,一般论文就是图名和描述图的内容
    \caption{
        A clock
    }
    %为这张图打上一个标签,方便在其他地方引用
    \label{fig:overview}
\end{figure}

带图片的示例文档

%文档的类型
\documentclass{article}
%导入需要用的宏包,不限制数量
\usepackage{amsmath}
\usepackage{graphicx}
%内容开始-只有以下内容会出现在最终的pdf文档中
\begin{document}
%图片的标识
\begin{figure}
    %居中
    \begin{center}
        %插入图片,{}内是图片的名字
        \includegraphics{clock.png}
    \end{center}
    %图片描述信息,一般论文就是图名和描述图的内容
    \caption{
        A clock
    }
    %为这张图打上一个标签,方便在其他地方引用
    \label{fig:overview}
\end{figure}
%节的标识
\section{First}
Zzbro1
%子节的标识
\subsection{One}
Zzbro1~1
\subsection{Two}
Zzbro1~2
\section{Seconde}
Zzbro2
\section{Third}
Zzbro3

\end{document}
%内容结束

使用 xelatexpdflatex 进行编译,结果如下

向文档中插入表格

表格内容的基本格式,其中\begin{tabular}后的lc表示第一列内容左对齐,第二列内容居中对齐

%表的标识
\begin{table}
    %居中
    \centering
    %表的内容开始标识
    \begin{tabular}{lc}
        Method & Frobnability\\
        Ours v0 & Frumpy \\
        Ours v1 & Frobbly \\
        Ours & Makes one's heart Frob\\
    \end{tabular}
    %表描述信息,一般论文就是表名和描述表的内容
    \caption{
        \textbf{Ablations} -- our decisions are well justified.
    }
    %为这个表打上一个标签,方便在其他地方引用
    \label{tab:ablations}
\end{table}

添加至文档 \begin{document} 之后使用 xelatexpdflatex 进行编译,结果如下:

向文档中插入公式

文档中使用公式需要使用\usepackage{amsmath}命令添加 amsmath
公式嵌入的两种方式基础结构如下

% 行内嵌入公式,使用 $ $ 标识公式的开始与结束 
Zzbro1~1$N=2022$
% 行间嵌入公式,使用如下标识
\begin{equation}
    \int_{a}^{b}  \,dx 
\end{equation}

使用 xelatexpdflatex 进行编译,结果如下:

引用文本内容

我们在图片和表的结构中都添加了\label{}标识,那么对于添加了这些标识的内容,我们可以在文档的任意部分进行引用
但在单命令编译链编译过程中,我们需要修改配置文件的latex-workshop.latex.clean.fileTypes,将"*.aux",使用//注释掉
示例

% 使用\ref{}就可以引用被打标签的部分
\section{Seconde}
Zzbro2\ref{fig:overview}
\section{Third}
Zzbro3\ref{tab:ablations}

使用 xelatexpdflatex 进行两次编译,结果如下:

小结

使用 LaTex 进行写作时,用\begin{} \end{} 这样的结构所标识的内容会自动编号,例如 Figure 1Table 1 和公式的编号 (1)

文档的示例结构如下
%文档的类型
\documentclass{article}
%导入需要用的宏包,不限制数量
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{booktabs}

%内容开始-只有以下内容会出现在最终的pdf文档中
\begin{document}
%图片的标识
\begin{figure}
    %居中
    \begin{center}
        %插入图片,{}内是图片的名字
        \includegraphics{clock.png}
    \end{center}
    %图片描述信息,一般论文就是图名和描述图的内容
    \caption{
        A clock
    }
    %为这张图打上一个标签,方便在其他地方引用
    \label{fig:overview}
\end{figure}
%节的标识
\section{First}
Zzbro1
%子节的标识
\subsection{One}
% 行内嵌入公式,使用 $ $ 标识公式的开始与结束 
Zzbro1~1$N=2022$

% 行间嵌入公式,使用如下标识
\begin{equation}
    \int_{a}^{b}  \,dx 
\end{equation}

\subsection{Two}
Zzbro1~2
%表的标识
\begin{table}
    %居中
    \centering
    %表的内容开始标识
    \begin{tabular}{@{}lc@{}}
        Method & Frobnability\\
        Ours v0 & Frumpy \\
        Ours v1 & Frobbly \\
        Ours & Makes one's heart Frob\\
    \end{tabular}
    %表描述信息,一般论文就是表名和描述表的内容
    \caption{
        \textbf{Ablations} -- our decisions are well justified.
    }
    %为这个表打上一个标签,方便在其他地方引用
    \label{tab:ablations}
\end{table}

\section{Seconde}
%引用\ref{}
Zzbro2 - fig\ref{fig:overview}
\section{Third}
Zzbro3 - tab\ref{tab:ablations}

\end{document}
%内容结束

LaTex 中使用 bib 管理引用文献

可以使用 BibTeX 来管理引用文献我认为是 LaTex 最最方便的功能之一!
我们需要在 tex 文件的同级目录下新建一个 bib 文件即可,示例中新建的文件为 test.bib

查找文献的 BibTeX

我们以查找《Deep Residual Learning for Image Recognition》这篇论文的 BibTex 为例

[百度学术](https://xueshu.baidu.com/)


[谷歌学术](https://scholar.google.com/schhp?hl=zh-CN&as_sdt=0,5)


DBLP


在文档中插入文献引用

我们在不同数据库所查找到的 BibTex 文件可能是不一样的,但都包含了论文的基础信息
其中,最需要注意的地方就是 BibTex 第一行 {, 之间的简称内容,例如下面的 2016Deep、He_2016_CVPR、DBLP:conf/cvpr/HeZRS16
我们在文档中引用文献时,使用的就只是这里定义的简称,类似于标签的形式。

%百度学术
@article{2016Deep,
  title={Deep Residual Learning for Image Recognition},
  author={ He, K.  and  Zhang, X.  and  Ren, S.  and  Sun, J. },
  journal={IEEE},
  year={2016},
}
%谷歌学术
@InProceedings{He_2016_CVPR,
author = {He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian},
title = {Deep Residual Learning for Image Recognition},
booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2016}
}
%DBLP
@inproceedings{DBLP:conf/cvpr/HeZRS16,
  author    = {Kaiming He and
               Xiangyu Zhang and
               Shaoqing Ren and
               Jian Sun},
  title     = {Deep Residual Learning for Image Recognition},
  booktitle = {2016 {IEEE} Conference on Computer Vision and Pattern Recognition,
               {CVPR} 2016, Las Vegas, NV, USA, June 27-30, 2016},
  pages     = {770--778},
  publisher = {{IEEE} Computer Society},
  year      = {2016},
  url       = {https://doi.org/10.1109/CVPR.2016.90},
  doi       = {10.1109/CVPR.2016.90},
  timestamp = {Wed, 16 Oct 2019 14:14:50 +0200},
  biburl    = {https://dblp.org/rec/conf/cvpr/HeZRS16.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

我们选择上述谷歌学术的 BibTex 填入 text.bib 文件中,并在 text.tex 文档中进行引用
其中需要注意的是,我们引用 BibTex 中的简称需要使用 \cite{} 命令,并且需要在文档的尾部设置引用的类型

文档中引用模板的格式
% 引用BibTex中的简称需要使用 \cite{} 命令
\documentclass{article}

\begin{document}


\section{First}
Zzbro1

\subsection{One}

Zzbro1~1

Reference here\cite{He_2016_CVPR}

\subsection{Two}
Zzbro1~2

\section{Seconde}
Zzbro2
\section{Third}
Zzbro3


%BibTex 样式
{   
    %设置BibTex所在的文件,我们这里是test.bib 可简写为test
    \bibliography{test.bib}
    %设置BibTexde的样式文件,我们这里是ieee_fullname.bst 可简写为ieee_fullname
    \bibliographystyle{ieee_fullname}
}

\end{document}

使用 pdflatex → \to → bibtex → \to → pdflatex → \to → pdflatex 编译链编译,结果如下:

LaTex 使用模板写作样例

在掌握了上述 LaTex 基础后,使用模板写作相信大家就可以手到擒来了,这里以 CVPR 的模板为例,模板来源于 overleaf

模板结构

修改步骤

  1. 在 main.tex 中去掉不需要的内容
  2. 在 main.bib 中将自己需要的参考文献 BibTex 进行添加
  3. 使用 pdflatex → \to → bibtex → \to → pdflatex → \to → pdflatex 编译链编译

修改示例

在 main.tex 中删除不需要的内容

修改不同章节的内容

添加参考文献并在正文中引用

这里将该条引用的简称改为了 ResNet,因此在论文中就需要以 \cite{ResNet}来引用

使用 pdflatex → \to → bibtex → \to → pdflatex → \to → pdflatex 编译链编译

这里使用 pdflatex → \to → bibtex → \to → pdflatex → \to → pdflatex 编译链,因为存在了 bib 文件
至于你可能会问为什么不用 xelatex → \to → bibtex → \to → xelatex → \to → xelatex,这里可能会报错,也可能不报错。但,只要能编译成功就不要再纠结用哪个啦~
还需要将 main.tex 中的\usepackage[pagenumbers]{cvpr}\bibliographystyle{ieee_fullname} 改一下路径
修改为\usepackage[pagenumbers]{cvpr22/cvpr}\bibliographystyle{cvpr22/ieee_fullname}

参考

[TeX 引擎、格式、发行版之介绍](https://www.latexstudio.net/archives/51537.html)
[Visual Studio Code (vscode) 配置 LaTeX](https://zhuanlan.zhihu.com/p/166523064)