目录
前言
考虑本文受众有新手小白,故部分叙述比较啰嗦,可能有部分毫无编程经验的人来阅读本文,故在文中放了许多看似不必要的关于VS Code操作的图,大佬见谅。
一、软件下载
TexLive清华镜像
https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/
VS Code官网
https://code.visualstudio.com/
sumatrapdf官网
https://www.sumatrapdfreader.org/free-pdf-reader.html
二、软件安装
1.TexLive安装
下载后得到texlive20xx.iso的文件,解压得到如下文件
右键,以管理员身份运行install-tl-windows.bat,点击1处修改安装位置
点击2处,确保3处所示的自动添加环境变量选项被勾选,此处不建议取消一些宏包的安装,以防之后使用出现问题,点击安装按钮,安装过程比较久,需要亿点点耐心。
2.VS Code及插件安装
VS Code的安装比较简单,不多叙述。VS Code安装后,点击左侧拓展按钮,安装LaTex所需插件
搜索latex,点击安装LaTeX Workshop
三、配置 VS Code
打开VS Code 默认配置文件,快捷键:Ctrl + Shift + P,输入settings.json,点击打开设置
将下面这段配置代码,复制到settings.json 文件的最外围的花括号之中
// ======================== LaTeX 设置 BEGIN ========================
// bibtex 格式
"latex-workshop.bibtex-format.tab": "tab",
// 自动编译,全部关闭,当且仅当你认为有需要的时候才会去做编译
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": false,
// 设置 latex-workshop 的 PDF 预览程序,external 指的是外部程序
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "D:/software/Sumatra PDF/SumatraPDF/SumatraPDF.exe", // 注意修改路径
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
// 配置正向、反向搜索:.tex -> .pdf
"latex-workshop.view.pdf.external.synctex.command": "D:/software/Sumatra PDF/SumatraPDF/SumatraPDF.exe", // 注意修改路径
"latex-workshop.view.pdf.external.synctex.args": [
// 正向搜索
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
// 反向搜索
"-inverse-search",
"\"D:/VS code/Microsoft VS Code/Code.exe\" -g \"%f:%l\"",
//"\"D:/VS code/Microsoft VS Code/Code.exe\" \"D:/VS code/Microsoft VS Code/resources/app/out/cli.js\" -gr %f:%l",
"%PDF%"
],
//"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
// 这是一些独立的编译选项,可以作为工具被编译方案调用
"latex-workshop.latex.tools": [
{
// Windows 原生安装 TeX Live 2020 的编译选项
"name": "Windows XeLaTeX",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"%DOCFILE%"
]
},
{
// Windows Biber 编译
"name": "Windows Biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
},
{
// Windows bibtex 编译
"name": "Windows bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
// WSL XeLaTeX 编译一般的含有中文字符的文档
"name": "WSL XeLaTeX",
"command": "wsl",
"args": [
"/usr/local/texlive/2020/bin/x86_64-linux/xelatex",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
//"-output-directory=%OUTDIR%",
//"-aux-directory=%OUTDIR%",
"%DOCFILE%"
]
},
{
// WSL biber / bibtex 编译带有 citation 标记项目的文档
"name": "WSL Biber",
"command": "wsl",
"args": [
"/usr/local/texlive/2020/bin/x86_64-linux/biber",
"%DOCFILE%"
]
},
{
// macOS 或者 Linux 的简单编译
// 两种操作系统的操作方式相同
"name": "macOS / Linux XeLaTeX",
"commmand": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"%DOCFILE%"
]
},
{
// macOS 或者 Linux 的索引编译
// 两种操作系统的操作方式相同
"name": "macOS / Linux Biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
],
// 这是一些编译方案,会出现在 GUI 菜单里
"latex-workshop.latex.recipes": [
{
// 1.1 Windows 编译简单的小文档,这个选项不太常用,因为绝大多数文章都需要有参考文献索引
"name": "Windows XeLaTeX 简单编译",
"tools": [
"Windows XeLaTeX"
]
},
{
// 1.2 Windows 编译带有Biber索引的论文,需要进行四次编译;-> 符号只是一种标记而已,没有程序上的意义
"name": "Windows xe->bib->xe->xe 复杂编译",
"tools": [
"Windows XeLaTeX",
"Windows Biber",
"Windows XeLaTeX",
"Windows XeLaTeX"
]
},
{
// 1.3 Windows 编译带有bibtex索引的论文,需要进行四次编译;-> 符号只是一种标记而已,没有程序上的意义
"name": "Windows xe->bibtex->xe->xe",
"tools": [
"Windows XeLaTeX",
"Windows bibtex",
"Windows XeLaTeX",
"Windows XeLaTeX"
]
},
{
// 2.1 WSL 编译简单的小文档,这个选项不太常用,因为我绝大多数文章都需要有引用。
"name": "XeLaTeX 简单编译",
"tools": [
"WSL XeLaTeX"
]
},
{
// 2.2 带有 citation 索引的文档,需要进行四次编译;-> 符号只是一种标记而已,没有程序上的意义
"name": "xe->bib->xe->xe 复杂编译",
"tools": [
"WSL XeLaTeX",
"WSL Biber",
"WSL XeLaTeX",
"WSL XeLaTeX"
]
},
{
// 3.1 macOS 简单 小文档
"name": "macOS XeLaTeX 简单编译",
"tools": [
"macOS XeLaTeX"
]
},
{
// 3.2 macOS 四次编译
"name": "macOS xe->bib->xe->xe 复杂编译",
"tools": [
"macOS / Linux XeLaTeX",
"macOS / Linux Biber",
"macOS / Linux XeLaTeX",
"macOS / Linux XeLaTeX"
]
}
],
// 清空中间文件
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.bcf",
"*.run.xml"
]
// ======================== LaTeX 设置 END ========================
注意按自己的安装位置,修改配置代码中第10,15,24行的三处路径,保存配置文件,重启VS Code。
四、简单测试一下
新建.tex文件,用VS Code打开后,左侧会出现LaTeX Workshop的图标(不打开.tex文件,左侧不会出现LaTeX Workshop图标)
这里为新手提供一个简单的测试文件
\documentclass{article}
\usepackage{ctex}
\title{My first Document}
\author{xxx}
\date{\today}
\begin{document}
\maketitle
Hello World!
你好,世界!
let $f(x)$ be defined by the formula
$$f(x)=3x^2+x-1$$
\begin{equation}
A^2+B^2=C^2
\end{equation}
\ttfamily dfadfnaonfadsnf
\end{document}
点击LaTeX Workshop 图标,.tex文件若不带参考文献(如上测试文件),则在其面板里单击编译按钮即可编译。(带参考文献的文件的编译下面会讲,此处只是简单测试LaTeX环境是否安装成功)
若编译时出现报错 I can‘t find the format file `pdflatex.fmt‘!,需要在系统变量 “PATH” 下,添加“C:\Windows\System32”
编译完成后,点击View LaTex PDF旁的“>”,可看到下拉选项
下拉选项中,点击第一个可在VS Code标签页中查看PDF,点击第二个可在浏览器中查看PDF,点击第三个可在外部程序,即sumatrapdf中查看PDF。
五、进阶操作及可能遇到的问题
1.前向搜索和反向搜索
进行前向搜索和反向搜索前,要手动预先打开sumatrapdf应用。
前向搜索:将光标移动到文档内容(在PDF中能看到的内容,而不是格式代码),按快捷键:Ctrl + Alt+ j,可跳转到sumatrapdf应用里PDF文件中的对应位置。
反向搜索:在sumatrapdf应用里PDF文件中的内容处双击鼠标,可跳转到.tex文件中的对应位置。(反向搜索前,要手动预先打开sumatrapdf应用,不然无法反向搜索)
可能遇到的问题1:
无法前向搜索,点击View LaTex PDF下的第三个选项View in external viewer,也无法sumatrapdf中查看PDF?
解决方法:
配置文件中sumatrapdf中安装位置配置错误,修改配置文件
可能遇到的问题2:
已经手动预先打开sumatrapdf应用,可以前向搜索,双击鼠标无法进行反向搜索?
解决方法:
1.配置文件中VS Code中安装位置配置错误,修改配置文件
2.打开sumatrapdf应用,点击左上角图标旁的“三”,进入设置->选项
修改红框中的内容为"VS Code中安装位置/Code.exe" -g “%f:%l”
2.编译带参考文献的.tex文件
2.1.BibTex参考文献
提供简单的测试文件,.tex文件存放文件内容,.bib文件存放参考文献,两个文件放在同一个路径下
.tex文件
\documentclass{article}
\usepackage{ctex}
\usepackage{cite}
\bibliographystyle{plain}
\begin{document}
LaTeX(\LaTeX,音译“拉泰赫”)是一种基于TEX的排版系统 \cite{kopka1995guide},由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
Leslie Lamport开发的LaTeX是当今世界上最流行和使用最为广泛的TeX宏集。它构筑在Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用TeX的强大功能。
\bibliography{test1.bib}
\end{document}
.bib文件
@article{kopka1995guide,
title = {A Guide to $\{$$\backslash$LaTeX$\}$--Document},
author = {Kopka, H and Daly, PW},
year = {1995},
publisher = {Citeseer}
}
在.tex文件页面,LaTeX Workshop面板,点击Build LaTeX project旁的“>”,看到下拉编译选项,点击Windows xe->bibtex->xe->xe按钮,进行编译
编译完成后,可看到带参考文献的文章
2.2.BibLaTex参考文献
提供简单的测试文件,.tex文件存放文件内容,.bib文件存放参考文献,两个文件放在同一个路径下,相较于上面的BibTex格式的参考文献,.tex文件有改动,.bib文件无改动
.tex文件
\documentclass{article}
\usepackage{ctex}
\usepackage[style= numeric,backend=biber]{biblatex}
\addbibresource{test1.bib}
\begin{document}
LaTeX(\LaTeX,音译“拉泰赫”)是一种基于TEX的排版系统 \cite{kopka1995guide},由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。
Leslie Lamport开发的LaTeX是当今世界上最流行和使用最为广泛的TeX宏集。它构筑在Plain TeX的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用TeX的强大功能。
\printbibliography[title={参考文献}]
\end{document}
.bib文件
@article{kopka1995guide,
title = {A Guide to $\{$$\backslash$LaTeX$\}$--Document},
author = {Kopka, H and Daly, PW},
year = {1995},
publisher = {Citeseer}
}
在.tex文件页面,LaTeX Workshop面板,点击Build LaTeX project旁的“>”,看到下拉编译选项,点击Windows xe->bib->xe->xe 复杂编译按钮,进行编译(Windows xe->bib->xe->xe与Windows xe->bibtex->xe->xe是不同两种编译方式,所使用的文献引擎不同,具体可查看.json配置文件)
编译完成后,可看到带参考文献的文章
可能遇到的问题1:
编译报错
This is BibTeX, Version 0.99d (TeX Live 2020/W32TeX)
The top-level auxiliary file: xxx.aux
I found no \citation commands---while reading file xxx.aux
I found no \bibdata command---while reading file xxx.aux
I found no \bibstyle command---while reading file xxx.aux
解决方法:
1 .tex文件中编写错误,改正.tex文件
2.对于BibLaTex格式参考文献的.tex文件使用了Windows xe->bibtex->xe->xe进行错误编译,使用Windows xe->bib->xe->xe进行再次编译(新手常见错误)
可能遇到的问题2:
编译报错
INFO - This is Biber 2.14
INFO - Logfile is 'xxx.blg'
ERROR - Cannot find 'xxx.bcf'!
INFO - ERRORS: 1
解决方法:
1 .tex文件中编写错误,改正.tex文件
2.对于BibTex格式参考文献的.tex文件使用了Windows xe->bib->xe->xe进行错误编译,使用Windows xe->bibtex->xe->xe进行再次编译(新手常见错误)