Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

vscode-devcontainer-latex

A ready-to-use VS Code dev container for LaTeX, for amd64 and arm64:

  • TeX Live 2026 (scheme-full, upstream, without docs/sources), incl. latexmk, biber, minted v3, ZUGFeRD/XRechnung (zugferd)
  • LaTeX Workshop with latexmk recipes (incl. a <file>-Solution build), LTeX+ (grammar/spell checking, ships offline with ltex-ls-plus), LaTeX Utilities, Comment Anchors
  • inkscape (for the svg package), pandoc, hunspell (de_DE, en_US), poppler-utils

What changed (2026-10)

TeX Live no longer comes from Ubuntu's texlive-* packages. The image now installs TeX Live 2026 upstream via install-tl. Ubuntu's frozen TeX Live shipped a minted/latexminted that is broken with Python 3.14.

If you use the image via :main or :latest, please note:

  • TeX Live lives in /usr/local/texlive. Install packages with sudo tlmgr install <pkg>, no longer with apt.
  • Extensions and settings now come with the image. Your copied devcontainer.json keeps working (your values win), but you can shorten it to the minimal example below.
  • New tags: use :2026 to stay on TeX Live 2026, or :2026-YYYYMMDD to pin a build (see Tags).

Usage

Create .devcontainer/devcontainer.json in your project:

{
  "name": "LaTeX",
  "image": "ghcr.io/chearix/vscode-devcontainer-latex:2026"
}

Then run Dev Containers: Reopen in Container. Extensions and settings come with the image.

Override settings or skip extensions as needed. Your values in .devcontainer/devcontainer.json win per key. Use a leading - to exclude an extension:

{
  "name": "LaTeX",
  "image": "ghcr.io/chearix/vscode-devcontainer-latex:2026",
  "customizations": {
    "vscode": {
      "settings": { "ltex.language": "de-DE" },
      "extensions": [ "-ExodiusStudios.comment-anchors" ]
    }
  }
}

Existing, fully copied devcontainer.json files keep working and can now be shortened to the above.

Tags

Tag Moves? Use
:2026 within TeX Live 2026 recommended: latest build with TeX Live 2026
:2026-YYYYMMDD no pin a specific build / roll back
:latest, :main yes latest build of the current TeX Live year
:sha-<commit> no build of a specific commit

Images are rebuilt monthly and only tagged after the test suite passed.

Notes

  • Install additional packages with sudo tlmgr install <pkg>, not with apt install texlive-* (that would add a second TeX Live with several GB).

  • minted works without -shell-escape. The recipe still passes --shell-escape because the svg package needs it.

  • LaTeX Workshop recipes: latexmk (default), latexmk (solution) and latexmk (document + solution). The solution build sets the job name to <file>-Solution, so a document can switch on solutions itself, e.g. with the exam class:

    \usepackage{xstring}
    \IfEndWith*{\jobname}{Solution}{\printanswers}{\noprintanswers}

    Documents without such a switch simply get a second, identical PDF.

Development

Opening this repo in VS Code builds the image locally (initializeCommand). For Podman, set DOCKER=podman on the host.

make build            # build image (IMG=..., PLATFORM=linux/arm64, DOCKER=podman)
make test IMG=...     # run the bats suite in tests/ against an image
make test-local       # run the suite inside the dev container

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages