2025-04-03 Latex学习1——本地配置Latex + VScode环境

发布于:2025-04-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

1 安装 Latex

本文配置环境:

  • Windows11
  1. 打开清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/,下载 texlive.iso 文件。
image-20250403014514681
  1. 使用资源管理器打开。
image-20250403014807757
  1. 右键“install-tl-windows.bat”文件,选择以管理员身份运行(进行安装),需等待一会儿。
image-20250403015801578
  1. 进行如下配置:

    • installation root:修改安装路径。
    • 安装 TeXworks 前端:取消勾选(使用 VScode 就不用这个)。

    设置完成后点击安装。

image-20250403020125123
  1. 点击键盘上的菜单按键,输入“pow”,打开 Windows PoeweShell。

    输入命令 “latex”,检查是否安装成功。

image-20250403020436968 image-20250403020534047

2 安装 VScode

  1. 打开 VScode 官网:https://code.visualstudio.com/,下载安装包。
image-20250403020642486
  1. 运行安装包,勾选“创建桌面快捷方式”和“添加到系统 PATH”。

    安装路径自行修改(严禁路径含中文或空格)。

image-20250403021117253 image-20250403021132885

3 配置环境

3.1 汉化 VScode

  1. 打开 VScode,点击左侧插件图标,搜索“chinese”,安装汉化插件。
image-20250403021348922
  1. 安装完成后,点击重启,启用汉化。
image-20250403021502864

3.2 安装 latex 插件

  1. 点击左侧插件图标,搜索“latex”,安装“LaTeX Workshop”插件。
image-20250403021609172
  1. 点击左下角设置按钮,选择设置,打开设置面板。
image-20250403021858105
  1. 点击右上角文件按钮,打开设置的 json 配置文件。
image-20250403021952462
  1. 将以下代码拷贝到 json 文件中。
{
    "workbench.colorTheme": "Default Light Modern",

    "editor.wordWrap": "on",

    //------------------------------LaTeX 配置----------------------------------

    // 右键菜单
    "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.outDir": "./build",

    // 编译工具和命令
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%OUTDIR%/%DOCFILE%",
                // "--output-directory=%OUTDIR%",
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "XeLaTeX",
            "tools": [
                "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"
            ]
        },
    ],
    
    // 文件清理。此属性必须是字符串数组
    "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",
        // "*.synctex.gz"
    ],

    // 设置为 onBuilt 在构建成功后清除辅助文件
    "latex-workshop.latex.autoClean.run": "onBuilt",

    // 使用第一个编译组合
    "latex-workshop.latex.recipe.default": "lastUsed",
    
    // 设置是否自动编译
    "latex-workshop.latex.autoBuild.run": "never",

    // 用于反向同步的内部查看器的键绑定。ctrl/cmd +点击(默认)或双击
    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
}

​ 到此配置环境完成。

