Atom + LaTeX in Docker
概要
LaTeXをホストにインストールせず、Docker内で動かしつつ、 Atomからこれを利用できるようにする。
Requirements
- Ubuntu 18.04
- Docker
- Atom
- Atom Packages
Atom Packages
latexを入れれば最低限ビルドコマンドは叩けるようになる。
- latex
- シンタックスハイライト
- アウトライン表示
- PDFプレビュー
- pdf-view(メモリリーク? Atomを一度閉じれば解消する)
- または pdf-view-plus(メモリリーク対策版らしい。
latex
との連携はないので注意)
Dockerイメージ
paperist/alpine-texlive-jaを使う。
sudo docker pull paperist/alpine-texlive-ja
Docker
sudo
なしでDockerを実行できるようにする。AtomからDockerコンテナを作るのに必要。
注意として、この方法で一般ユーザがDockerを使えるようにすると特権昇格できてしまうため、 共有サーバにおいてはDocker 20.10以降のDocker rootlessを設定する。
ユーザをdockerグループに追加したあと再ログインする。新しくdockerグループが作られた直後はnewgrp docker
しなければならないことがあり、シェルごとにこれを実行する必要があるようなのでAtomに反映されず、この場合OSの再起動が必要。
sudo groupadd dockersudo adduser $USER docker
latexmkスクリプトを作る
/usr/texbin/latexmk
(手動でlatex
のTeX Path
を設定するか、デフォルトでPATHの通っている場所ならどこでもいい)に以下のシェルスクリプトを作成し、chmod +x /usr/texbin/latexmk
しておく。
${HOME}/.atom/packages/latex/resources
のマウントはlatex
のExtended Build Mode
が有効のときに${HOME}/.atom/packages/latex/resources/latexmkrc
が読み出されるため設定している(このパスはホストのAtomから渡されるのでマウント先パスもホストと同じ)。この機能を無効にしていれば不要。
#!/bin/shdocker run --rm \-v "${PWD}:/workdir" \-v "${HOME}/.atom/packages/latex/resources:${HOME}/.atom/packages/latex/resources" \paperist/alpine-texlive-ja \latexmk "$@"
サンプルTeXファイル
\documentclass[10pt,a4paper]{jsarticle}\title{My Title}\author{Author}\date{2020-09-17}\begin{document}\maketitle\section{サンプル}\end{document}
注意点
カレントディレクトリ以下をマウントするため、外部においた.sty
などは読み込めないので注意(デフォルトでロードされるディレクトリがあれば追加のマウントをすればOKと思われる)。
おまけ
stderrにコマンドを吐き出してエラー終了するスクリプト
#!/bin/shecho $0 $@ >&2exit 1;