Latex 编译和编写方案配置 — latexmk + latexworkshop

目录

    • 实现结果(编写和编译流程)
    • 提前告知
    • `latexmk` 原理介绍
    • `latexmk` RC文件
    • 结合 Vs code 和其中的 LatexWorkshop
    • LatexWorkshop 配置
    • SumatraPDF 预览器配置
    • 总结
    • 参考文档

实现结果(编写和编译流程)

  1. 建立 latex 文档项目
  2. 在 Vs code 中编写文档(利用LatexWorkshop,快捷编写文档)
  3. Vs code 中打开终端(快捷键是 Ctrl + `,当然可以另开终端)
  4. 终端命令行中,在项目路径下输入latexmk,然后回车
  5. 编译完成(使用 Vs code 调用预览器进行文档预览)

该方案优点: 文档编写非常便捷,文档编译操作一个命令完成,文档预览便捷

提前告知

本人运行此方案时操作系统和软件,其他系统和软件仅作参考

  • Windows10 v1909
  • TexLive 2019
  • Visual studio code (安装 Latex Workshop 插件)
  • SumatraPDF

latexmk 原理介绍

latexmk 可利用配置文件,自动地进行 pdflatexxelatex 等 latex 编译器相关的编译(用过 c/c++ 的同学应该知道 make 工具,latexmk 有点这样的味道)

总而言之,就是以前需要执行各种不同具体的编译命令,现在用了 latexmk后,就可以一个命令搞定一切

latexmk 可利用的 RC 文件 (也就是配置文件) 有四个:

  1. 系统 RC 文件 (Windows 路径:C:\latexmk\LatexMk
  2. 用户 RC 文件 ($HOME/.latexmkrc$Home 是用户目录)
  3. 当前项目工作路径的 RC 文件 (文件名是 latexmkrc.latexmkrc)
  4. 其他 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 -clatexmk -C,后者会清空 pdf 等文件

结合 Vs code 和其中的 LatexWorkshop

运用 latexmk,我们可以方便地完成编译工作。latex 文档编写也是个问题,需要一个好的编辑器,我认为好的 latex 文档编辑器应该有如下几个特征:

  1. 有漂亮美观的界面
  2. 有代码自动补全
  3. 自定义片段快捷输入
  4. 融合版本控制管理工具(如 git
  5. 拓展性(方便加入一些其他功能)

正好,Vs code 和其中的 LatexWorkshop 插件可以提供这些需求

Vs code 里面支持 git 管理,美化主题界面,自定义片段快捷输入等功能

LatexWorkshop 是一个插件,支持编译方案配置,代码自动补全,预定义 latex 代码片段,特殊符号快速输入,文档预览,正反向同步等功能,需要在 settings.json 文件中配置

在已经配置了 latexmkrc 的基础上,LatexWorkshop 的编译方案部分就可以不用配置了,只需要配置文档预览和正反向同步就可以

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 预览器配置

需要在 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 的正反向同步设置,就可以进行正反向同步操作,其默认快捷方式是

  • 正向同步(tex → pdf):Ctrl + Alt + j
  • 反向同步(pdf → tex):double click

总结

通过 latexmk, LatexWorksop 两个工具的结合,再加上一些简单的配置文件,就可以只在 Vs code 中实现 Latex 文档的快捷编写,便捷编译,快速预览等功能。

参考文档

  1. latexmk Manual page
  2. LatexWorkshop wiki

你可能感兴趣的:(Latex)