3.3 配置解释

  1. 编译输出路径

    这里设置为当前目录下的 “./build” 文件夹。设置为空则是同目录。

    // 输出路径
    "latex-workshop.latex.outDir": "./build",
    
  2. 编译工具命令

    定义了单个工具,具体内容看注释。参考文档:Compile · James-Yu/LaTeX-Workshop Wiki

    // 编译工具和命令
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "--output-directory=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%OUTDIR%/%DOCFILE%",
                // "--output-directory=%OUTDIR%",
            ]
        }
    ],
    
  3. 编译工具链

    定义编译工具链,由一个或多个工具组成。在插件中显示如下

    image-20250403023341603
    "latex-workshop.latex.recipes": [
        {
            "name": "XeLaTeX",
            "tools": [
                "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"
            ]
        },
    ],
    

    对于最后两个编译链,解释如下(以 xeletax 为例):

    • xeletax * 1:生成辅助文件,为后续处理做准备。具体过程包括
      • 解析主 .tex 文件。
      • 生成 .aux 文件(包含引用和参考文献信息)。
      • 生成 .log 文件(日志信息)。
      • 生成 .synctex.gz 文件(用于反向搜索)。
      • 生成初步的 PDF(此时引用和参考文献标记为问号 [?])。
    • bibtex:处理参考文献。具体过程包括
      • 读取 .aux 文件中的引用信息。
      • 从 .bib 文献数据库中提取相关条目。
      • 生成 .bbl 文件(格式化后的参考文献列表)。
      • 生成 .blg 文件(bibtex 日志)。
    • xeletax * 2:将参考文献信息整合到文档中。具体过程包括
      • 读取 .bbl 文件内容。
      • 更新文档中的引用标记。
      • 重新生成 .aux 文件(现在包含正确的参考文献信息)。
      • 生成中间 PDF(此时参考文献已正确显示,但交叉引用可能仍不正确)。
    • xeletax * 3:解决所有交叉引用。具体过程包括
      • 读取更新后的 .aux 文件。
      • 解析所有交叉引用(章节、图表、公式编号等)。
      • 确保所有引用编号最终正确。
      • 生成最终 PDF(所有引用和参考文献都正确显示)。

    如果跳过某些步骤:

    • 只编译一次(xelatex):引用显示为 [?]。
    • 编译两次,无 bibtex(xelatex -> xelatex):参考文献缺失。
    • 编译两次,有 bibtex(xelatex -> bibtex -> xelatex):交叉引用可能不正确。
  4. 文件清理

    编译过程中,latex 会生成许多中间文件。

    • clean.fileTypes:定义编译完成后清理的文件后缀名。
    • autoClean.run:决定编译完成后是否清理文件。
    // 文件清理。此属性必须是字符串数组
    "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",
        // "*.synctex.gz"
    ],
    
    // 设置为 onBuilt 在构建成功后清除辅助文件
    "latex-workshop.latex.autoClean.run": "onBuilt",
    
  5. 自动编译

    可以选择在文件内容更改时或保存文件时自动编译。

    文件较大时,编译时间会很长,个人不习惯自动编译,因此选择 never。

    // 使用上一个编译组合
    "latex-workshop.latex.recipe.default": "lastUsed",
    
    // 设置是否自动编译
    "latex-workshop.latex.autoBuild.run": "never",
    
  6. 反向定位

    设置从 pdf 到 tex 文件的反向定位方式,个人习惯鼠标双击定位。

    // 用于反向同步的内部查看器的键绑定。ctrl/cmd +点击(默认)或双击
    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
    

​ 上述所有内容可直接在用户设置中搜索对应内容配置,并查看相关介绍。以反向定位为例:

image-20250403030453482

4 编译示例

  1. 创建文件夹 test,使用 VScode 打开该文件夹。
  2. 新建 “new.tex” 文件,输入如下内容。
image-20250403030740399
\documentclass{article} 

\begin{document}

hello world!

\end{document}
  1. 进入 TEX 插件页面,选择编译方式,点击编译。这里选择 LaTeXmk。选择 XeLaTeX 或 PDFLaTeX 也可。

    若左侧没有 TEX 插件栏,新建 tex 文件即可显示。

image-20250403030949064
  1. 回到文件页面,可看到当前目录下新建了 ./build 文件夹,编译的 pdf 放在该目录中。右上角点击双栏按钮可在右侧查看编译后的 pdf。

    说明:“new.synctex.gz” 存放反向编译内容,删除后不可以双击 pdf 定位到对应 tex 位置。

image-20250403031151463
  1. 编译一次后,可点击左上角编译按钮进行快速编译,选择的编译方式由如下设置决定:

    // 使用上一个编译组合
    "latex-workshop.latex.recipe.default": "lastUsed",
    
image-20250403031742616

5 加快你的编译

5.1 取消压缩

​ 最立竿见影的方法是取消 LaTeX 编译器对 PDF 的压缩。方法是在 tex 文档开头加入如下代码:

\documentclass{article} 

\usepackage{...}

\special{dvipdfmx:config z 0} % 取消 PDF 压缩,加快速度,最终版本生成时注释该行

\begin{document}

hello world!

\end{document}

​ 该方法可以将速度加快 3~5 倍(60s -> 15s),但代价是 PDF 大小会成倍增加(60MB -> 700MB)。

5.2 使用 PDF 代替图片

​ 对于图像文件,建议保存为 .pdf 。

​ 因为 .pdf 图像的编译速度比 .png 文件快,其编译过程不需要调用 libpng 库。

6 参考文章