Skip to main content

Pandoc 导入 / 导出

Overleaf 可以使用 Pandoc 在 LaTeX 与其他文档格式之间进行转换。转换在由 clsi 服务管理的沙盒化 Docker 容器中运行,因此该功能默认关闭,需要通过几个环境变量来开启。

功能说明


环境变量

有两个变量起作用,另有一个看起来相似但不起作用的变量。 1. ENABLE_PANDOC_CONVERSIONS — 总开关
  • 类型:布尔值(true 表示启用;其他任何值均表示禁用)。
  • 必须同时在 web 和 clsi 服务上设置。 它们是独立的进程,拥有各自独立的配置:
    • web 将其读入 enablePandocConversions(services/web/config/settings.defaults.js)。它控制导入路由、导出路由,以及告知前端是否显示导入/导出界面的 ol-ExposedSettings.enablePandocConversions 标志。
    • clsi 将其读入 enablePandocConversions(services/clsi/config/settings.defaults.cjs)。它控制运行 Pandoc 的端点。
  • 如果在 web 上启用但未在 clsi 上启用(或反之),界面会显示,但转换会失败——请保持两者一致。
2. PANDOC_IMAGE — clsi 用于执行转换的容器镜像

前提条件

由于转换以 clsi 启动的 Docker 容器形式运行:
  1. clsi 必须以沙盒模式运行并能访问 Docker。 在开发环境中,clsi 已设置 SANDBOXED_COMPILES=true 并挂载了宿主机的 Docker 套接字(/var/run/docker.sock)。
  2. 在首次转换之前,PANDOC_IMAGE 必须已存在于该 Docker 主机上(拉取或在本地构建)。

快速设置

开发环境(develop/dev.env)已默认包含:
由于官方镜像是私有的,在使用该功能之前,请先构建一次随附的镜像:
然后(重新)启动整个环境,使 clsi 和 web 读取这些变量。

构建 Pandoc 镜像

由于 clsi 以通用方式调用 Pandoc(不使用自定义模板/过滤器),因此标准的 Pandoc 镜像即可使用。它只需要满足三个运行时要素,这些都已在 develop/pandoc/Dockerfile 中处理:
构建并打上标签,使标签与 PANDOC_IMAGE 一致:
在生产环境中,请将 pandoc/core 固定到特定版本而非 latest,以实现可复现的构建,并将 PANDOC_IMAGE 设置为你的镜像仓库路径。

故障排除

最后修改于 2026年10月5日