前言与方案选择
在科研生活中,  是必不可少的。但是在Overleaf中编写文稿总是很难受:折磨人的UI、较慢的渲染速度。因此不少人选择用其他的编辑器在本地配置编写,但这又涉及过多的配置。因此,当我遇到这个问题时,我选择了一个比较折中的方案:使用本地部署的Overleaf Docker并使用VSCode插件进行连接。相信我,这是一套非常便捷而好用的配置——反正对于macOS,你安装一个texlive也要差不多6个G,还要配置VSCode,还不如docker直接解决呢。
配置
Docker部分
我采用了overleaf-toolkit来进行docker配置,但是我进行了些许修改以适配macOS(GNU sed 和macOS的sed有些许出入)。并且由于overleaf-toolkit缺少了部分包,我还修改了脚本中sharetex使用的镜像以支持中文等。
步骤1:拉取overleaf-toolkit
我们使用以下代码拉取overleaf-toolkit:
$ git clone https://github.com/overleaf/toolkit.git步骤2:配置overleaf-toolkit
进入overleaf-toolkit目录并进行配置:
$ cd ./overleaf-toolkit$ bin/init这样就完成配置了,此时执行ls config我们应看到如下所示:
$ ls configoverleaf.rc     variables.env     version在overleaf.rc中,我们可以修改基本配置,我们需将其中的OVERLEAF_PORT改成自定义端口:
#### Overleaf RC ####7 collapsed lines
PROJECT_NAME=overleaf
# Sharelatex container# Uncomment the OVERLEAF_IMAGE_NAME variable to use a user-defined image.# OVERLEAF_IMAGE_NAME=OVERLEAF_DATA_PATH=data/overleafSERVER_PRO=falseOVERLEAF_LISTEN_IP=127.0.0.1OVERLEAF_PORT=80OVERLEAF_PORT=9000
# Sibling Containers理论上,做完这步之后执行bin/up -d就可以完成Docker部分配置了。
步骤3:使用自定义镜像
为了之后不需要对容器进行进一步修改,我们采用了wrm244/sharelatex这个镜像。为此,我们需将lib/docker-compose.base.yml改成如下所示
---services:  sharelatex:    restart: always    image: "wrm244/sharelatex:with-texlive-full"    container_name: sharelatex    volumes:      - "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"    ports:      - "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"    environment:      GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"      GIT_BRIDGE_HOST: "git-bridge"      GIT_BRIDGE_PORT: "8000"      REDIS_HOST: "${REDIS_HOST}"      REDIS_PORT: "${REDIS_PORT}"      V1_HISTORY_URL: "http://sharelatex:3100/api"    env_file:      - ../config/variables.env    stop_grace_period: 60s步骤4:(可选)修改脚本
这一步是因为toolkit对于macOS支持不够好导致的,在我写文章时,以及有人发了PR但是还未被合并。你可以先尝试运行bin/up -d,如果没出现错误说明此问题已被修正,可以不用进行这一步。
编辑lib/shared-functions.sh,找到最后两个函数,将其做如下修改:
function read_variable() {  local name=$1  grep -E "^$name=" "$TOOLKIT_ROOT/config/variables.env" \  | sed -r "s/^$name=([\"']?)(.+)\1\$/\2/"  | sed -r "s/^$name=([\"']?)([^\"']+)[\"']?$/\2/"}
function read_configuration() {local name=$1  | sed -r "s/^$name=([\"']?)(.+)\1\$/\2/"  | sed -r "s/^$name=([\"']?)([^\"']+)[\"']?$/\2/"}步骤5:(可选)创建data/下子文件夹
此问题同上,可以先尝试运行bin/up -d,如果没出现错误说明此问题已被修正,可以不用进行这一步。
$ cd data$ mkdir git-bridge mongo overleaf redis即可解决
这之后我们运行bin/up -d应该就能正确拉取镜像并启动容器。至此我们完成了Docker部分配置
VSCode部分
对于VSCode部分,我们直接使用Overleaf-Workshop这个插件即可。
在安装插件后,我们访问http://localhost:<your-port>/launch注册管理员账号,然后登录。将cookie复制到插件中即可。
效果展示
这是我们最终得到的效果:

至此我们完成了所有的配置。