Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
e1f403f
Begin refinement
koppor Oct 22, 2026
f0ca1f7
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
6889660
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
bb3bf12
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
271323b
Update LTG
koppor Oct 22, 2026
f6065ce
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
ba8ef6b
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
b9835ee
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
7a1767a
Update files based on generated files by template generator
github-actions[bot] Oct 22, 2026
3d2ba21
Remove stray _latexmkrc and add CHANGELOG entry
koppor Oct 22, 2026
b3d835a
Update LTG
koppor Oct 25, 2026
5013e9a
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
e0cadfc
Add CHANGELOG entry for setup guide changes
koppor Oct 25, 2026
5ed63e9
Update LTG
koppor Oct 25, 2026
e9f0a23
Add CHANGELOG entry for JabRef beta hint
koppor Oct 25, 2026
b918ca2
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
34e28c9
Update LTG
koppor Oct 25, 2026
ce24f3f
Add CHANGELOG entry for JabRef beta hint in README
koppor Oct 25, 2026
4590d78
Update LTG
koppor Oct 25, 2026
4cc58c6
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
e723d25
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
305ed8f
Add CHANGELOG entry for Dev Container
koppor Oct 25, 2026
fa699d9
Update LTG
koppor Oct 25, 2026
96ab075
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
2d45bab
Update LTG
koppor Oct 25, 2026
a574d99
Add CHANGELOG entry for fewerfloatpages
koppor Oct 25, 2026
15bb429
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
036d9f4
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
398349d
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
2429e02
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
3b54a94
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
60b2842
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
f93a362
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
30b4f0f
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
a45cde2
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
1cad1ca
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
578685c
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
035b659
Update files based on generated files by template generator
github-actions[bot] Oct 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "LaTeX",
"image": "registry.gitlab.com/islandoftex/images/texlive:latest",
"customizations": {
"vscode": {
"extensions": [
"james-yu.latex-workshop",
"tecosaur.latex-utilities",
"ltex-plus.vscode-ltex-plus",
"jabref.jabref-4-vscode",
"davidanson.vscode-markdownlint"
],
"settings": {
"latex-workshop.docker.enabled": false
}
}
}
}
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
From 2025-01-26 onwards, versioning is done using [Calendar Versioning](https://calver.org/).

## [Unreleased]

### Added

- [fewerfloatpages](https://ctan.org/pkg/fewerfloatpages) avoids pages that contain only a few floats.
- `.devcontainer/devcontainer.json`: open the repository in VS Code ("Reopen in Container") or in GitHub Codespaces to work inside the TeX Live image, without a local LaTeX installation.

### Changed

- `docs/latex-setup.md` recommends Docker for compiling and VS Code for editing (linking to the README); the MiKTeX and Ubuntu hints stay as the traditional setup and TeXstudio is the last alternative.
- `docs/latex-setup.md` no longer mentions Ubuntu 16.04.
- The README and `docs/latex-setup.md` recommend the [JabRef beta version](https://github.com/JabRef/jabref/releases), because the stable version 5.15 is too old.

## [2026-10-19]

### Added
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@ Thus, `minted` works out of the box - also on Windows, without a separate Python

1. Optional: Let VS Code compile in the container, see ["VS Code configuration"](#vs-code-configuration).

No Docker at hand? Open the repository in [GitHub Codespaces](https://github.com/features/codespaces) and compile in the browser.

If you need additional tools in the image, extend the generated `Dockerfile`, build it with `docker build -t ltg .`, and use `ltg` instead of the image name.

### Traditional
Expand Down
1 change: 1 addition & 0 deletions Texlivefile
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ etexcmds
etoolbox
everyshi
fgruler
fewerfloatpages
fifo-stack
filehook
fixmath
Expand Down
192 changes: 79 additions & 113 deletions docs/latex-setup.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,18 @@
# Recommended LaTeX environments

## TeXStudio as LaTeX Editor

Grammar and spell checking is available at [TeXstudio].
Please download [LanguageTool] and [configure TeXstudio to use it](http://wiki.languagetool.org/checking-la-tex-with-languagetool#toc4).
Note that it is enough to point to `languagetool-server.jar`.
![language-tool-configuration](texstudio-configuration-languagetool.png)

The template is compiled using normal compilation commands.
Your LaTeX environment (such as [TeXStudio]) should take care about the compilation transparently.

If the document needs `--shell-escape` (for PlantUML or Mermaid diagrams, or for minted with TeX Live 2024), its first lines tell TeXstudio to compile with `--shell-escape`.
Then, TeXstudio warns that the compilation command will be overridden.
Please answer `(a) allow for this document`:

![allow --shell-escape for this document](texstudio-confirmation-1.png)

At "Build & View", there will be a question to update to biber.
Please answer `(a) allow for this document`:

![allow biber for this document](texstudio-confirmation-2.png)

When the "Package Installation" dialog pops up at TeXStudio, choose your username at "The package will be installed for:" and uncheck "Always show this dialog before installing packages."
If you want to include .svg graphics, [inkscape] has to be in your path.

**Attention!** The first compilation will take **at least 30 seconds**, because there will be some LaTeX packages installed.

**If TeXstudio doesn't fit your need, check [the list of all available LaTeX Editors](http://tex.stackexchange.com/questions/339/latex-editors-ides).**

## JabRef for managing literature

Use [JabRef] to manage your bibliography.
Quick installation using [Chocolatey]: `choco install texstudio languagetool jabref`.

A comparison to other literature management software is available at <https://ultimate-comparisons.github.io/ultimate-reference-management-software-comparison/>.
See [LaTeX Editors/IDEs question on TeX.SX](http://tex.stackexchange.com/questions/339/latex-editors-ides) for a complete list of LaTeX editors.
The recommended setup is **Docker** for compiling and **VS Code** for editing.
Both are described in the main README; this page adds the details, platform-specific installation hints, and the TeXstudio alternative.

## LaTeX distribution

Choose one of the two setups: Docker-based or traditional.
Choose one of the two setups: Docker-based (recommended) or traditional.

### Docker-based (recommended)

The [TeX Live docker image by the Island of TeX](https://gitlab.com/islandoftex/images/texlive#tex-live-docker-image) provides a perfectly configured LaTeX distribution with all required tools.
It works the same on Windows, macOS, and Linux and ships `latexmk`, `biber`, `latexindent`, Python, and `latexminted`.
Thus, `minted` works without further setup - also on Windows.
The generated `Dockerfile` is based on that image; see [Usage with docker](../README.md#usage-with-docker) in the main README.

1. Install Docker: [Docker Desktop](https://docs.docker.com/desktop/) on Windows and macOS, [Docker Engine](https://docs.docker.com/engine/install/) on Linux.
On Linux, follow the [post-installation steps](https://docs.docker.com/engine/install/linux-postinstall/) to run `docker` without `sudo`.
Expand All @@ -71,30 +39,12 @@ Thus, `minted` works without further setup - also on Windows.
docker run --rm -v "$PWD:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest latexmk main-english
```

1. To compile from [TeXstudio], open Options > Configure TeXstudio > Commands and set
- "PdfLaTeX" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex`,
- "LuaLaTeX" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest lualatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex`, and
- "Biber" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest biber %`.

On Linux and macOS, you can mount the directory at the same path instead (`-v DIROFTEXDOCUMENT:DIROFTEXDOCUMENT --workdir=DIROFTEXDOCUMENT`).
Then, the paths in the generated SyncTeX file match your machine, and jumping between source and PDF keeps working.
1. Press "Compile" (<kbd>F6</kbd>) in TeXstudio.

For VS Code, see ["Using VSCode to Edit, Compile, and Preview PDFs"](#using-vscode-to-edit-compile-and-preview-pdfs).
To compile from an editor, see [VS Code](#vs-code-as-latex-editor) (recommended) or [TeXstudio](#using-texstudio-with-the-docker-image).

### Traditional

Install a LaTeX distribution on your machine: [MiKTeX](https://miktex.org/download) on Windows, [TeX Live](https://www.tug.org/texlive/) on macOS and Linux.

#### Installation hints for Ubuntu

- From Ubuntu 18.10 onwards, the basic version of the template works without issues.
Advanced usages such as cool syntax highlighting with [minted](https://www.ctan.org/pkg/minted) needs more configuration.
- Ubuntu 16.04 [ships biber 2.4](https://bugs.launchpad.net/ubuntu/+source/biber/+bug/1589644), so you have to upgrade your texlive distribution.
The easiest way is to uninstall the ubuntu package and use [install-tl-ubuntu](https://github.com/scottkosty/install-tl-ubuntu).
Then, you can follow the instructions given at <http://tex.stackexchange.com/a/55459/9075> to update your texlive distribution.
If you do not want to have an updated installation, but fiddle around with dirty patching your installation, please follow <http://tex.stackexchange.com/questions/84624/how-to-upgrade-biblatex-properly>.

#### Installation hints for Windows

Note: The default installation of MiKTeX might ship with incompatible biblatex and biber packages.
Expand All @@ -108,7 +58,8 @@ If you installed MiKTeX other ways, you have to run "Update MiKTeX (Admin)" and
1. Open `cmd.exe` as Administrator
2. Paste and hit <kbd>Enter</kbd> `@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"`
1. Execute `choco feature enable -n=allowGlobalConfirmation` to get rid off additional installation confirmations.
1. Execute `choco install texstudio sumatrapdf.install strawberryperl jre8 jabref languagetool` to install necessary tooling.
1. Execute `choco install vscode sumatrapdf.install strawberryperl jre8 jabref languagetool` to install necessary tooling.
Replace `vscode` by `texstudio` if you prefer TeXstudio.
1. In case [PlantUML](http://plantuml.com/) should be used, follow the installation instructions at <https://koppor.github.io/plantuml/> listed at the "pre-conditions" section.
1. For more recommended tooling see <https://github.com/koppor/koppors-chocolatey-scripts>.

Expand Down Expand Up @@ -143,71 +94,86 @@ If you installed MiKTeX other ways, you have to run "Update MiKTeX (Admin)" and
8. Execute `initexmf --update-fndb` (ensure that no other MiKTeX tooling such as the [MiKTeX Console](https://miktex.org/howto/miktex-console) is run in parallel - see <https://github.com/MiKTeX/miktex/issues/98#issuecomment-375952270>)
9. Execute `initexmf --mklinks --force`

## Using VSCode to Edit, Compile, and Preview PDFs
#### Installation hints for Ubuntu

- From Ubuntu 18.10 onwards, the basic version of the template works without issues.
Advanced usages such as cool syntax highlighting with [minted](https://www.ctan.org/pkg/minted) needs more configuration.
The easiest way is to uninstall the ubuntu package and use [install-tl-ubuntu](https://github.com/scottkosty/install-tl-ubuntu).
Then, you can follow the instructions given at <http://tex.stackexchange.com/a/55459/9075> to update your texlive distribution.
If you do not want to have an updated installation, but fiddle around with dirty patching your installation, please follow <http://tex.stackexchange.com/questions/84624/how-to-upgrade-biblatex-properly>.

***Note: The configuration of LaTeX Workshop on [Fast Guide on Writing LaTeX with LaTeX Workshop in VS Code](https://mathjiajia.github.io/vscode-and-latex/) may require some modifications to work with this template.***
Always working solution: the [Docker-based setup](#docker-based-recommended).

### Prerequisites
## VS Code as LaTeX editor

1. Install [VSCode](https://code.visualstudio.com/).
2. Install [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop).
3. Install a LaTeX distribution (see ["LaTeX distribution"](#latex-distribution)).
With the Docker-based setup, LaTeX Workshop can run the tools in the container (an experimental feature of LaTeX Workshop); add the following to `settings.json`:
Use [VS Code](https://code.visualstudio.com/) with the [LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop) extension.
The recommended extensions and the required `settings.json` entries are given at [VS Code configuration](../README.md#vs-code-configuration) in the main README.
You can also copy the contents of [vscode.settings.json](../vscode.settings.json) to your VS Code settings file.

```json
"latex-workshop.docker.enabled": true,
"latex-workshop.docker.image.latex": "registry.gitlab.com/islandoftex/images/texlive:latest",
```
With the Docker-based setup, LaTeX Workshop can run the tools in the container (an experimental feature of LaTeX Workshop); add the following to `settings.json`:

### Recommended Setup of VSCode

1. Open VSCode.
2. Press <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>P</kbd> to open the command palette. Then type "JSON" and select "Preferences: Open Settings (JSON)" to open `settings.json`.
3. Now copy and paste the following snippet into your `settings.json` file (inside the brackets `{}` of your file).

```json
"latex-workshop.latex.tools": [
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
],
"env": {}
}
],

"latex-workshop.latex.recipes": [
{
"name": "pdflatex ➞ biber ➞ pdflatexX2",
"tools": [
"pdflatex",
"biber",
"pdflatex",
"pdflatex"
]
}
],
```
```json
"latex-workshop.docker.enabled": true,
"latex-workshop.docker.image.latex": "registry.gitlab.com/islandoftex/images/texlive:latest",
```

4. (optional) If you add the following line into your `settings.json`, the LaTeX Workshop extension will not automatically compile the code after any changes. You can manually trigger compilation by hitting the green button in the extension or using other methods provided by LaTeX Workshop.
If you do not want LaTeX Workshop to compile automatically after each change, add the following line and trigger the compilation manually:

```json
"latex-workshop.latex.autoBuild.run": "never",
```
```json
"latex-workshop.latex.autoBuild.run": "never",
```

## JabRef for managing literature

Use [JabRef] to manage your bibliography.
In 2026, install the latest beta version from <https://github.com/JabRef/jabref/releases>: the stable version 5.15 is too old.

A comparison to other literature management software is available at <https://ultimate-comparisons.github.io/ultimate-reference-management-software-comparison/>.

## TeXstudio as LaTeX editor (alternative)

If VS Code does not fit your needs, [TeXstudio] is a good alternative.
Windows: `choco install texstudio languagetool`.
For a complete list of LaTeX editors, see [the LaTeX Editors/IDEs question on TeX.SX](http://tex.stackexchange.com/questions/339/latex-editors-ides).

Grammar and spell checking is available at [TeXstudio].
Please download [LanguageTool] and [configure TeXstudio to use it](http://wiki.languagetool.org/checking-la-tex-with-languagetool#toc4).
Note that it is enough to point to `languagetool-server.jar`.
![language-tool-configuration](texstudio-configuration-languagetool.png)

The template is compiled using normal compilation commands.
Your LaTeX environment (such as [TeXstudio]) should take care about the compilation transparently.

If the document needs `--shell-escape` (for PlantUML or Mermaid diagrams, or for minted with TeX Live 2024), its first lines tell TeXstudio to compile with `--shell-escape`.
Then, TeXstudio warns that the compilation command will be overridden.
Please answer `(a) allow for this document`:

![allow --shell-escape for this document](texstudio-confirmation-1.png)

At "Build & View", there will be a question to update to biber.
Please answer `(a) allow for this document`:

![allow biber for this document](texstudio-confirmation-2.png)

When the "Package Installation" dialog pops up at TeXstudio, choose your username at "The package will be installed for:" and uncheck "Always show this dialog before installing packages."
If you want to include .svg graphics, [inkscape] has to be in your path.

**Attention!** The first compilation will take **at least 30 seconds**, because there will be some LaTeX packages installed.

### Using TeXstudio with the Docker image

1. Open Options > Configure TeXstudio > Commands and set
- "PdfLaTeX" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex`,
- "LuaLaTeX" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest lualatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex`, and
- "Biber" to `docker run --rm -v "DIROFTEXDOCUMENT:/workdir" registry.gitlab.com/islandoftex/images/texlive:latest biber %`.

Replace `DIROFTEXDOCUMENT` by the directory of your LaTeX document. Example: `/home/user/thesis`.
On Linux and macOS, you can mount the directory at the same path instead (`-v DIROFTEXDOCUMENT:DIROFTEXDOCUMENT --workdir=DIROFTEXDOCUMENT`).
Then, the paths in the generated SyncTeX file match your machine, and jumping between source and PDF keeps working.
1. Press "Compile" (<kbd>F6</kbd>) in TeXstudio.

[chocolatey]: https://chocolatey.org/
[inkscape]: https://inkscape.org/
[JabRef]: https://www.jabref.org
[LanguageTool]: https://languagetool.org/
[TeXstudio]: http://texstudio.sourceforge.net/
[TeXstudio]: https://www.texstudio.org/
8 changes: 6 additions & 2 deletions main-basic-listings-english-thu.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
% !BIB program = biber
% -*- coding:utf-8 mod:LaTeX -*-
%
% vvvvvvvv The content starts in line 1024 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1164.
% vvvvvvvv The content starts in line 1028 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1168.
% The chapters are in the directory "chapters-en".
% Everything above is the preamble: document class, packages, and settings.

Expand Down Expand Up @@ -716,6 +716,10 @@
% The lscape package does not rotate the page either
\usepackage{pdflscape}

% Avoid float pages that are only partially filled: such floats are put back into the text flow.
% Source: https://ctan.org/pkg/fewerfloatpages
\usepackage{fewerfloatpages}

% Align floats to the top on float-only pages instead of vertically centering them.
% See http://tex.stackexchange.com/a/28565/9075
\makeatletter
Expand Down
8 changes: 6 additions & 2 deletions main-basic-listings-english-university-of-hamburg.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
% !BIB program = biber
% -*- coding:utf-8 mod:LaTeX -*-
%
% vvvvvvvv The content starts in line 1024 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1166.
% vvvvvvvv The content starts in line 1028 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1170.
% The chapters are in the directory "chapters-en".
% Everything above is the preamble: document class, packages, and settings.

Expand Down Expand Up @@ -716,6 +716,10 @@
% The lscape package does not rotate the page either
\usepackage{pdflscape}

% Avoid float pages that are only partially filled: such floats are put back into the text flow.
% Source: https://ctan.org/pkg/fewerfloatpages
\usepackage{fewerfloatpages}

% Align floats to the top on float-only pages instead of vertically centering them.
% See http://tex.stackexchange.com/a/28565/9075
\makeatletter
Expand Down
8 changes: 6 additions & 2 deletions main-basic-listings-english.tex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
% !BIB program = biber
% -*- coding:utf-8 mod:LaTeX -*-
%
% vvvvvvvv The content starts in line 1021 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1131.
% vvvvvvvv The content starts in line 1025 (\begin{document}); the first
% chapter (\include{chapters-en/10 - introduction}) is included in line 1135.
% The chapters are in the directory "chapters-en".
% Everything above is the preamble: document class, packages, and settings.

Expand Down Expand Up @@ -714,6 +714,10 @@
% The lscape package does not rotate the page either
\usepackage{pdflscape}

% Avoid float pages that are only partially filled: such floats are put back into the text flow.
% Source: https://ctan.org/pkg/fewerfloatpages
\usepackage{fewerfloatpages}

% Align floats to the top on float-only pages instead of vertically centering them.
% See http://tex.stackexchange.com/a/28565/9075
\makeatletter
Expand Down
Loading
Loading