··

macOS:在VSCode中配置使用Latex

前言与方案选择

在科研生活中, LaTeX\LaTeX 是必不可少的。但是在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:

Terminal window
$ git clone https://github.com/overleaf/toolkit.git

步骤2:配置overleaf-toolkit

进入overleaf-toolkit目录并进行配置:

Terminal window
$ cd ./overleaf-toolkit
$ bin/init

这样就完成配置了,此时执行ls config我们应看到如下所示:

Terminal window
$ ls config
overleaf.rc variables.env version

overleaf.rc中,我们可以修改基本配置,我们需将其中的OVERLEAF_PORT改成自定义端口:

config/overleaf.rc
#### 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/overleaf
SERVER_PRO=false
OVERLEAF_LISTEN_IP=127.0.0.1
OVERLEAF_PORT=80
OVERLEAF_PORT=9000
# Sibling Containers

理论上,做完这步之后执行bin/up -d就可以完成Docker部分配置了。

步骤3:使用自定义镜像

为了之后不需要对容器进行进一步修改,我们采用了wrm244/sharelatex这个镜像。为此,我们需将lib/docker-compose.base.yml改成如下所示

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,找到最后两个函数,将其做如下修改:

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,如果没出现错误说明此问题已被修正,可以不用进行这一步。

Terminal window
$ cd data
$ mkdir git-bridge mongo overleaf redis

即可解决

这之后我们运行bin/up -d应该就能正确拉取镜像并启动容器。至此我们完成了Docker部分配置

VSCode部分

对于VSCode部分,我们直接使用Overleaf-Workshop这个插件即可。

在安装插件后,我们访问http://localhost:<your-port>/launch注册管理员账号,然后登录。将cookie复制到插件中即可。

效果展示

这是我们最终得到的效果:

202507031934781

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