This docker image supports full TeX Live with following additions:
- Gnuplot
- GraphViz
- Inkscape
- latexmk - an automator for latex building
- Pandoc - to convert from and to
.tex
- Python
- Java headless - required for Pandoc
It builds on the full TeX Live image by "Island of TeX" with additions considered important.
We decided to base on the IoT's TeX Live image, because this ensures recent TeX Live packages and a working basic build. We extended the image with tools required for our use cases.
edge
- the edge build. Usually created on the first and fifteenth of a month.latest
- the latest released version.YYYY-MM-DD
- a build of that date. Usually created on the first and fifteenth of a month.
Browse all available tags at https://hub.docker.com/repository/docker/danteev/texlive/tags?page=1&ordering=last_updated.
2021-A
- first image release in year 20212020-A
- latest TeXLive 2020 buildTL2017
- TeXLive 2017 build- For all other versions see CHANGELOG.md.
docker run --rm -it -v $(pwd):/workdir danteev/texlive latexmk -pdf document.tex
In case you want to use an explicit tag, you can do it as follows:
You can run the build of 2021-05-15 by using the tag 2021-05-15
:
docker run --rm -it -v $(pwd):/workdir danteev/texlive:2021-05-15 latexmk document.tex
Usage in GitHub Workflows
Create a file .github/workflows/build.yml
with following content:
name: Build
on: [push]
jobs:
build_latex:
runs-on: ubuntu-latest
steps:
- name: Set up Git repository
uses: actions/checkout@v2
- name: Compile document.tex
uses: dante-ev/latex-action@edge
with:
root_file: document.tex
See dante-ev/latex-action for documentation on the different with
options available.
You can also use it with multiple files as outlined here:
❯ tree
.
├── motivation_letter.pdf
├── master_degree.pdf
├── README.md
├── master_degree
│ ├── master_degree.sty
│ └── master_degree.tex
└── motivation_letter
├── motivation_letter.bib
└── motivation_letter.tex
Following custom compilation script compiles all PDFs:
name: Build
on:
push:
paths-ignore:
- '*.pdf'
jobs:
build_latex:
runs-on: ubuntu-latest
container:
image: danteev/texlive:latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build LaTeX
run: |
for project in $(ls); do
if [ -d "$project" ]; then
cd ${project}
latexmk -synctex=1 -interaction=nonstopmode -file-line-error -pdf -outdir=$PWD/../ $PWD/${project}
cd ..
fi
done
One can push the results using following example:
- name: Publish LaTeX
run : |
git config --global user.email "[email protected]"
git config --global user.name "BOT_WORKFLOW"
git add -f $PWD/*.pdf
git commit -m "WORKFLOW_COMMIT - Update PDFs [skip ci]"
git push
Alternatively, you can use the GitHub push action to push something.
Usage in GitLab CI
Create file .gitlab-ci.yml
with following content:
build:
image: danteev/texlive
stage: build
script:
- latexmk -pdf document.tex
artifacts:
paths:
- document.pdf
Usage in CircleCI 2.0
Create file .circle/config.yml
with following content:
version: 2
jobs:
build:
docker:
- image: danteev/texlive
steps:
- checkout
- run: latexmk -pdf document.tex
Usage in Travis CI
Create file .travis.yml
with following content:
dist: bionic
language: generic
services: docker
script:
- docker run --rm -it -v $(pwd):/workdir danteev/texlive latexmk -pdf document.tex
At a release, we point to a specific tag of the "upstream" Docker image.
To find out the latest tag, navigate to https://gitlab.com/islandoftex/images/texlive/-/jobs.
Then look for build:latest
and then [no, no, full]
.
no, no
means: no documentation and no source files.
Open the build log, scroll down to the end, there you will find something like registry.gitlab.com/islandoftex/images/texlive:TL2024-2024-08-11-full
.
More background information is given at https://gitlab.com/islandoftex/images/texlive/-/issues/9.
sed -i 's/^ \(.*\) && \\$/ RUN \1/' Dockerfile
sed -i 's/^ RUN \(.*\)/ \1 \&\& \\/' Dockerfile
- To see all progress during the build, use
docker build --progress=plain .
. [Source] - The TOC in the
CHANGELOG.md
file is generated by using https://luciopaiva.com/markdown-toc/.
In case this all-in-one image is too large for you, you might be interested in following images:
- VS.Code DevContainer - contains a ready-to-start VS Code environment.
- Official texlive image - contains plain full TeXLive without additional tooling
- docker-texlive-thin - other packages and tools
- texlive-docker by @reitzig - profile-based TeXLive image
- Google Inconsolata is licensed under OFL-1.1.
- The files in this repository are licensed under MIT.
- Each LaTeX package has its own license. Please check the respective package homepages at CTAN.