Skip to content
Go back

Zotero+VSCode+LaTeX 论文环境

环境配置

本文推荐在 Linux 中配置 LaTeX 环境,因为 LaTeX 在 Linux 下的编译速度,相比 Windows / WSL2 更快。

以某 100 页论文为例,Windows 下编译需要 26 秒左右,而 WSL1 或 Linux 实机下只需要 10 秒左右。注意如果使用 WSL 2 的话,文件推荐放在 WSL2 的 Linux 文件系统中,而不是 Windows 的文件系统中,因为 WSL 2 的文件性能比较差,比 WSL 1 差多了。

在 WSL 1 中,跨 Windows 和 Linux 操作系统的文件性能比 WSL 2 中更快,因此如果要使用 Windows 应用程序来访问 Linux 文件,则目前通过 WSL 1 可实现更快的性能。Ref: 比较 WSL 版本

推荐安装:latexmk, pdflatex, xelatex, bibtex, biber, xdvipdfmx

可选安装: SumatraPDF, pandoc

Zotero

插件

  • Better BibTex for Zotero 带来更多 bibtex 和 biblatex 导出选项,最有用的还是自动更新 bib 文件的功能。
  • DOI Manager :doi 管理器,可以批量获取 doi。
  • Jasminum 提供了对中文文献更佳的支持,可以开启自动拉取知网元数据。
  • Sci-Hub Plugin for Zotero 不多解释
  • ZotFile Zotero 在硬盘中存储文件时,文件名均为编码后的字符串,使用 ZotFile 可以将文件名改为作者+年份+标题的形式,方便查找。
  • Zotero PDF Translate 可以配置各家翻译 api,如 deepl, google,百度等等。
  • 最后不要忘了 zotero 的浏览器插件,网页上点一下就可以直接导入元数据到 zotero 中,同时配合上文的 scihub 插件,下论文贼方便。

知网文献的下载与导入

如果想自行下载知网 pdf 的话,推荐使用油猴脚本 中国知网 CNKI 硕博论文 PDF 下载 ,直接下载 PDF,避开 CAJ。

在 Zetoro 的茉莉花 Jasminum 插件中,设置好 PDFtk 路径,就可以在导入知网 pdf 的时候,自动从知网获取目录信息,并且写入到 pdf 中。

Better BibTex 的中文分词

在导出中文文献的 citation key 的时候,Better BibTex 分词的结果不是很理想,推荐使用 jieba 分词,可以在 Better BibTex 的设置- Citation key formula 中配置记得打开 Enable 'jieba/pinyin' filters in citekeey patterns 选项。

如下代表了作者的姓+标题第一个词+年份的形式。更多规则请参考 Zotero better bibtex citing

auth.fold.capitalize + "_" + Title.jieba.skipwords.capitalize.select ( 1,1 ) .nopunct + "_" + year

同步方案

尽管 Zotero 自带同步功能,然而由于 Zotero 的同步服务器在国外,同步速度很慢,并且 免费版 只有 300MB 空间,顶多就同步元数据。

因此我使用 Zotfile + 坚果云的方式同步。方案如下:

  1. Zotero 的同步分为两种:一是元数据,即文献的作者,摘要,日期,期刊等等信息,即下图中的数据同步;二是论文文档本身,即下图中的文件同步。这里我们要关闭 Zotero 自带的文件同步,如下:
Zotero 同步设置-1
Zotero 同步设置-1

前面提到 Zotero 的同步分为两种:一是数据同步;二是文件同步。其中数据包括了文件的路径。假设我们已经关闭的文件同步,而现在有一论文路径是 D: \Documents\Zotero\Attachments\tom_and_jerry_sig2023.pdf ,那么这个文件不会被同步,但是这个文件的路径信息会被同步,因此在其他电脑上,这个文件的路径信息就会变成 D: \Documents\Zotero\Attachments\tom_and_jerry_sig2023.pdf ,而这个文件在其他电脑上不存在,因此会出现文件丢失的情况。因此我们需要设置相对路径存储。

  1. 配置/查看 Zotero 的数据目录,记得改成相对路径存储,根目录推荐设为 Zotero 数据目录的父目录 ( 注意修改数据目录后需可能需要手动移动文件到新目录 ) ,如下图所示:
Zotero 数据目录
Zotero 数据目录

这个时候,我们的论文路径就变成了相对于数据目录的相对路径 ./Zotero/Attachments/tom_and_jerry_sig2023.pdf ,在其他电脑上,只要存在 ./Zotero/Attachments/tom_and_jerry_sig2023.pdf ,就可以正常打开。

  1. 如上图,我的数据目录是 D: \Documents\Zotero。接着打开 Zotero 菜单栏-Tools-ZotFile Preferences,在 ZotFile 选项卡中,将 Source Folder for Attaching New Files 设置为 {数据目录}/storage,将 Location of Files 设置为 {数据目录}/Attachments,如下:
ZotFile Preferences
ZotFile Preferences

Source Folder for Attaching New Files 表示 ZotFile 会从这个目录下搜索原始的 pdf 文件,并且按照 Renaming Rules 自动重命名,将文件保存于 Location of Files 中,最后自动设定新的文件路径替换原有旧路径到 Zotero。

经过以上三步,现在 Zotero 的文件存储路径已经变成了相对路径,而且 ZotFile 会自动将原始的 pdf 文件重命名并移动到 Location of Files 中。这个时候,只要另外一台电脑的 Zotero 开启了同步数据,并且将 Attachments 文件夹拷贝到新电脑上,就可以正常打开论文了。

这里我使用坚果云来同步 Attachments 文件夹 ( 自然,百度云什么也可以 ) 。这样,只要坚果云同步成功,就可以在任何一台电脑上正常打开论文了。

VSCode

VSCode 插件

  • [LaTeX Workshop]
  • [LaTeX Utilities]
  • 另可参考之前发的[[vscode 打造笔记系统]]中的插件推荐。

推荐使用 latexmk 编译,以下是我的 .latexmkrc 配置:

# todo ~

与 VSCode 的双向跳转可参考 using-synctex-with-an-external-viewer

snippets

可以为常用的命令配置 snippets ,这样输入 prefix 中的内容,就可以弹出预置的补全内容。将以下内容放在 C: \Users\{User_Name}\AppData\Roaming\Code\User\snippets\latex.json 下:

{
  "boldsymbol": {
    "prefix": "boldsymbol",
    "description": "insert a matrix or vector",
    "body": ["\\boldsymbol{${1: name}}_\\mathrm{${2: n}}"]
  },
  "includegraphics": {
    "prefix": "includegraphics",
    "description": "include graphics",
    "body": [
      "\\begin{figure}[htbp]",
 " \\includegraphics [width=1.0\\textwidth]{${1: path}}",
 " \\bicaption{${2: title_cn}}{${3: title_en}}",
 " \\label{fig:${4: label}}",
      "\\end{figure}",
 " "
 ]
 }
}

公式

latexlive.com

其他工具

tikz, drawio, plantumlexcalidraw

Latex 中文教程:https://github.com/CTeX-org/lshort-zh-cn


Share this post on: