Overleaf(旧sharelatex)環境の構築


はじめに

この記事は,私が以前に書いた記事の2019年度版です.何故新しく書いたのかというとsharelatexはoverleafと合併したこともあり,従来のセットアップ方法と少し変わったからです.あとUbuntu 18.04を使ってみたかったからです.

環境

Ubuntu 18.04LTS
RAM 8GB

必要なもののインストール

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install docker docker-compose

overleafを引っ張ってくる

$ git clone https://github.com/overleaf/overleaf.git
$ docker pull sharelatex/sharelatex

overleafを起動する.

$ cd overleaf
$ docker-compose up -d

コンテナの設定を行う

ここから,コンテナ内にあるTeXを拡張していきます.
overleafを起動した状態で,

$ docker ps

を入力すると,このように起動中のコンテナが表示されます.

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                 PORTS                NAMES
7008b6d62732        sharelatex/sharelatex   "/sbin/my_init"          2 hours ago         Up 2 hours             0.0.0.0:80->80/tcp   sharelatex
c2edf6f6d736        mongo                   "docker-entrypoint.s…"   2 hours ago         Up 2 hours (healthy)   27017/tcp            mongo
7c70d6bd4f49        redis                   "docker-entrypoint.s…"   2 hours ago         Up 2 hours             6379/tcp             redis

そこで,表示されるsharelatexのID(今回だと7008b6d62732)を使用して,

$ docker exec -it [コンテナID] bash

を実行します.すると

root@7008b6d62732:/# 

のようにコンテナ内に入ることができます.その中で,

# tlmgr update --self
# tlmgr install scheme-full

を実行し,TeXをインストールします.ちなみに,インストールする前はTeX関係は最小構成で組まれているそうです.
インストールが終了したら,

# exit

でコンテナから抜けます.その後,

$ sudo docker commit -m "installing all latex packages" [コンテナID] sharelatex/sharelatex:v1

でTeXをインストールしたコンテナを作成します.

作成したコンテナを適用する

次に作成したコンテナを適用させます.
まずはじめに実行していたコンテナを終了させます.

$ cd overleaf
$ docker-compose down

次に,

$ vi docker-compose.yml

より,docker-compose.ymlの中身を

docker-compose.yml
version: '2.2'
services:
    sharelatex:
        restart: always
        # Server Pro users: 
        # image: quay.io/sharelatex/sharelatex-pro
        image: sharelatex/sharelatex:v1            #←ここを先程の新しいコンテナに変更する
        container_name: sharelatex

に変更します.
ついでに表示を日本語化する場合は,

docker-compose.yml
SHARELATEX_SITE_LANGUAGE: "ja"

を任意の場所に追加してください.

adminの作成

ここから先はwikiにも記載されている通り,

docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=[your e-mail address]"

を実行し,その際に表示されるアドレスにアクセスし,adminユーザを作成します.
他のユーザーは,adminでログインした後registerより作成してあげてください.

platexで文章を作成する.

ここまでできたら,あとは使うだけです.使い方は公式のoverleafと同じになります.platexに関しては,
Overleaf v2 で日本語を使用する方法
など先駆者様が書かれていますように,

① MENUからCompilerをlatexに指定
② 新しいファイルを作成より,latexmkrcを(.texは消す)作成し

$latex = 'platex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$pdf_mode = 3; 

を記載してコンパイルしてあげるだけです.

このときに,再編集の隣りにある紙のボタン(ログの表示)を押したあとRAW記録を表示を確認し,e-pTeXでコンパイルされていたら成功です.
試した限りアップロードしたtexファイルで成功しないときがたまにあるので気をつけてください.

上の図のようにThis is e-pTeXと書かれていたらpLaTeXが使えています.

終わりに

今回は,overleafになったこともありUIがちょっと変わりました,以前のようにclsiのcoffeeを書き換えてしまう方法もあると思うのですが,clsiが少し変わってしまっていてかつ使用するnpmのバージョンが若干古いので今回はこの方法を取りました.(実を言うとしばらく格闘としたけどできなかったので誰かやってください)
というかoverleafさんplatexをデフォルトで使えるようにしてください!

overleafになってから情報が減ってしまったのでサーバー組んで使ってくれる人が増えるといいなぁ....

参考

Host Your Own LaTeX Server
TeXLive package manager requires an upgrade! #90
Quick Start Guide