Skip to content

dante-ev/docker-texlive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker image for texlive License: MIT

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
    • pygments. This enables the usage of the minted package for source code highlighting.
    • pip. This enables manual Python package installation.
  • 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

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 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 2021
  • 2020-A - latest TeXLive 2020 build
  • TL2017 - 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:

License