はじめに
ShareLatex は,サーバー上でTeX原稿を執筆するツールで,同時共同編集や履歴,チャットなどができるツールです.競合サービスとして,Overleaf や CloudLatex などがありますが,ShareLatex の良いところの一つは,ソースコードを公開しているので,自前サーバーで運用できるという点です.未発表データを外部に置くことに抵抗があるユーザーでも,共同編集機能が利用でき,執筆作業が大幅に効率化できます.
しかしながら,ShareLatex には大きな欠点があります.それは,jarticle をベースとするような日本語原稿に対応していないことです(例えば,学会提供クラスファイル).前回は,一つの解決策として,こちらの記事のように,疑似スタイルファイルを用いる方法を示しました.今回は,ShareLatex 自体を改造して,コンパイルに platex が用いられるようにすることで,日本語に対応します.これによって,本物のクラスファイルを用いることができるようになります.
なお,以降は,Ubuntu 14.04.02 で動作確認した方法について述べていきますが,他のバージョンの Ubuntu でも動くと思います.違うOSの場合は,インストールパスや設定ファイルのパスが違っているかもしれませんので適宜修正してください.
2016/4/3 追記:
ShareLatex のドキュメントが一新され,下記のインストール方法に関する公式ドキュメントは削除されました.ご注意ください.
ShareLatex のダウンロード&インストール
ShareLatex をインストールする前に,依存パッケージをインストールします.
# リポジトリの追加 sudo add-apt-repository ppa:chris-lea/node.js sudo add-apt-repository ppa:chris-lea/redis-server sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv ABF5BD827BD9BF62 echo 'deb http://nginx.org/packages/ubuntu/ precise nginx' | sudo tee /etc/apt/sources.list.d/nginx.list sudo apt-get update # 依存パッケージをインストール sudo apt-get install git build-essential curl python-software-properties zlib1g-dev zip unzip sudo apt-get install nodejs sudo npm install -g grunt-cli sudo npm install -g node-gyp sudo apt-get install redis-server sudo apt-get install mongodb-org sudo apt-get install aspell aspell-en sudo apt-get install texlive* sudo apt-get install nginx sudo apt-get install libkrb5-dev
Redis の設定として,Append only オプションを設定することが推奨されています./etc/redis/redis/conf ファイルを編集し,appendonly no となっている行を appendonly yes に変更します.
つづいて,ShareLatex のインストールを行います.
sudo mkdir -p /var/www sudo git clone -b release https://github.com/sharelatex/sharelatex.git /var/www/sharelatex cd /var/www/sharelatex sudo npm install sudo grunt install sudo adduser --system --home /var/www/sharelatex --no-create-home --group sharelatex sudo chown -R sharelatex:sharelatex /var/www/sharelatex sudo mkdir /etc/sharelatex sudo mv config/settings.development.coffee /etc/sharelatex/settings.coffee udo mkdir -p /var/lib/sharelatex/data sudo mkdir -p /var/lib/sharelatex/data/user_files sudo mkdir -p /var/lib/sharelatex/data/compiles sudo mkdir -p /var/lib/sharelatex/data/cache sudo mkdir -p /var/lib/sharelatex/tmp sudo mkdir -p /var/lib/sharelatex/tmp/uploads sudo mkdir -p /var/lib/sharelatex/tmp/dumpFolder sudo chown -R sharelatex:sharelatex /var/lib/sharelatex
つぎに,設定ファイルを設定していきます.
まずは,/etc/sharelatex/settings.coffeeを開き,以下のように設定します.
DATA_DIR = '/var/lib/sharelatex/data' TMP_DIR = '/var/lib/sharelatex/tmp'
つぎに,Upstartを設定し,OS 起動時に ShareLatex が起動するようにします.ShareLatexを動かすためには,11個のサービスを起動するよう設定する必要があります.簡単に設定できるように,Github にスクリプトを置きました.ついでに,nginx の起動設定もできるようにしておきました.
git clone https://github.com/ken1row/sharelatex-upstart cd sharelatex-upstart bash set_all_upstart_conf.sh bash set_nginx_upstart.sh
つぎに,nginx を設定し,80番ポートでShareLatexにアクセスできるようにします./etc/nginx/conf.d/sharelatex.conf を開き,以下のように設定を記述します.また,デフォルトの設定ファイル(default.conf)を削除しておきます.
server { listen 80; server_name _; # Catch all, see http://nginx.org/en/docs/http/server_names.html set $static_path /var/www/sharelatex/web/public; client_max_body_size 50M; location / { proxy_pass http://localhost:3000; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_x_forwarded_host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 3m; proxy_send_timeout 3m; } location /socket.io { proxy_pass http://localhost:3026; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_x_forwarded_host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 3m; proxy_send_timeout 3m; } location /stylesheets { expires 1y; root $static_path/; } location /minjs { expires 1y; root $static_path/; } location /img { expires 1y; root $static_path/; } }
日本語論文に対応する
日本語論文に対応するための改造ポイントは以下の4点です.
- latex を (u)platex にする.ついでに,jpeg や png 画像等を埋め込むときに,自動的に xbb を生成するように,-shell-escape オプションをつけておく.
- dvipdf を dvipdfmx にする.プログラム引数の取り方が違うので注意が必要です.
- 日本語フォントを埋め込む.(デフォルトでは,英語フォントのみが埋め込まれます)
- PDF ビューアー(PDF.js)が日本語を表示できるようにする
1 に関しては,こちらの記事が参考になります.該当箇所の Coffee script を編集して,latex が platex になるように置換していきます.2, 3 は,pvipdf の呼び出し方を変更します.’dvipdf input.dvi output.pdf’ を ‘dvipdfmx -f texfonts.map -o output.pdf input.dvi’ となるようにします.4 は,PDF.js のサイトから bcmaps をダウンロードしてきて,pdf.js に,cmaps へのパスを指定します.
これらすべての変更を行うスクリプトを Githubのページ で公開しています.以下のコマンドを実行すれば,上記変更がすべて適用されます.
git clone https://github.com/ken1row/sharelatex-platex-patch sudo cp -r sharelatex-platex-patch/* /var/www/sharelatex/ cd /var/www/sharelatex sudo python patch.py --compile --verbose
管理者ユーザーを作成し,ShareLatex を開始する
再起動すると,upstart により,ShareLatex が起動します.Webブラウザから http://localhost/ にアクセスすると,ShareLatex が動いていることが分かると思います.さて,最後に,管理者ユーザーの登録を行います.
cd /var/www/sharelatex/web sudo grunt create-admin-user --email joe@example.com
コンソールに,初期パスワードの登録用URLが表示されますので,ブラウザのアドレスバーにコピー&ペーストして管理者ユーザーのパスワードを登録します.その他のユーザーの登録は,管理者ユーザーでログインし,行います.メールは送信されませんので,表示されるアドレスをコピーしてパスワードを設定しましょう.
日本語論文執筆時には,プロジェクトの設定から,コンパイラを platex に設定してください.
まとめ
ShareLatex を自前サーバーで運用することで,日本語論文,特に,学会提供クラスファイルなどが使えるようになりました.
コメント
最新のインストール方法、日本語対応を行えるように説明をお願いします。
マシンはRaspberry pi 3、OSはRaspbianを使っています。