Awesome
Docker image for texlive
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 texlive image by "Island of TeX" with additions concidered important.
Usage
Using docker
docker run --rm -it -v $(pwd):/workdir danteev/texlive latexmk -pdf 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 "bot@example.org"
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 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
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
Available tags
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.
Other versions
2021-A
- first image release in year 20212020-A
- latest TeXLive 2020 buildTL2017
- TeXLive 2017 build- For all other versions see CHANGELOG.md.
Usage example
docker run --rm -it -v $(pwd):/workdir danteev/texlive latexmk 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
Background
We decided to base on the official TeXLive image, because this ensures recent TeXLive packages and a working basic build. We extended the image with tools required for our use cases.
Development hints
- At a release, we point to a specific tag of the "upstream" Docker image.
To find out the lasest tag there, follow the instructions at https://gitlab.com/islandoftex/images/texlive/-/issues/9.
Search for
build:latest: [2021, no, no]
in the build jobs.no, no
means: no documentation and no source files.
Alternatives
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
License
- Google Inconsolata is licensed under OFL-1.1.
- IBM Plex™ is licensed under OFL-1.1.
- Luximono is licensed under the Bigelow & Holmes - Luxi License.
- pkgcheck is licensed under Apache-2.0 or MIT.
- The files in this repository are licensed under MIT.
- Each LaTeX package has its own license. Please check the respective package homepages at CTAN.