1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OECUAdvent Calendar 2024

Day 2

DockerとVSCodeでらくらくLaTeX環境

Last updated at Posted at 2024-12-01

 この記事では私が普段レポートの作成などに使用しているLaTeXの環境を紹介しようと思います.ブログの執筆は初めてなので読みづらいかもしれませんが悪しからず.

構成

 Dockerコンテナ上でtexliveがインストールされたDebianのコンテナを動かして,そのコンテナにVSCodeのRemote Developmentで繋いで編集からコンパイルまでを行っています.
 TexのコンパイルはVSCodeにLaTexWorkShopという拡張を入れることでVSCode上から行えるようになります.
 フォルダ構成ですが,一つのリポジトリにバンバンtexファイルを突っ込んでいく形で作業しているので,コンテナやVSCodeの設定ファイルをワークスペース単位で管理する形にしています.

構築手順

 この章では,実際にこの環境を構築するのに必要な手順について書いていきます.

環境

  • デバイス MacBook Air (M2, 2022)
  • OS:macOS Sequoia 15.1.1
  • Docker Desktop 4.36.0
  • VSCode 1.95.3
    • 拡張機能
    • Remote Development
    • LaTeX WorkShop

Dockerイメージの構築

 Dockerイメージの作成にはVSCodeのdevcontainerという機能を使用します.devcontainerとは名前の通り開発用のコンテナを作成する機能で,簡単なコンテナならVSCode上のボタンをポチポチするだけで作れます.今回は自分で作成したDockerfileを指定する形で使用します.
 devcontainerを作成するには,.devcontainerというフォルダを作り,その中にコンテナの構成を表すdevcontainer.jsonDockerfileを入れます.

./.devcontainer:
.  ..  devcontainer.json  Dockerfile

 それぞれのファイルは次のとおりです.

Dockerfile
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y texlive-full
RUN apt install -y locales
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
  && locale-gen
RUN apt install -y git
devcontainer.json
{
    "name": "Latex Dev Container",
    "build": {
        "dockerfile": "Dockerfile",
        "context": "..",
        "args": {
            "PROXY": "${localEnv:http_proxy}"
        }
    },
    "customizations": {
        "vscode": {
            "settings": {
                "terminal.integrated.shell.linux": "/bin/bash"
            },
            "extensions": [
                "James-Yu.latex-workshop"
            ]
        }
    },
    "mounts": [
        // List of folders to mount into the dev container
    ],
    "forwardPorts": [
        // List of ports to forward from the dev container to the local machine
    ]
    // "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated"
}

settings.json

次はLaTexWorkShop用の設定を作成していきます.今回はワークスペース用の設定をjsonで書いていきます.
Cmd + Shift + P を押して出てきたコマンドパレットにsettingsと打ち込み,候補の中からOpen Workspace settings(JSON)を選ぶことでワークスペース用のjsonファイルが開きます.
各種設定の意味ですが,説明が面倒なので自力でググってください.

簡単に説明すると,.recipiesで書いた内容がLaTeXWorkShopのタブに表示されます."latex-workshop.latex.tools".recipiesから使うコマンドを定義してます.

settings.json
{
    "latex-workshop.latex.tools": [
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "%DOC%"
            ]
        },
        {
            "name": "pbibtex",
            "command": "pbibtex",
            "args": [
                "%DOCFILE%.aux"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "1 item Build (lualatex)",
            "tools": [
                "lualatex"
            ]
        },
        {
            "name": "2 item Build (lualatex * 2)",
            "tools": [
                "lualatex",
                "lualatex"
            ]
        },
        {
            "name": "3 item Build (lualatex * 3)",
            "tools": [
                "lualatex",
                "lualatex",
                "lualatex"
            ]
        },
        {
            "name": "All item Build (lualatex * 4) + BibTeX",
            "tools": [
                "lualatex",
                "pbibtex",
                "lualatex",
                "lualatex",
                "lualatex",
            ]
        }
    ],
    "latex-workshop.latex.autoBuild.run": "onSave",
    "latex-workshop.latex.recipe.default": "first",
    "latex-workshop.latex.build.clearLog.everyRecipeStep.enabled": false
}

さて以上でおおよその設定は完了です.このワークスペースを開いた上で左下のRemote Developmentのボタンを押し,メニューからReopen in Containerを押すと現在のワークスペースをコンテナ内で開くことができます.初回はコンテナのビルドがあるため割と時間がかかります.
fig1.png

まとめ

VSCodeのdevcontainerとLaTeXWorkShopを使ってDockerコンテナ内で動くLaTeX環境を構築しました.おそらく他に調べればこれの上位互換みたいな構成がいっぱい見つかると思います.本当はもうちょっとちゃんと書きたかったのですが,やる気と時間が無くなったので今回はこんなところで

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?