本地LaTex环境配置教程【Windows】
安装LaTex发行版
LaTex是基于TeX语言拓展的一组宏集(我理解为一个LaTex的命令可能集成了多个TeX的命令)。
而不同的人可能会去实现不同的TeX宏集,并且都做的十分出色。因此就有不同的Latex发行版这一说。
当前常见的LaTex发行版有MiKTeX、TeXLive和MacTeX,本教程就选择安装TeXLive作为示例。
下载
- 下载地址1-清华镜像
- 下载地址2-阿里云盘
安装
测试
使用命令latex -v
,xelatex -v
,pdflatex -v
验证安装是否成功
安装Visual Studio Code
Visual Studio Code(VScode)是微软开源的一款轻量级跨平台编辑器,可以通过安装不同的插件实现高效的代码编辑。
下载
- 下载地址1-官网
- 下载地址2-阿里云盘
安装
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
}
配置属性的一些解释
latex-workshop.latex.tools
在编译过程中需要使用到的编译命令,默认就行,不需要进行修改latex-workshop.latex.recipes
此串代码是对编译链进行定义,其中name是标签,也就是出现在工具栏中的链名称;tools是name标签所对应的编译顺序,其内部编译命令来自上文latex-workshop.latex.tools中内容latex-workshop.latex.autoClean.run
定义在编译过程中是否需要清除过程文件latex-workshop.latex.clean.fileTypes
配合上一个配置使用,表示需要清除的文件类型
编译链的解释
一般我们在使用LaTex写文献的时候,会涉及到论文引用这方面的问题,而一般的方式是使用BibTex
如果说我们的内容不包含文献,其实只用xelatex或pdflatex就足够将文本编译成pdf文件了
但一般我们使用LaTex的目的还是写论文,因此肯定逃不开使用BibTex,而使用BibTex就需要多次编译
而一般的流程就是xelatex
→
\to
→ bibtex
→
\to
→ xelatex
→
\to
→ xelatex或者pdflatex
→
\to
→ bibtex
→
\to
→ pdflatex
→
\to
→ pdflatex
具有的过程在这篇文章中有介绍,有兴趣可以看一下。
Tip:
xelatex或pdflatex的区别在于如果内容中有中文,需要引入中文支持的包并只能使用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}
%内容结束
使用xelatex或pdflatex进行编译,结果如下
向文档中插入图片
这个时候需要导入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}
%内容结束
使用xelatex或pdflatex进行编译,结果如下
向文档中插入表格
表格内容的基本格式,其中\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} 之后使用xelatex或pdflatex进行编译,结果如下:
向文档中插入公式
文档中使用公式需要使用\usepackage{amsmath}
命令添加amsmath包
公式嵌入的两种方式基础结构如下
% 行内嵌入公式,使用 $ $ 标识公式的开始与结束
Zzbro1~1$N=2022$
% 行间嵌入公式,使用如下标识
\begin{equation}
\int_{a}^{b} \,dx
\end{equation}
使用xelatex或pdflatex进行编译,结果如下:
引用文本内容
我们在图片和表的结构中都添加了\label{}
标识,那么对于添加了这些标识的内容,我们可以在文档的任意部分进行引用
但在单命令编译链编译过程中,我们需要修改配置文件的latex-workshop.latex.clean.fileTypes
,将"*.aux",
使用//
注释掉
示例
% 使用\ref{}就可以引用被打标签的部分
\section{Seconde}
Zzbro2\ref{fig:overview}
\section{Third}
Zzbro3\ref{tab:ablations}
使用xelatex或pdflatex进行两次编译,结果如下:
小结
使用LaTex进行写作时,用\begin{} \end{}
这样的结构所标识的内容会自动编号,例如Figure 1、Table 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为例
百度学术
谷歌学术
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
模板结构
修改步骤
- 在main.tex中去掉不需要的内容
- 在main.bib中将自己需要的参考文献BibTex进行添加
- 使用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}