Ctrl
+ `
,当然可以另开终端)latexmk
,然后回车该方案优点: 文档编写非常便捷,文档编译操作一个命令完成,文档预览便捷
本人运行此方案时操作系统和软件,其他系统和软件仅作参考
- Windows10 v1909
- TexLive 2019
- Visual studio code (安装 Latex Workshop 插件)
- SumatraPDF
latexmk
原理介绍latexmk
可利用配置文件,自动地进行 pdflatex
、xelatex
等 latex 编译器相关的编译(用过 c/c++
的同学应该知道 make
工具,latexmk
有点这样的味道)
总而言之,就是以前需要执行各种不同具体的编译命令,现在用了 latexmk
后,就可以一个命令搞定一切
latexmk
可利用的 RC 文件 (也就是配置文件) 有四个:
- 系统 RC 文件 (Windows 路径:
C:\latexmk\LatexMk
)- 用户 RC 文件 (
$HOME/.latexmkrc
,$Home
是用户目录)- 当前项目工作路径的 RC 文件 (文件名是
latexmkrc
或.latexmkrc
)- 其他 RC 文件 (需要在命令行中用
-r
选项指定)
RC 文件的书写风格有些类似于 Perl
,所以清楚 Perl
的同学应该会更容易看懂 RC 文件,不清楚也没关系,可以直接把下节我的配置文件拷贝过去用即可,里面的注释有一些解释
我自己用的有两个,系统的和工作路径的,系统 RC 文件放共同的一些配置,工作路径下 RC 文件放项目单独的配置
latexmk
RC文件系统 RC 文件:
## 系统latexmk配置文件
## 文件名:LatexMK,文件目录: C:\latexmk\
# 设置 pdflatex,xelatex,bibtex,biber 选项执行的命令
# %O, %S 是占位符;
# %O 代表选项,%S 代表对应命令的源文件
$pdflatex = "pdflatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S";
$xelatex = "xelatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S";
$bibtex = "bibtex %O %S";
$biber = "biber %O %S";
# 生成后缀fls的文件,该文件包含程序读写时的文件列表,1代表开启
$recorder = 1;
# 设置pdf预览器, 需要把下面的程序路径更换为自己电脑pdf阅读器的路径
$pdf_previewer = 'start "C:\Users\Username\AppData\Local\SumatraPDF\SumatraPDF.exe" %O %S';
# 执行 latexmk -c 或 latexmk -C 时会清空 latex 程序生成的文件(-C 更强,会清空pdf)
# 除此之外, 可以设置额外的文件拓展,以进行清空
$clean_ext = "";
工作路径 RC 文件:
## 工作路径 latexmk 配置文件
## 文件名:latexmkrc 或 .latexmkrc
## 文件目录:.
# 设置pdf生成模式,有 0 1 2 3 4 5
# 0 代表不生成 pdf
# 1 代表使用 $pdfltex 选项的命令,在系统 RC 文件已经设置
# 2 代表使用 $ps2pdf;3 代表使用 $dvipdf;4 代表使用 $lualatex;
# 5 代表使用 $xelatex,在系统 RC 文件已经设置
$pdf_mode = 1;
# 设置 bibtex 或 biber 的使用规则,有 0 1 1.5 2
# 0: 不使用 bibtex 或 biber; 清空的时候不会清空 .bbl 文件
# 1: 只有 bib 文件存在才使用 bibtex 或 biber;清空的时候不会清空 .bbl 文件
# 1.5: 只有 bib 文件存在才使用 bibtex 或 biber;当 bib 文件存在时会清空 bbl,否则不会清空
# 2: 有必要更新bbl文件时,运行 bibtex 或 biber,无需测试 bib 文件存在与否;清空删除 bbl
$bibtex_use = 2;
# 设置 latex 文件输出的目录
$out_dir = "Build";
# 设置预览模式,相当于 -pv 选项,在编译结束会开启预览
# $view 设置预览的文件格式
$preview_mode = 1;
$view = "pdf";
# 设置 latexmk 编译的文件,和不需要编译的文件,可以时多个
@default_files = ("main.tex");
@default_excluded_files = ();
RC 文件如上配置,每次对于一个项目,只需要修改工作路径的RC文件,然后在命令行中运行 latexmk
即可,如需要清空,则运行 latexmk -c
或 latexmk -C
,后者会清空 pdf
等文件
运用 latexmk
,我们可以方便地完成编译工作。latex 文档编写也是个问题,需要一个好的编辑器,我认为好的 latex 文档编辑器应该有如下几个特征:
git
)正好,Vs code 和其中的 LatexWorkshop 插件可以提供这些需求
Vs code 里面支持 git
管理,美化主题界面,自定义片段快捷输入等功能
LatexWorkshop 是一个插件,支持编译方案配置,代码自动补全,预定义 latex 代码片段,特殊符号快速输入,文档预览,正反向同步等功能,需要在 settings.json
文件中配置
在已经配置了 latexmkrc
的基础上,LatexWorkshop 的编译方案部分就可以不用配置了,只需要配置文档预览和正反向同步就可以
// 该文件是 vs code 里 settings.json 文件中的 latex-workshop 部分
// 需要修改其中的一些路径,包括:
// outDir, pdf viewer, vs code 的路径
// 这里关闭了 latex-workshop 保存自动编译,以及默认的编译方案配置
// 并且设置预览方式为外部阅览器,以及预览器的正反向同步
{
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.latex.autoBuild.run":"never",
"latex-workshop.latex.tools":[],
"latex-workshop.latex.recipes": [],
"latex-workshop.latex.outDir":"%DIR%\\Build\\",
"latex-workshop.view.pdf.external.viewer.command": "C:\\Users\\Username\\AppData\\Local\\SumatraPDF\\SumatraPDF.exe",
"latex-workshop.view.pdf.external.viewer.args": ["%PDF%"],
"latex-workshop.view.pdf.external.synctex.command": "C:\\Users\\Username\\AppData\\Local\\SumatraPDF\\SumatraPDF.exe",
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"code \"C:\\Program Files\\Microsoft VS Code\\resources\\app\\out\\cli.js\" -r -g \"%f:%l\"",
"%PDF%",
]
}
这样配置之后,就可以在 Vs code 中很方便地调用外部 pdf 预览器对 tex 文件进行 pdf 预览了
需要在 SumatraPDF 预览器中配置双击反向搜索命令
方式一:设置 → 选项,在 设置反向搜索命令行中添加:
"C:\Program Files\Microsoft VS Code\Code" "C:\Program Files\Microsoft VS Code\resources\app\out\cli.js" -r -g "%f:%l"
方式二:设置 → 高级选项,在打开的文档中添加如下行:
InverseSearchCmdLine = "C:\Program Files\Microsoft VS Code\Code" "C:\Program Files\Microsoft VS Code\resources\app\out\cli.js" -r -g "%f:%l"
此命令基本上是参考了 LatexWorkshop 中的设置。
经过 LatexWorkshop 和 SumatraPDF 的正反向同步设置,就可以进行正反向同步操作,其默认快捷方式是:
通过 latexmk, LatexWorksop 两个工具的结合,再加上一些简单的配置文件,就可以只在 Vs code 中实现 Latex 文档的快捷编写,便捷编译,快速预览等功能。