目录

本文前言

遇到的问题及解决

问题1:LaTeX Workshop 找不到编译器

问题2:编译后需要手动打开 PDF 预览

问题3:Overleaf Git 同步配置中Overleaf 拒绝密码登录(403)

问题4:Force push 被拒绝

Overleaf-VsCode完整工作流

1 . 最终的远程配置

2. 日常操作

完整流程图


本文前言

Overleaf是论文写作神器,之前为了解决普通用户编译时长限制,花了亿些米在万能鱼上升级了一下装备,写作环境也是立马好起来了(见下图),经实测也是很香了,永久使用说是。然而,一切都朝着不可知的方向发展(内心真实想法:不用我动手动脑,或者给一个任务,坐等智能体去干,而overleaf只是个编译器而已,远远做不到)。

即最近精神状态Vlog:AI for Coding工具的兴起(厌恶了CC&ChatGPT的网页/cli版本,因为需要复制+粘贴 \狗头),特别是vscode中插件的加持,什么copilot/cc/codex/在最近的编程工作中用的飞起。使得重新思考了新的工作流(AI for Writing),overleaf中的项目能不能拉取到本地VsCode IDE(Overleaf Workshop通过Cookies接入Overleaf,测试发现只能编辑修改(能在Overleaf中同步修改内容),但不能编译~),使用智能工具完成初稿之后,通过Overleaf中的项目同步-Git完成从VsCode到Overleaf推送更新迭代,同时使用github做版本备份。

完整工作流原理图

本地 VS Code 编辑 .tex

        │

       ▼

  Ctrl+S 保存 → 自动编译 → PDF 标签页自动刷新预览

        │

       ▼

  git add → git commit

        │

        ├──→ git push overleaf master → Overleaf 在线同步

        │

        └──→ git push github master  → GitHub 私有仓库备份(可选)

  Overleaf 在线编辑

        │

       ▼

  git pull overleaf master → 本地自动更新

遇到的问题及解决
问题1:LaTeX Workshop 找不到编译器

1) Tex Live 2026 下载与安装 (https://tug.org/texlive/windows.html),安装并不是什么困难事情(双击install-tl-windows.exe,中间可以根据需求修改安装目录,可参考https://shuqian8421.github.io/posts/50991/index.html

2) 手动添加环境变量:系统环境变量-> Path-> 新建,复制粘贴安装目录(参考下图)

3)帮助LaTeX Workshop 找到编译器,在 VS Code 全局 settings.json 中配置 xelatex/bibtex 的完整路径,步骤:Ctrl+Shift+P,搜索输入 Preferences: Open User Settings (JSON),复制以下内容,粘贴至json文件中

{
    "claudeCode.preferredLocation": "panel",
    "chat.viewSessions.orientation": "stacked",
    "[markdown]": {
        "diffEditor.ignoreTrimWhitespace": false
    },
    "workbench.colorTheme": "Visual Studio Dark - C++",
    "claudeCode.environmentVariables": [


    ],
    "editor.accessibilitySupport": "on",
    "workbench.settings.applyToAllProfiles": [
        

    ],
    "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.tools": [
        {
            "name": "xelatex",
            "command": "D:/Tex/texlive/2026/bin/windows/xelatex.exe",
            "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%"
            ]
        }
    ],
    "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"
    ],
    "latex-workshop.latex.autoClean.run": "onFailed",
    "latex-workshop.latex.recipe.default": "lastUsed",
    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
}

代码包括 VS Code 通用设置

| 配置项 | 当前值 | 功能 |

| `claudeCode.preferredLocation` | `"panel"` | Claude Code 显示在底部面板而非侧边栏 |

| `chat.viewSessions.orientation` | `"stacked"` | 聊天会话以堆叠方式排列 |

| `[markdown].diffEditor.ignoreTrimWhitespace` | `false` | Markdown 文件对比时不忽略首尾空格差异 |

| `workbench.colorTheme` | `"Visual Studio Dark - C++"` | 深色主题 |

| `editor.accessibilitySupport` | `"on"` | 开启无障碍辅助(可能导致某些性能下降,如不需要可关闭) |


LaTeX Workshop 设置

| 配置项 | 当前值 | 功能 |

| `autoBuild.run` | `"onSave"` | 保存 .tex 文件时自动编译 |

| `view.pdf.viewer` | `"tab"` | PDF 在 VS Code 标签页内预览,编译后自动刷新 |

| `showContextMenu` | `true` | 右键菜单显示 LaTeX 相关操作 |

| `intellisense.package.enabled` | `true` | 自动补全 LaTeX 宏包命令 |

| `message.error.show` | `false` | 不弹窗显示编译错误(在日志中仍可查看) |

| `message.warning.show` | `false` | 不弹窗显示编译警告 |

| `latex.recipe.default` | `"lastUsed"` | 默认使用上次选择的编译方案 |

| `view.pdf.internal.synctex.keybinding` | `"double-click"` | 双击 PDF 可跳转到对应 .tex 源码位置 |

| `latex.autoClean.run` | `"onFailed"` | 编译失败时自动清理临时文件 |


LaTeX 编译工具(tools)

| 工具名 | 命令 | 说明 |

| `xelatex` | `D:/Tex/.../xelatex.exe` | XeLaTeX 编译器(支持中文,完整路径) |

