Giter VIP home page Giter VIP logo

latex-docker's Introduction

Latex docker container Docker hub

This container helps compiling latex sources without the need to install all latex packages on your system.

Why should I use this container?

  • Easy setup, compile immediately after image download
  • Preserves UID and GID of local user
  • Use container like local command: latexdockercmd.sh pdflatex main.tex
  • Multiple distributions like ubuntu's texlive-full to cover all needs

Versions

All versions are based on Ubuntu: (See all tags)

If you need...

  • ...the most-stuff-works-out-of-the-box package, try blang/latex:ubuntu.
  • ...the most recent version of everything, try blang/latex:ctanfull.
  • ...a stable base for your custom texlive build, try blang/latex:ctanbasic.

For stability, choose a more specific version tag (See all tags)

Quick Setup

Compile latex sources using docker:

# Change to your project
cd my_latex_project

# Download the command wrapper and make it executable
wget https://raw.githubusercontent.com/blang/latex-docker/master/latexdockercmd.sh
chmod +x latexdockercmd.sh

# Optional: Change the version (see above, default blang/latex:ubuntu)
edit ./latexdockercmd.sh

# Compile using pdflatex (docker will pull the image automatically)
./latexdockercmd.sh pdflatex main.tex

# Or use latexmk (best option)
./latexdockercmd.sh latexmk -cd -f -interaction=batchmode -pdf main.tex
# Cleanup: ./dockercmd.sh latexmk -c or -C

# Or make multiple passes (does not start container twice)
../latexdockercmd.sh /bin/sh -c "pdflatex main.tex && pdflatex main.tex"

Requirements

First, add your local user to docker group (should already be the case):

sudo usermod -aG docker YOURUSERNAME

The latexdockercmd.sh will use your current user and group id to compile.

Daemon setup

If you're working on source in latex, you might want to compile it multiple times and don't want to start a container each time.

cd my_latex_source

# Start a daemon container on this path, it accepts commands from latexdockerdaemoncmd.sh
latexdockerdaemon.sh

# Execute the command in the daemon container, only the daemon container is running
latexdockerdaemoncmd.sh pdflatex main.tex

# Stop the daemon
docker stop latex_daemon

Customize

If software is missing, extend this base image with your own software:

Create a Dockerfile or download Dockerfile.blueprint for examples:

FROM blang/latex:ubuntu

# Minted + Pygments
RUN tlmgr install minted

Build your custom image:

docker build -t mycustomlateximg .

Edit latexdockercmd.sh to use your image mycustomlateximg.

Latex Make

Clean build using latexmk:

mkdir compile
latexmk -cd -f -jobname=output -outdir=./compile -auxdir=./compile -interaction=batchmode -pdf ./main.tex

Use latexmkrc in your project root:

# Example: Make glossaries
add_cus_dep( 'glo', 'gls', 0, 'makeglo2gls' );
sub makeglo2gls {
    system("makeindex -s \"$_[0].ist\" -t \"$_[0].glg\" -o \"$_[0].gls\" \"$_[0].glo\"" );
}

CTAN Packages

A list of available ctan packages can be found here: http://mirror.ctan.org/systems/texlive/tlnet/archive

Install texlive packages:

RUN tlmgr install minted

Contribution

If the image is missing a package only specific for you, please don't open an issue or pull request but build your own image as described above. If a critical package is missing or you have a recipe for missing packages in a common scenario, please create an issue / PR on Dockerfile.blueprint.

License

See LICENSE file.

latex-docker's People

Contributors

alex-pl avatar blang avatar denisvm avatar jmewes avatar k00ni avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.