A reproducible academic poster template for the University of New Mexico, built
with Quarto, the Typst poster format, and
Python. Write your poster in plain markdown, generate every figure and table with
Python (matplotlib / pandas) at render time, and export a print-ready PDF in UNM brand
colors — Cherry (#BA0C2F) and Silver (#A7A8AA).
This template is a Python conversion and UNM re-style of
higgi13425/quarto_poster, which in turn
builds on the quarto-ext/poster
Typst format. See Attribution below.
- Pure Python workflow — code cells use the Jupyter engine (
{python}), no R required. - UNM branding out of the box — Cherry title block with a Silver border, Cherry section rules, and a Cherry footer, all driven by easy-to-change YAML options.
- Reproducible content — figures (matplotlib) and tables (pandas) are produced when you render, so they never drift out of sync with your data.
- Adaptive header — the title block automatically fills the width next to the UNM logo at any poster size. Add a second logo/image with one option.
- Print-ready PDF via Typst — fast, no LaTeX install needed (Typst ships with Quarto).
| Tool | Version | Notes |
|---|---|---|
| Quarto | ≥ 1.4 | Bundles Typst — no separate LaTeX/Typst install. |
| Python | ≥ 3.9 | Any recent CPython. |
| Python packages | — | jupyter, matplotlib, pandas, numpy. |
Install the Python dependencies:
pip install jupyter matplotlib pandas numpyFont note: the template asks for Open Sans and falls back to Helvetica/Arial if it isn't installed. For an exact match to UNM's web brand, install Open Sans (free). Any installed font name works in the
set text(font: …)line of the template.
-
Get the template — clone this repo (or click Use this template on GitHub):
git clone https://github.com/engineer-pat/quarto-poster-template.git cd quarto-poster-template -
Render it to confirm your setup works:
quarto render poster.qmd
This produces
poster.pdf. (In VS Code or RStudio with the Quarto extension, just click Render.) -
Edit
poster.qmd— change the YAML header (title, authors, size, colors) and replace the section prose and code cells with your own. -
Re-render and send
poster.pdfto your printer.
The top of poster.qmd controls everything about the layout:
format:
poster-typst:
size: "48x36" # width x height in INCHES
poster-authors: "First Author^1^, Second Author^1^"
departments: "^1^Department of …, University of New Mexico"
institution-logo: "./images/unm-logo.png"
num-columns: 3 # number of body columns
title-font-size: 64
font-size: 32 # body text size in pt- Superscripts in the author line use carets:
Author^1^. - Common US poster sizes:
36x24,48x36,60x30,72x36(landscapewidth x height). - For a portrait poster, just swap the numbers, e.g.
36x48.
Colors are plain hex strings (no leading #) and already default to UNM brand values:
header-color: "BA0C2F" # UNM Cherry — title block + section rules
header-text-color: "FFFFFF" # text inside the cherry blocks
accent-color: "A7A8AA" # UNM Silver — title-block border
footer-color: "BA0C2F" # footer bar| UNM color | Hex | Used for |
|---|---|---|
| Cherry | #BA0C2F |
Title block, section headings/rules, footer |
| Silver | #A7A8AA |
Title-block border |
| Turquoise | #007A86 |
Accent (used in the example plot) |
| Gray | #63666A |
Plot axes/labels |
footer-text: "UNM Research Symposium 2026" # left
footer-url: "https://github.com/you/repo" # center
footer-emails: "you@unm.edu" # rightThe body is ordinary Quarto markdown:
#starts a new section (level-1 heading, gets a cherry rule).##is a run-in subheading.- Bullets with
-, numbered lists with1.. **bold**,*italic*,~sub~,~~strike~~.- Inline math
$x^2$, display math$$ … $$(rendered by Typst).
Code cells run Python and embed their output. Caption and label come from cell options:
```{python}
#| label: fig-bars
#| fig-cap: "Mean outcome by treatment group."
#| fig-align: center
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 5))
ax.bar(["A", "B", "C"], [3, 4, 6], color="#BA0C2F")
plt.show()
```Reference it in text with @fig-bars. Code is hidden by default (echo: false in the
header); set echo: true to show it.
Two approaches are demonstrated in poster.qmd:
- Static markdown tables — write them by hand; caption with
: Caption {#tbl-id}. - Data-driven tables — a small
df_to_markdown()helper turns a pandas DataFrame into a markdown table inside an#| output: asiscell, so the table tracks your data. (This avoids the optionaltabulatedependency.)
Drop a colored Typst block anywhere for emphasis:
::: {.block fill=rgb("BA0C2F") inset="20pt" radius="8pt" stroke="2pt + rgb(\"A7A8AA\")"}
[**Key finding.** Your highlight here.]{style="color: white"}
:::Leave it off for a clean logo-+-title header, or add one to the right of the title:
institution-image: "./images/my-lab-logo.png"
univ-image-scale: 90
univ-image-column-size: 8quarto-poster-template/
├── poster.qmd # ← your poster (edit this)
├── images/
│ ├── unm-logo.png # UNM institutional logo
│ └── preview.png # rendered preview (for this README)
├── _extensions/
│ ├── quarto-ext/poster/ # Typst poster format (UNM-restyled)
│ ├── quarto-ext/fontawesome/ # optional: Font Awesome icons
│ └── jmbuhr/qrcode/ # optional: QR codes
├── README.md
└── LICENSE
The UNM styling lives in
_extensions/quarto-ext/poster/typst-template.typ
— edit the #let poster(...) defaults there to change fonts, spacing, or the default
brand colors for every poster.
- Iterate fast:
quarto preview poster.qmdopens a live-reloading preview. - Big posters render quickly because Typst is fast — re-render freely.
- Check at 100%: open
poster.pdfand zoom to 100% to judge real-world text size. - Vector figures: save matplotlib figures as SVG (
#| fig-format: svg) for crisp printing of line art.
- Poster format:
quarto-ext/posterby Carlos Scheidegger (MIT). - Original R-based academic poster: higgi13425/quarto_poster by Peter Higgins.
- This Python conversion and UNM re-style: maintained in this repository.
The University of New Mexico name, logo, and colors are trademarks of UNM. Use them in accordance with the UNM brand guidelines. This is an unofficial, community template and is not endorsed by the University.
Released under the MIT License — see LICENSE. The UNM logo in images/ is a
University trademark and is not covered by the MIT license.
