尧图精选

一次讲清 Overleaf PDF 编译:LaTeX 源码到浏览器 PDF 的 4 步旅程

🕒 发布时间:2026/9/9 22:04:59 📁 来源:尧图网络
一次讲清 Overleaf PDF 编译LaTeX 源码到浏览器 PDF 的 4 步旅程【免费下载链接】overleafA web-based collaborative LaTeX editor项目地址: https://gitcode.com/GitHub_Trending/ov/overleaf你刚点了编译按钮进度条转了一分钟右侧的 PDF 还是没出来。此刻系统到底在做什么这篇用 Overleaf 开源代码讲清 Overleaf PDF 编译的全流程不需要你懂 Docker 或 TeX Live。读完之后你可以直接说清谁负责编译、谁存文件、谁展示 PDF调编译行为时引用几个关键参数的默认值看懂 423、409、timedout 这类常见错误状态一次编译的完整链路从点击到 PDF一句话概括前端把源码交给 CLSICLSI 让 TeX Live 容器干活最后把 PDF 地址还给你文件本体则存在 filestore 里。CLSI 默认监听 3013 端口3048 和 3049 分别用于负载上报和服务控制。关键模块速览编译会经过哪几个目录模块路径负责什么你什么时候会碰到它services/clsi/app/js/接收编译请求、拉起 TeX Live 容器跑 latexmk、找输出文件每次点编译services/filestore/存放项目源码文件作为编译的输入来源上传文件、编辑器取源码时services/clsi/config/settings.defaults.cjsCLSI 的默认值端口、大小限制、沙箱开关你想调编译行为时services/clsi/README.md完整 API 文档请求格式、响应字段、curl 示例想直接调编译接口时追一次编译请求3 个停靠点停靠点一请求发出看这几个字段前端把一份 JSON 发到 CLSI 的 3013 端口。关键字段在 compile.options 里compiler 指定引擎默认 pdflatextimeout 是等多少秒后杀进程rootResourcePath 指向主文件resources 携带文件内容或下载地址。长这样compile: { options: { compiler: lualatex, timeout: 40 }, rootResourcePath: main.tex, resources: [{ path: main.tex, content: ... }] }停靠点二编译执行TeX Live 容器怎么被用文件先写入 compiles 目录下按项目隔离的文件夹然后由 LatexRunner.jsservices/clsi/app/js/LatexRunner.js把编译器翻译成 latexmk 参数——pdflatex 对应 -pdfxelatex 对应 -xelatex——再拉起一个 TeX Live 容器执行。注意这里默认超时是 60 秒大文档恰恰是卡在这一步被杀掉的。停靠点三结果落地状态怎么读CompileController.js 以 output.pdf 是否大于 0 字节判定成功响应里的 outputFiles 给出 pdf 和 log 两类地址。失败时状态区分得很细423 表示正在编译409 表示文件不同步503 表示服务不可用timedout 表示跑超了时间。看到状态码基本就能定位是哪类问题。能动的旋钮真正影响体验的 6 个参数除请求体参数外均可通过环境变量修改默认值都写在 settings.defaults.cjs 里参数管什么默认值COMPILE_SIZE_LIMIT单次编译上传文件的总体积上限7mbTEXLIVE_IMAGE沙箱容器用的 TeX Live 镜像quay.io/sharelatex/texlive-full:2017.1SANDBOXED_COMPILES是否在兄弟 Docker 容器里跑 LaTeX关闭需显式设 trueCLSI_CONVERSION_TIMEOUT_SECONDS格式转换任务的超时秒60PROCESS_LIFE_SPAN_LIMIT_MSCLSI 进程的生命周期上限毫秒2 天compile.options.timeout请求体杀编译进程前等待的秒数60翻车自查先查什么再查什么先看编译响应里的状态。423、409、503、timedout 各对应一种原因路径完全不同别混着排查。timedout 就查项目体积和引用量。默认超时 60000ms 写死在 LatexRunner.js 的兜底值里而 COMPILE_SIZE_LIMIT 默认 7mb大项目大概率撞上一个。409 conflict 直接重试一次。它表示本地资源状态与 filestore 不同步通常是瞬时问题。开了 SANDBOXED_COMPILES 再查镜像和目录挂载。TEXLIVE_IMAGE 与 SANDBOXED_COMPILES_HOST_DIR_* 缺一不可缺了服务启动时直接报错。收尾Overleaf PDF 编译本质是三方的分工前端收发、CLSI 执行、filestore 存储理解这个分工就能自查掉大多数问题。完整 API 与 curl 示例见 services/clsi/README.md。下期接着讲前端如何从 filestore 拉取源码文件、再拼进编译请求。觉得有用点个收藏关注。【免费下载链接】overleafA web-based collaborative LaTeX editor项目地址: https://gitcode.com/GitHub_Trending/ov/overleaf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →