前言与方案选择
在科研生活中, 是必不可少的。但是在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复制到插件中即可。
效果展示
这是我们最终得到的效果:
至此我们完成了所有的配置。