- 野良の Docker イメージの利用を避け,公式イメージ
texlive/texliveを活用する - Dockerfile を書くのを避け,Dev Container の Features を活用する
- LaTeX Workshop のカスタマイズを避け,標準搭載の Latexmk レシピを活用する
- 本テンプレートを参考にユーザーにより技術的に妥当な LaTeX 環境構築方法を提案してほしい
LaTeX の執筆を快適に行うための Dev Container のテンプレートです. なるべくシンプルで汎用的に使えることを心がけています. 改善点や要望があれば,お気軽に Issue や Pull Request でお知らせください. このテンプレートの考え方についての 記事 を書きました. ご興味があればぜひご覧ください.
動作に必要なものは次のとおりです:
公式ドキュメント の手順に従って Docker をインストールしてください.
ちょうど最近 Microsoft Store 版 がリリースされました(2025 年 5 月時点). Windows で Docker Desktop を使う場合これからはこちらからインストールするとよいでしょう.
また,最近は WSL にインストールされた Docker を使う方法も安定してきています(2025 年 12 月時点). Docker Desktop の不安定さはもうこりごりだという人はぜひ試してみるといいと思います.
公式ドキュメント の手順に従って VS Code をインストールしてください. Windows の場合は Microsoft Store からのインストールがおすすめです.
VS Code に Remote Development Extension Pack をインストールしてください. VS Code の 公式ドキュメント を参考にインストールしてください.
Note
Remote Development Extension Pack は,デフォルトでインストールされている場合があります.
試しに使ってみたい場合は,そのままリポジトリをクローンしてください. お好きな方法で構いませんが,個人的には GitHub Desktop を使う方法がおすすめです.
実際に執筆する際には,このリポジトリはそのまま利用できません. 以下のような方法で対応してください:
- リポジトリの画面の右上にある "Use this template" ボタンをクリックして新しいリポジトリを作成する
- リポジトリをフォークする
- ローカルにクローンしたリポジトリの中身をコピーして新しいリポジトリを作成する
- ローカルにクローンしたあと
.gitフォルダを削除してもう一度リポジトリを初期化する
VS Code を起動し,クローンしたリポジトリのフォルダを開いてください. GitHub Desktop でクローンした場合は,クローン完了時に表示される「Open in Visual Studio Code」ボタンをクリックするのが楽なのでおすすめです.
リポジトリを開くと VS Code が .devcontainer フォルダを検出し,Dev Container で開くかどうかを尋ねるポップアップが表示されます.
ポップアップが表示されたら,「コンテナーで再度開く」をクリックしてください.
Dev Container の初回起動時には,コンテナイメージのダウンロードが行われるため,少し時間がかかります.
Note
ポップアップが表示されない場合は,ウィンドウの左下にある「><」アイコンをクリックし,「コンテナーで再度開く」を選択してください. Ctrl + Shift + P を押してコマンドパレットを開き,「開発コンテナ: コンテナーで再度開く」を選択することでも開くことができます.
Dev Container が起動したら,すぐに LaTeX の執筆を始めることができます.
サンプルとして LuaLaTeX,pLaTeX,upLaTeX, pdfLaTeX のプロジェクトを用意してあります.
ファイルを編集し保存すると自動でコンパイルが開始され,dist/ フォルダに PDF が生成されます.
dist/ フォルダに生成された PDF をクリックすると,PDF が表示されます.
ライブプレビューが可能なので,TeX ファイルと PDF を左右に並べて作業すると Overleaf や Cloud LaTeX のように快適に執筆できます.
Tip
TeX ファイルのウィンドウの右上に表示される「LaTeX PDF ファイルを表示」ボタンをクリックすることでも PDF が表示されます. ほかにも Ctrl + Alt + V を押すという方法もあります.
TeXLive 公式が配布している texlive/texlive イメージの使用を強く推奨します.
Caution
Qiita や Zenn などでおすすめされている怪しいイメージは使用してはいけません.
Tip
Docker Hub のページ に書いてあることですが, texlive/texlive は registry.gitlab.com/islandoftex/images/texlive のミラーです.
とはいえ基本的には Docker Hub の texlive/texlive を使うほうが無難だと思いますが.
Git の改行コードの問題を解決するために,次のような .gitattributes ファイルを追加しています.
* text=auto eol=lf
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlfGit の改行コードの問題を解決する方法はいろいろあるのですが,ユーザー依存ではなくワークスペース側で解決するほうが望ましいため,.gitattributes ファイルによる方法を採用しています.
詳しくは VS Code の公式ドキュメント を参照してください.
Note
このリポジトリでは BAT ファイルなどは使用していないので実のところ 1 行目だけで問題ないです. しかし,あえてテンプレを変更する必要もないのでそのままにしています.
LaTeX のコンパイル時に生成される中間生成物は,ある種のキャッシュでありローカル環境に保存する必要はありません. コンパイル結果が雑多であると管理が煩雑になりますし,OneDrive などのクラウドストレージを使用している場合には無駄な同期が発生してしまいます. このような理由から,このリポジトリでは中間生成物をローカルにバインドしない設定をしています.
まず .vscode/settings.json で次のように LaTeX Workshop 拡張機能の設定を変更しています:
"latex-workshop.latex.recipe.default": "latexmk (latexmkrc)"この設定により,コンパイル時に同じディレクトリにある .latexmkrc ファイルが読み込まれるようになります.
この .latexmkrc ファイルに次のような設定を追加することで,中間生成物と最終生成物の保存先を変更しています:
$out_dir = '../dist';
$aux_dir = '../build';さらに,.devcontainer/devcontainer.json で次のように設定しています:
"mounts": [
{
"target": "${containerWorkspaceFolder}/build",
"type": "volume"
}
],この設定により,build フォルダはローカルにバインドされず別のボリュームに保存されるようにすることができます.
Tip
このテクニックは一般に Volume Trick と呼ばれます.
ほかにも Python の venv や Node.js の node_modules など,ローカルにバインドする必要のないライブラリを保存するためによく使われます.
また,.vscode/settings.json で次のように設定しています:
"latex-workshop.latex.outDir": "../dist",この設定により,最終生成物の保存先の変更を LaTeX Workshop 拡張機能に伝えています.
もしこの設定をしないと,ライブプレビューなど一部の機能が上手く動作しません.
LaTeX Workshop 拡張機能には .latexmkrc なしでもコンパイルできるレシピが用意されていますが,このリポジトリでは .latexmkrc を挟む方法を採用しています.
これは次のような理由によるものです:
- 中間生成物の保存先を変更するため
- 文献リストの管理でカスタマイズが必要になる場合が多いため
- VS Code 以外のエディタでも同じ設定でコンパイルできるようにするため
たとえば LuaLaTeX の場合は次のような設定をしています:
$out_dir = '../dist';
$aux_dir = '../build';
$pdf_mode = 4;
$lualatex = 'lualatex -synctex=1 -interaction=nonstopmode %O %S';詳細は ChatGPT に譲ります.
Warning
-interaction=nonstopmode については LaTeX Workshop 拡張機能の都合によるものです.
カスタマイズする際は引っ掛かりやすい点なので注意してください.
このリポジトリでは,次の LaTeX エンジンのサンプルを用意しています:
- LuaLaTeX
- pLaTeX
- upLaTeX
- pdfLaTeX
大学のレポートなどで利用する際には LuaLaTeX を使用することを強く推奨します. pLaTeX や upLaTeX は学会のスタイルファイルを使用する場合など,どうしても必要な場合にのみ使用してください. pdfLaTeX は英語の論文などに利用してください.
ドキュメントクラスは jlreq の使用を強く推奨します.
詳細は jlreq 公式ドキュメント LaTeX美文書作成入門 を参照してください.
Tip
LaTeX の学習リソースについては Learn LaTeX(日本語版) もおすすめです.
なお pdfLaTeX についてはそもそも日本語に対応していないため article クラスを指定しています.