转载:使用Docker部署ShareLaTex并简单配置中文环境来自 YXN’s Blog
因为工作需要,在服务器上配置了ShareLaTex环境,因为资料真的超级少,然后看到了转载博主的博客较为详细,故转载在此,但是博主博客中有一点点地方没有说到后面会进行补充。
系统与Docker环境安装同上篇Docker部署GitLab并实现基本配置,然后继续按照教程安装docker-compose组件。
由于ShareLaTeX的安装依赖于MongoDB和Redis,因此本文将使用官方向导建议使用docker-compose快速部署ShareLaTeX
docker pull sharelatex/sharelatex
mkdir -p ~/sharelatex # 在用户目录下创建一个sharelatex文件夹
cd ~/sharelatex # 进入sharelatex文件夹
curl -O https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml # 下载官方的docker-compose.yml配置文件
sudo vi docker-compose.yml # 使用vi修改配置文件
# 避免端口重复
ports:
- 5000:80
# 修改本地挂载目录
volumes:
- /home/docker/sharelatex:/var/lib/sharelatex
# 添加升级texlive需要的环境变量,主要是添加2018目录到2017前面,目的是为了防止后面安装完整版texlive时出现错误
# 【这里原博主有写,但是我添加以后好像并没有什么效果,不添加也是可以的】
environment:
- PATH: /usr/localsbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/texlive/2018/bin/x86_64-linux:/usr/local/texlive/2017/bin/x86_64-linux
# 下面选项设置ShareLaTeX的显示样式
SHARELATEX_APP_NAME: Our ShareLaTeX
SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance
SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
SHARELATEX_LEFT_FOOTER: '[{"text": "Powered by <a href=\"https://www.sharelatex.com\">ShareLaTeX</a> 2016"},{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
SHARELATEX_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'
# 修改mongo和redis的本地挂载目录
# mongo
volumes:
- /home/docker/mongo_data:/data/db
# redis
volumes:
- /home/docker/redis_data:/data
# 在sharelatex目录下
docker-compose up -d
这里有一点需要注意:就是我们配置好ShareLaTex后,如何也配置好了后面的中文环境,如果这个时候我们再去更改配置文件docker-compose.yml的话,我们再重新docker-compose up -d更新docker环境参数的话,下面的所有的操作都将要重新执行,包括升级并安装texlive操作,以及中文环境的配置。
# 进入容器的命令行(sharelatex容器本质上是一个Ubuntu)
docker exec -it sharelatex bash
# 进入texlive默认安装目录
cd /usr/local/texlive
# 复制2017文件夹为2018
cp -a 2017 2018
# 下载并运行升级脚本
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
sh update-tlmgr-latest.sh -- --upgrade
# 更换texlive的下载源,例如国内的清华源
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/
# 升级tlmgr
tlmgr update --self --all
# 更新字体缓存(好像没成功,但是不影响下面操作)
luaotfload-tool -fu
# 安装完整版texlive(漫长的等待,不要让shell断开)
tlmgr install scheme-full
# 推出sharelatex的命令行界面,并重启sharelatex容器
exit
docker restart sharelatex
进入浏览器访问http://192.168.8.21:5000/launchpad,根据提示创建Admin用户。
下载的sharelatex镜像里面默认是没有安装xfont和中文字体的,因此无法渲染中文文档,必须安装所需的中文字体,这里以Windows下常用字体和Adobe Song Std为例。原教程见ArchLinux 部署ShareLaTex并且配置中文支持。
将Windows字体库(即目录C:\windows\fonts)上传到host机,如果Windows安装了Git可以使用scp命令直接上传
在host机下把fonts目录打包并传到sharelatex容器中
# 进入fonts目录
cd fonts/
# 删除其中的.fon字体文件(该种格式文件在后面建立字体目录时会报错),只保留TrueType和OpenType字体,即.ttf和.otf
# 一般地,如果只需要其中特定的中文字体,只需要上传需要的字体即可
rm -r *.fon
# 返回上层目录并打包
cd ..
tar -zcvf winfonts.tar.gz fonts/
# 把压缩文件传到sharelatex容器的root目录下
docker cp winfonts.tar.gz sharelatex:/root
# 进入容器的命令行界面
$ docker exec -it sharelatex bash
# 通过安装wqy字体同时安装xfont工具
$ apt-get install xfonts-wqy
# 进入root目录,解压winfonts.tar.gz,并剪切到系统字体目录下
cd ~
tar -zxvf winfonts.tar.gz
mv winfonts /usr/share/fonts/
# 进入字体目录安装字体
cd /usr/share/fonts/winfonts
mkfontscale
mkfontdir
fc-cache -fv
# 检查确认中文字体安装成功
fc-list :lang=zh-cn
回到ShareLaTeX网站,创建一个新项目,使用CTEX宏集和XeLaTeX编译器,即可生成中文pdf。(详见CTEX宏集手册)
因为学校论文的需要,有时需要其他中文字体,例如Adobe宋体,其安装流程与上述基本一致。(PS:在GitHub上可以找到公开的Adobe Song Std字体,涉及版权这里不放链接)
注意:到此出配置完成了,但是我们会发现我们直接写中文是有问题的,解决方案如下
(1)包含头 \documentclass[utf8]{ctexart}
(2)点开左上角的Menu,进去将Compiler改成XeLaTex即可
这个时候我们就可以愉快的时使用ShareLatex的中文了
这一块暂时懒得写,就简单的收集整理了一下别人写好的,收集的链接再这里。