PDF Generation
WeasyPrint
Indico uses WeasyPrint to generate PDF files from Document templates. WeasyPrint generally works out of the box and does not require any setup.
Note
WeasyPrint uses fonts installed on the system to render the PDFs. If you are generating documents containing character sets like CJK (Chinese, Japanese, Korean), make sure to install the necessary fonts. Note that, the exact procedure to install new fonts depends on the distribution.
LaTeX
Indico uses LaTeX (xelatex to be exact) to generate some PDF files such as the Book of Abstracts and the PDF versions of contributions. If you do not need these features, you can skip this part of the documentation and avoid installing LaTeX altogether.
Warning
LaTeX is extremely powerful, and while Indico tries its best to sanitize LaTeX input to disarm any harmful statements, we cannot make any guarantees that all these usecases are covered. We strongly recommend not installing LaTeX on your system anymore, but instead running it inside a container.
If you absolutely insist on installing TeXLive system-wide, you probably need
a “full” version of TeXLive, often called texlive-full, texlive-scheme-full
or similar.
For the reasons mentioned in the warning above, we only support the containerized setup using Podman. Installing it is quite easy:
If you are on an RPM-based distribution (AlmaLinux, RockyLinux, RHEL), run this:
dnf install podman
If you are on a DEB-based distribution (Debian, Ubuntu), use this instead:
apt install podman
You then need to configure the Indico user to be able to run unprivileged containers.
It is recommended that you check /etc/subuid and /etc/subgid to avoid any
conflicts, but on a system that doesn’t run anything besides Indico it is extremely
unlikely to encounter conflicts. You can also edit that file directly and add a range
manually instead of using the usermod command below:
usermod indico --add-subuids 1000000-1065535 --add-subgids 1000000-1065535
loginctl enable-linger indico
Important
If (and only if) you are on Debian 12 (Bookworm), you need to run this command to avoid excessive disk space usage and performance issues as well (however, you should not be installing Indico on Debian 12 anymore, considering that it reaches end of life in June 2026):
cat >> /etc/containers/storage.conf <<'EOF'
[storage]
driver = "overlay"
EOF
After setting everything up it, add this line to your indico.conf file to enable
containerized LaTeX functionality:
XELATEX_PATH = 'podman'
You may then want to proactively pull the texlive container image; otherwise it is done on the fly the first time it’s needed which can make this request quite slow.
indico maint pull-latex-image
If you are in a production setup, restart uWSGI and Celery so the updatd config is actually used:
systemctl restart indico-celery.service indico-uwsgi.service
Tip
XELATEX_PATH also has some advanced options that allow specifying custom
container images etc. Most likely you do not need them, but check the linked
documentation page if you are interested.