Skip to content

dante-ev/docker-texlive

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.
  • git-latexdiff - to enable diffs of LaTeX documents
  • 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 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 explcit 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