2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DevContainerでLaTeXの環境構築

2
Last updated at Posted at 2026-05-09

この記事は「MMAブログリレー」の第6回の記事です。
前回の記事はyamazakuraさんの「接続するネットワークに応じて壁紙を自動で変える【Windows】」でした。
ブログリレーが再び活発になりそう?

DevContainerでLaTeXの環境構築

また環境構築記事になっちゃいました。「自分用LaTeX環境」を作ってみたという話です。あんまり$\LaTeX$には詳しくない(大学のレポートを書くときにトラブったらAI頼り)なので、DevContainerの練習になりました。実際に課題などで便利に使っています。また、私の上司のhydrogenさんの$\LaTeX$テンプレートが動作することを確認しました。

DevContainerを用いるメリット

環境構築が高速

TexLiveをインストールするには結構時間がかかります。確か10GB近いファイルをミラーサーバーからダウンロードしています。しかし、Dockerのtexlive/texliveイメージは2.4GB程度で、DockerHubからのダウンロードで高速です。

ホストの環境を汚さない

Windows版のTexLiveを使う場合は、ホームディレクトリに.latexmkrcを置いて、、、ってやるので、設定ファイル等がカオスになりがちです。
また、いつもはLuaLaTeXでコンパイルしてるけど、なんかの事情で今日はpLaTeX!って時も、独立した環境を用意できます。

使い方

WSLへのDockerのインストール

そんなことしなくても、DockerDesktopのWSL Integrationも使えます。

WindowsにインストールしたWSL(ディストリビューションはUbuntu)で説明していきます。(ほかのディストリビューションを使ったことが無いため)

Dockerエンジンのインストールはこちらを参考にします。

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# Install
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

リポジトリのクローン

git clone https://github.com/sakusan7200/latex_in_devcontainer.git

でローカル(WSL内を推奨)にクローンします。

VSCodeで開く

さっきリポジトリをクローンした位置までcdコマンドで移動しcode .とします。(VSCodeでWSL内のディレクトリを開いています)
左下の><コンテナーで再度開くを選択し、コンテナに入ります。
image.png

アイデア

以下、自分が何を考えて構築していったのか・気づいたこと書き連ねておきます。

ディレクトリ構成

.
├── .devcontainer
│   └── devcontainer.json
├── .gitignore
├── .latexmkrc
└── doc.tex

devcontainer.json

features

common-utilsというのを入れてみました。gitとかcurlとか(いい感じに書かれた).bashrcを入れてくれます。だから、DockerfileにRUN apt installとかいちいち書かなくて済みます。

settings

コンテナを使わないやり方だと、ここの内容をあらゆる文書で共有しカオスになります。ワークスペース直下に.latexmkrcファイルを作りそこに設定を書いてます。

Volumeトリック

auxフォルダには参照の番号付けのための補助ファイルなどが出力されます。バインドマウントによりホストに同期されると多少とはいえリソースを消費するので、除外します。

devcontainer.json
"mounts": [
    {
        "target": "${containerWorkspaceFolder}/aux",
        "type": "volume"
    }
]

.latexmkrc

上記のVolumeトリックを使うためにaux_dir=auxauxディレクトリに諸々を出すようにしてます。
-synctex=1でsynctexを有効にしてます。PDF上でCtrl+ダブルクリックでtexファイル上の該当箇所に飛べます。逆に、texファイル上でCtrl+Alt+JでPDFの該当箇所に飛べます。そんな機能あるんですね。知らなかった、無知って怖い。
pdf_mode=4はlualatexにより直接PDFを作成する指定です。lualatexの場合はdvipdfを通らずにPDFを出力できます。知らなかった、無知って怖い2。
lualatexでdvipdfを使わない場合は$latexではなく$lualatexを使うそうです。知らなかった、無知って怖い3。

まとめ

TikZや独自テンプレート、追加パッケージなどを入れていけば、自分専用の$\LaTeX$環境として育てていけそう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?