自建 Overleaf:定制 ShareLaTeX 容器

ShareLaTeX 容器中默认只安装了少量的宏包。本篇记录了扩充该容器的过程,包括以下内容:

  1. 安装 TeXLive 的完整宏包
  2. 安装字体
  3. 设置 minted 宏包
  4. 将修改后的容器提交为镜像,修改 Overleaf 的设置

进入 Overleaf 的目录后,运行 ./bin/shell 可以进入 ShareLaTeX 容器,以下操作在 ShareLaTeX 容器中进行。

安装 TeXLive 的完整宏包

采用在线方式安装所有的宏包,在国内建议首先要换源。TeXLive 的安装路径在 /usr/local/texlive,现在最新的 TeXLive 版本是 2022。如果 ShareLaTeX 容器中的版本比较旧,就需要设置旧版本软件源。以 2021 为例:

1
2
3
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/2021/tlnet-final/
tlmgr update --self
tlmgr install scheme-full

安装需要的时间比较长。

安装字体

  • 思源字体:apt update && apt install noto-fonts-cjk noto-fonts-cjk-extra
  • Windows 字体:从安装了 Office 的 Win10 上把 C:\Windows\Fonts 下所有 ttf 与 ttc 格式的字体复制到容器的 /usr/share/fonts/truetype/WinFonts 下,运行 fc-cache -fv 更新 fontconfig 缓存。

minted 宏包的相关设置

minted 是一个代码高亮宏包,需要编译时加上 --shell-escape 参数,另外需要安装 pygmentize

  • /usr/local/texlive/2021/texmf.cnf 中添加一行 shell_escape = t 即可。
  • apt install python3-pip && pip3 install Pygments 安装 pygmentize 程序。

Overleaf 的相关设置

提交容器

docker commit sharelatex sharelatex:full,所花时间较长,运行 docker image ls 检查结果。

修改 Docker-Compose 设置

在 Overleaf 文件夹下创建 config/docker-compose.override.yml 文件,填入内容:

1
2
3
4
version: "2.2"
services:
sharelatex:
image: sharelatex:full

运行 ./bin/stop./bin/up ,重新启动服务。