- Notifications
You must be signed in to change notification settings - Fork23
🐳 A simple docker image for pandoc with filters, templates, fonts, and the latex bazaar
License
dalibo/pandocker
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A simple docker image for pandoc withfilters,templates,fonts andadditional tools.
Download the image with:
docker pull dalibo/pandocker:stable
Whenever a new stable version is released, launch that command again to refreshyour image.
Rundalibo/pandocker
with regularpandoc
args. Mount your files at/pandoc
.
docker run --rm -u `id -u`:`id -g` -v `pwd`:/pandoc dalibo/pandocker README.md -o README.pdf
Notes about the docker options:
- The
-v ...
option will mount the current folder as the/pandoc
directoryinside the container. If SELinux is enabled on your system, you might need toadd the--privileged
tag to force access to the mouting points. For moredetails, read the documentation aboutdocker runtime privileges.
The
--rm
option destroys the container once the document is produced.This is not mandatory but it's a good practice.The
-u
option ensures that the output files will belong to you.Again this is not necessary but it's useful.
Tip: You can define a shell alias to use
pandocker
just likepandoc
.Add this to your~/.bashrc
:
alias pandoc="docker run --rm -u `id -u`:`id -g` -v `pwd`:/pandoc dalibo/pandocker:stable"pandoc README.md -o README.epub
Alternatively, you can use a pipe like this:
cat foo.md | docker run --rm -i dalibo/pandocker -t pdf > foo.pdf
This method will not work if the source document contains images or includes...
We're shipping a selection of latex templates inside the image so that youcan produce nice PDF documents without installing anything.
So far, we provide the 3 templates below:
- eisvogel is designed for lecture notes and exercises with a focus on computerscience. It works with
pdflatex
andxelatex
. - easy templates is a collection of HTML templates
You can use them simply by adding--template=xxx
to your compilationlines:
docker run [...] --pdf-engine=xelatex --template=eisvogel foo.md -o foo.pdf
Each template has specific variables that you can use to adapt the document.Please go the project page of each template for more details.
This docker image embeds a number of usefull pandoc filters. You can simplyenable them by adding the option--filter xxx
wherexxx
is the name ofone of the following filters below:
- [panda] : Multi-purpose Lua filter
- pandoc-citeproc : manage bibliographies and citations
- pandoc-codeblock-include : insert an external file into a codeblock
- pandoc-cover : Add a PDF cover based on an SVG template
- pandoc-include : insert external markdown files into the main document
- pandoc-latex-admonition : adding admonitions on specific DIVs
- pandoc-latex-barcode : insert barcodes and QRcodes in documents
- pandoc-latex-color : Add colors to your PDF documents !
- pandoc-latex-environment : adding LaTeX environments on specific DIVs
- pandoc-latex-fontsize : Change size of a specific section of the document
- pandoc-latex-margin : Resize the margins of your PDF documents
- pandoc-latex-newpage : Convert horizontal rule to new page in LaTeX
- pandoc-mustache : basic variables substitution
- pandoc-crossref : support for cross-referencing sections, figures, and more
- pandoc-run-postgres : Execute SQL queries inside a markdown document
- pandoc-jinja : Render pandoc metadata inside the document itself
NOTE: By default when using thepandoc-include filter, the path to targetfiles is relative to the/pandoc
mountpoint. For instance,the!include [foo/bar.md]
statement will look for a/pandoc/foo/bar.md
file.You can use the docker arg--workdir="some/place/elsewhere"
to specifyanother location. The same principle applies to thepandoc-codeblock-includeandpandoc-mustache filters.
The pandocker image includes the following open-source fonts:
- Deja Vu:https://dejavu-fonts.github.io/
- Lato:https://fonts.google.com/specimen/Lato
- Liberation:https://github.com/liberationfonts/liberation-fonts
- Fontawesome:https://fontawesome.com/
The full variant includes
The image is available in 4 versions named as follows:
latest
(default): minimal image containing the most recent changesstable
: minimal image based on the latest stable releaselatest-full
(default): complete image containing the most recent changesstable-full
: complete image based on the latest stable release
You can also the release names for instance
docker pull dalibo/pandocker:24.05
the previous versions add more complex tags such aslatest-ubuntu-extra
orstable-buster
. They are not supported anymore.
Usemake
ordocker build .
The docker image embeds additional software related to editing and publishing:
- dia a simple tool to design diagrams
- poppler-utils a collection of tools built to manage PDF and extract content
- rsync for deployment
These tools can be called by modifying the entrypoint of the image. For instance,you can convert adia
source file into an SVG image like this:
docker run [..] --entrypoint dia dalibo/pandocker foo.dia -e foo.svg
When using pandocker, you may encounter the following error message:
$ docker run --rm -u `id -u`:`id -g` -v `pwd`:/pandoc dalibo/pandocker foo.mdpandoc: "filename": openBinaryFile: does not exist (No such file or directory)
This means that docker could not mount the local directory as a volume andtherefore pandoc cannot see the filefoo.md
inside the container. There mightbe several reasons for that, here a few ideas to try:
Add
--privileged
option to the pandocker command line. Read more aboutthisdocker privileged mode here :https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilitiesCheck if you haveSELinux enforced on you system, with the command below:
sestatus
If theSELinux mode isenforced
, you can try to lower it topermissive
.
More info aboutSELinux here:https://fedoraproject.org/wiki/SELinux_FAQ
About
🐳 A simple docker image for pandoc with filters, templates, fonts, and the latex bazaar