| `pdflatex` | `pdflatex` | PDFLaTeX(未配完整路径,**会报错**) |

| `latexmk` | `latexmk` | 自动化编译工具(未配完整路径,**会报错**) |

| `bibtex` | `D:/Tex/.../bibtex.exe` | BibTeX 参考文献处理(已配完整路径) |


LaTeX 编译方案(recipes)

| 方案名 | 步骤 | 说明 |

| `XeLaTeX` | xelatex × 1 | 快速编译,不处理参考文献 |

| `PDFLaTeX` | pdflatex × 1 | 会报错(pdflatex 不在 PATH) |

| `BibTeX` | bibtex × 1 | 单独处理参考文献 |

| `LaTeXmk` | latexmk × 1 | 会报错(latexmk 不在 PATH) |

| `xelatex -> bibtex -> xelatex*2` | xelatex → bibtex → xelatex × 2 | **完整编译**,含参考文献处理 |

| `pdflatex -> bibtex -> pdflatex*2` | pdflatex → bibtex → pdflatex × 2 | 会报错 |


清理文件类型(clean.fileTypes)

编译失败时自动清理的临时文件:`.aux`, `.bbl`, `.blg`, `.idx`, `.ind`, `.lof`, `.lot`, `.out`, `.toc`, `.acn`, `.acr`, `.alg`, `.glg`, `.glo`, `.gls`, `.ist`, `.fls`, `.log`, `.fdb_latexmk`

备注

- `pdflatex` 和 `latexmk` 未配置完整路径,选到这些方案会报错,可补上路径或删除不用的方案

- TeX Live 安装路径:`D:/Tex/texlive/2026/bin/windows/`

问题2:编译后需要手动打开 PDF 预览

每次 `Ctrl+Alt+B` 编译后,还需要再按 `Ctrl+Alt+V` 才能查看 PDF。解决方案:

在全局设置中添加:

{

    "latex-workshop.latex.autoBuild.run": "onSave",

    "latex-workshop.view.pdf.viewer": "tab",

    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"

}

问题3:Overleaf Git 同步配置中Overleaf 拒绝密码登录(403)

Overleaf Git 同步配置

步骤1:初始化本地 Git 仓库

cd "c:/Users/89265/Desktop/manuscript"
git init

步骤2:添加 Overleaf 远程仓库

git remote add overleaf https://git.overleaf.com/<project-id>


#其中 `<project-id>` 从 Overleaf 项目 URL 中获取:https://www.overleaf.com/project/<project-id>` → 取最后一段。

提示错误:

remote: Overleaf now only supports Git authentication tokens to access git.

fatal: The requested URL returned error: 403

原因分析:Overleaf 已于近期停止支持用户名+密码的 Git 认证方式,必须使用 Git Authentication Token。解决方案:

1. 登录 Overleaf → 左上角头像 → **Account Settings**

2. 找到 **Git Integration** 部分

3. 点击 **Generate Token**

4. 复制生成的令牌(格式如 `olp_xxxxxx...`)

按照直觉用 Overleaf 登录邮箱作为 Git 用户名:

# 尝试1:用 foxmail 邮箱 — 失败

git clone https://xxx%40foxmail.com:olp_xxx@git.overleaf.com/<id>

# 结果:403

# 尝试2:用 Yale 邮箱 — 失败

git clone https://xxx%40aya.yale.edu:olp_xxx@git.overleaf.com/<id>

# 结果:403

令牌认证仍然 403,根本原因:Overleaf Git 认证的用户名是固定的 `git`,不是邮箱地址! 这一点在 Overleaf 官方文档中没有明显说明,极易踩坑。解决方法:远程 URL 改为 https://git:<token>@git.overleaf.com/<project-id>

# 修复命令bash
git remote set-url overleaf "https://git:<your-token>@git.overleaf.com/<project-id>"

备注:<project-id>:即为overleaf中项目网址后的数字

问题4:Force push 被拒绝

本地仓库和 Overleaf 历史不同,git push --force 被禁止。

remote: error: forced push prohibited

remote: hint: You can't git push --force to a Overleaf project.

解决方法:先 git pull overleaf master --allow-unrelated-histories 合并,再正常 push

# 先合并 Overleaf 的历史(允许不相关历史合并)
git pull overleaf master --allow-unrelated-histories --no-edit

# 再正常推送
git push overleaf master
Overleaf-VsCode完整工作流
1 . 最终的远程配置
# Overleaf 远程
git remote add overleaf "https://git:<your-token>@git.overleaf.com/<project-id>"


# GitHub 远程(可选,用于备份)
git remote add github "https://github.com/<username>/<repo>.git"
2. 日常操作
#本地修改后同步到 Overleaf
git add Manuscript_IEEE\xx_Journal.tex  # 添加修改的文件
git commit -m "更新说明"                 # 提交
git push overleaf master                # 推送到 Overleaf


#从 Overleaf 拉取他人修改
git pull overleaf master                # 拉取 Overleaf 最新内容


# 同时推送到 GitHub(可选)
git push github master                  # 推送到 GitHub
本文小结

工作中如果能化繁为简,也着实能 “爽到自己”!感谢您的阅读,关注,点赞。欢迎在评论区交流!

更多推荐