为啥要这么折腾
- 回来内地,每次用overleaf都卡出翔;
- overleaf在线版本不太支持xeLatex编译器,编译速度太慢;
- 不付费情况下,在线版本的overleaf协作有限,部署搭建自己的overleaf在实验室同一个网络环境下都可以协作;
环境准备
在VMware虚拟机中安装Ubuntu 20.04 LTS版本,安装过程略。
在Ubuntu虚拟机中已经安装好了docker和docker-compose,ip地址为192.168.116.129。
安装overleaf
首先将overleaf项目从github拉至本地
git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
进入该项目:
cd ./overleaf-toolkit
以下命令都在该目录下进行;
初始配置
项目映射地址和端口设置
vim ./config/overleaf.rc
更改内容如下:
# SHARELATEX_LISTEN_IP=127.0.0.1 这样只能在虚拟机中访问overleaf服务
SHARELATEX_LISTEN_IP=0.0.0.0 # 这样可以在虚拟机外部访问overleaf服务
SHARELATEX_PORT=80 # 想映射的端口,默认的80端口常常被占用
中文支持
vim ./config/variables.env
添加如下内容进行中文支持:
SHARELATEX_SITE_LANGUAGE=zh-CN
编译器改成xeLatex
touch ./config/docker-compose.override.yml
vim ./config/docker-compose.override.yml
内容如下:
services:
sharelatex:
environment:
- PATH=/usr/local/texlive/2023/bin/x86_64-linux:$PATH
path需要根据自己启动的容器里面安装的texlive的地址进行修改!
启动项目
bin/up
此时正在拉取镜像,可以等出现大量的log时使用 ctrl+c 停止,然后执行
bin/start
此时,使用 docker ps
中,可以看到启动了三个容器:
hugo@hugo-virtual-machine:~/overleaf/overleaf-toolkit$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a0e1151eb89 sharelatex/sharelatex:4.1.1 "/sbin/my_init" 46 minutes ago Up 22 minutes 0.0.0.0:80->80/tcp sharelatex
48138bb688e5 redis:6.2 "docker-entrypoint.s…" 2 hours ago Up 26 minutes 6379/tcp redis
72bc2fc60316 mongo:4.4 "docker-entrypoint.s…" 2 hours ago Up 26 minutes (healthy) 27017/tcp mongo
此时就可以在本地使用overleaf了:
在本地打开 http://localhost:80/launchpad
或者在windows下打开 http://192.168.116.129:80/launchpad
创建管理员账号。应该能看到管理员注册界面,至此overleaf的安装结束。
下载完整texlive包
以上安装的overleaf配套的LaTeX不是完整版,所以需要继续下载。
首先进入容器的bash:
docker exec -it sharelatex bash
# 或者执行./bin/shell也可以进入sharelatex
然后在容器中执行:
cd /usr/local/texlive
# 下载并运行升级脚本
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
sh update-tlmgr-latest.sh -- --upgrade
# 更换texlive的下载源
tlmgr option repository https://mirrors.sustech.edu.cn/CTAN/systems/texlive/tlnet/
# 升级tlmgr
tlmgr update --self --all
# 安装完整版texlive(时间比较长,不要让shell断开)
tlmgr install scheme-full
# 退出sharelatex的命令行界面,并重启sharelatex容器
exit
重启docker服务:
docker restart sharelatex
安装其他
docker exec -it sharelatex bash
在sharelatex容器中执行:
apt update
# 安装字体
apt install --no-install-recommends ttf-mscorefonts-installe fonts-noto texlive-fonts-recommended tex-gyre fonts-wqy-microhei fonts-wqy-zenhei fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-core fonts-noto-ui-extra fonts-noto-unhinted fonts-texgyre
# 安装pygments
apt install python3-pygments
# 安装beamer之类的
# https://packages.ubuntu.com/search?mode=filename&suite=bionic§ion=all&arch=any&keywords=beamer+example+tex&searchon=contents
apt install texlive-latex-recommended
apt install texlive-latex-extra
# 安装英文字体
echo "yes" | apt install -y --reinstall ttf-mscorefonts-installer
# 安装中文字体
apt install -y latex-cjk-all texlive-lang-chinese texlive-lang-english
cp fonts/* /usr/share/fonts/zh-cn/
cd /usr/share/fonts
fc-cache -fv # 更新字体缓存
fc-list :lang=zh-cn
fc-match Arial
配置Shell Escape
vim /usr/local/texlive/2023/texmf.cnf
在底下添加一行 shell_escape = t
,然后退出容器。
接下来再次打开https://192.168.116.129:80/project即可开始玩耍
XeLaTeX编译
部分论文模板使用了XeLaTeX,通常定义了RequireXeTeX相关指令,并且有些使用了Makefile文件。
在ShareLaTeX和Overleaf平台中,默认使用latexmk -xelatex指令编译XeLaTeX,但是往往不成功。
# 安装xetex基础环境
apt install -y texlive texlive-xetex texlive-latex-base texlive-latex-recommended
# 安装模板相关扩展
apt install -y texlive-latex-extra texlive-science texlive-pictures texlive-bibtex-extra