vscode+LaTeX 论文排版
一、什么是 LaTeX
LaTeX 是一种“非所见即所得”的排版系统,即用户需要输入特定的代码,保存在 后缀为.tex 的文件中,通过编译得到所需的 pdf 文件如何理解“非所见即所得”呢?在 这里举个“所见即所得”的例子:Word。Word 的界面就是一张 A4 纸,输入的时候是什么样子,最后呈现出来就是什么样子。这给了我们极高的自由度,也非常容易上手, 但是有如下问题:
-
对于对细节不敏感的用户,Word 的排版常常会在细节存在问题,比如两段话之间行间距不同、字体不同、标题样式不同等; -
对于撰写论文的用户,Word 的标题、章节、图表、参考文献等无法自动标号,也很难在正文中引用; -
对于有公式输入需求的用户,Word 自带的公式不稳定,而公式插件效果常常不好。
相比之下,使用 LaTeX 进行排版,就像是在铺好的轨道上驾驶火车一样。使用 LaTeX 没有办法像 Word 一样非常自由,但是可以保证规范性,这使得 LaTeX 非常适合用于论文的排版。
二、安装 LaTeX
LaTeX 国内镜像源:
-
清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/ -
中国科学技术大学镜像站https://mirrors.ustc.edu.cn/CTAN/systems/texlive/Images/ -
香港大学镜像站https://mirror-hk.koddos.net/CTAN/systems/texlive/Images/
下载后得到的 texlive.iso 大约 4.3G 大小,使用解压软件将其解压在磁盘上,打开 解压后的文件,将文件中的 install-tl-windows.bat 使用管理员身份运行。
在这个界面可以修改安装路径;因为后续配置 vs code 编写环境,所以可以取消勾 选安装 TeXworks 前端的选项。
然后点击 Advanced,弹出如下界面:
查看标红框的选项是否与设置的有误,然后点击 Customize 进入自定义安装界面, 可以取消勾选用不到的语言包以达到减少安装大小。自定义界面如下:
Languages 只需要勾选这三个就差不多了,然后点击确定安装,进入漫长的安装等 待环节。安装完成之后建议重启一下电脑,因为会需要注册环境变量。
三、Sumatra PDF 安装
Sumatra PDF,又叫 Sumatra,是一款专为 Microsoft Windows 开发的开放源代 码 PDF 阅读器。该程序也可以打开开放 XML 纸张规范、DjVu、EPUB、XPS、CHM、 CB7、CBR、CBT、CBZ、MOBI 和 PRC 文件。这里安装的 Sumatra PDF 是作为 vs code 编译后 LaTeX 之后形成的 pdf 文件的外部预览器,以获取更好的预览体验。
Sumatra PDF 官网下载地址
https://www.sumatrapdfreader.org/download-free-pdf-viewer
四、vscode 安装
Visual Studio Code(简称 VS Code)是一款由微软开发且跨平台的免费源代码编 辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense(英语:IntelliSense))、 代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。
Visual Studio Code 被认为是最受开发者欢迎的开发环境之一。
vscode官网地址
https://code.visualstudio.com/download
1.插件安装
vs code 的强大离不开优质的插件生态环境,其插件商店具有各种各样的插件,帮 助 vs code 可以编写几乎任何语言。
要在 vs code 中编写 LaTeX 首先需要安装插件:LaTeX Workshop 以获取 vs code 对 .tex 文件的支持。在插件商店下载安装插件:
在 vs code 中新建一个 .tex 文件,输入以下内容,可以看到代码已经被高亮显示了。
2.插件配置
使用 F1 或 ctrl + shift + p 的快捷键,在弹出的输入框中输入 settings,打开用户 设置的 json 文件:
在文件末尾添加以下内容:
"ltex.enabled": true, // 启用插件
"ltex.language": "en-US",// 设置语言
// 设置是否自动编译 never
"latex-workshop.latex.autoBuild.run": "never",
//右键菜单
"latex-workshop.showContextMenu": true,
//从使用的包中自动补全命令和环境
"latex-workshop.intellisense.package.enabled": true,
//编译出错时设置是否弹出气泡设置
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
// 用于配置编译链
"latex-workshop.latex.recipes": [
{
"name": "xelatex",
"tools": [
"xelatex"
]
},
{
"name": "xelatex*2",
"tools": [
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex",
"tools": [
"pdflatex"
]
},
{
"name": "bibTeX",
"tools": [
"bibtex"
]
},
{
"name": "latexmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "pdflatex -> bibtex",
"tools": [
"pdflatex",
"bibtex"
]
},
{
"name": "xelatex -> biber -> xelatex*2",
"tools": [
"xelatex",
"biber",
"xelatex",
"xelatex"
]
}
],
// 编译工具和命令
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
],
//文件清理。此属性必须是字符串数组
"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"
],
//设置为onFaild 在构建失败后清除辅助文件
"latex-workshop.latex.autoClean.run": "onFailed",
// 使用上次的recipe编译组合
"latex-workshop.latex.recipe.default": "lastUsed",
// 用于反向同步的内部查看器的键绑定。ctrl/cmd +点击(默认)或双击
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
//使用 SumatraPDF 预览编译好的PDF文件
// 设置VScode内部查看生成的pdf文件
"latex-workshop.view.pdf.viewer": "external",
// 使用外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.ref.viewer": "external",
// 使用外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.external.viewer.command": "H:\SumatraPDF\SumatraPDF.exe",
// 使用外部查看器时,latex−workshop.view.pdf.external.view.command的参数。
//%PDF%是用于生成PDF文件的绝对路径的占位符。
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
// 将synctex转发到外部查看器时要执行的命令。
// 主要要修改为自己的 SumatraPDF.exe 所在路径
"latex-workshop.view.pdf.external.synctex.command": "H:\SumatraPDF\SumatraPDF.exe",
// %LINE%是行号,%PDF%是生成PDF文件的绝对路径的占位符,
// %TEX%是触发syncTeX的扩展名为.tex的LaTeX文件路径。
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
""D:\vscode\Microsoft VS Code\Code.exe" "D:\vscode\Microsoft VS Code\resources\app\out\cli.js" --ms-enable-electron-run-as-node -r -g "%f:%l"",
"%PDF%"
]
具体配置也可以参考:使用VSCode编写LaTeX
https://zhuanlan.zhihu.com/p/38178015
需要注意的是 “latex-workshop.view.pdf.external.synctex.args”
命令中 需要 添加 –ms-enable-electron-run-as-node
才能完成和 SumatraPDF 的反向搜索。
接着就可以使用 vs code 编写 LaTeX 代码,然后用 SumatraPDF 进行预览了。
五、总结
不得不说 LaTeX 的门槛还是挺高的,有各种宏包、各种配置让人摸不着头脑,还有 使用了一些宏包还需要多次编译,有个编译链的概念在,也是大大加大了上手的难度。比之 markdown,LaTeX 无疑复杂了许多,也许选择了一个合适的模板,在模板上进行 论文写作会好很多吧(在接触了 word 写大文档之后,更倾向于 LaTeX 了,稍微碰一下格式就乱了,太烦了)。。。
文章参考与分享:
-
使用VSCode编写LaTeX -
Overleaf, 在线LaTeX编辑器,一个在线的 LaTex 编辑的网站,上面也存储很多模板。 -
华南师范大学硕士/博士学位论文格式要求的LaTeX模板https://github.com/scnu/scnuthesis -
如何从零开始,入门 LaTeX
评论前必须登录!
立即登录 注册