Paper Poster: From Paper to Conference Poster
Generate a conference poster from: $ARGUMENTS
Context
This skill runs after Workflow 3 (/paper-writing). It takes a compiled paper and generates a print-ready poster for conference poster sessions. The poster extracts key content from the paper — it does not dump the full paper text onto a poster.
Unlike papers (dense prose, 8-15 pages), posters are visual-first: one page, 4 columns, bullet points only, figures dominant. A good poster tells the story in 60 seconds.
Constants
- VENUE =
NeurIPS— Target venue, determines color scheme. Supported:NeurIPS,ICML,ICLR,AAAI,ACL,EMNLP,CVPR,ECCV,GENERIC. Override via argument (e.g.,/paper-poster "— venue: ICML"). - POSTER_SIZE =
A0— Paper size. Options:A0(841x1189mm, default),A1(594x841mm). - ORIENTATION =
landscape— Orientation. Options:landscape(default),portrait. - COLUMNS = 4 — Number of content columns. Typical: 4 for landscape A0 (IMRAD), 3 for portrait A0 (research consensus), 2 for portrait A1. Portrait A0 should NEVER use 4 columns — text becomes too narrow and unreadable.
- PAPER_DIR =
paper/— Directory containing the compiled paper (main.tex + figures/). - OUTPUT_DIR =
poster/— Output directory for all poster files. - REVIEWER_MODEL =
gpt-5.5— Model used via Codex MCP for poster review. - AUTO_PROCEED = false — At each checkpoint, always wait for explicit user confirmation. Set
trueonly if user explicitly requests fully autonomous mode. - COMPILER =
latexmk— LaTeX build tool. - ENGINE =
pdflatex— LaTeX engine. Usexelatexfor CJK text.
💡 Override:
/paper-poster "paper/" — venue: CVPR, size: A1, orientation: portrait, columns: 3
Optional: Style reference (— style-ref: <source>, opt-in)
Lets the user steer the poster's structural layout (panel-to-text ratio, figure density, caption length) toward a reference paper. Default OFF — when the user does not pass — style-ref, do nothing differently from before.
Only when — style-ref: <source> appears in $ARGUMENTS, run the helper FIRST:
# Resolve $STYLE_HELPER via the canonical strict-safe chain (see
# shared-references/integration-contract.md §2). Policy A — gate:
# unresolved helper means --style-ref cannot be satisfied, so abort.
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
STYLE_HELPER=".aris/tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || STYLE_HELPER="tools/extract_paper_style.py"
[ -f "$STYLE_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && STYLE_HELPER="$ARIS_REPO/tools/extract_paper_style.py"; }
[ -f "$STYLE_HELPER" ] || {
echo "ERROR: extract_paper_style.py not resolved at .aris/tools/, tools/, or \$ARIS_REPO/tools/." >&2
echo " Fix: rerun bash tools/install_aris.sh, export ARIS_REPO, or copy the helper to tools/." >&2
echo " --style-ref cannot be satisfied; aborting." >&2
exit 1
}
STYLE_STATUS=0
CACHE=$(python3 "$STYLE_HELPER" --source "<source>") || STYLE_STATUS=$?
case "$STYLE_STATUS" in
0) ;; # use $CACHE/style_profile.md as structural guidance
2) echo "warning: style-ref skipped (missing optional dep)" >&2 ;;
3) echo "error: --style-ref source failed; aborting poster" >&2 ; exit 1 ;;
*) echo "error: helper failed unexpectedly; aborting poster" >&2 ; exit 1 ;;
esac
Sources accepted: local TeX dir / file, local PDF, arXiv id, http(s) URL. Overleaf URLs/IDs are rejected — clone via /overleaf-sync setup <id> first and pass the local clone path.
Strict rules (full contract in tools/extract_paper_style.py docstring):
- Use
style_profile.mdto align figure-to-text ratio, caption length tendency, and paragraph density. Venue color scheme and column count above still take precedence —--style-refonly refines density tendencies. - Never copy poster content, design elements, slogans, or section names verbatim from anything reachable through the cache.
- Never pass
— style-ref(or the cache contents) to the GPT-5.5 reviewer sub-agent — the reviewer must judge the poster's clarity on its own merits.
Venue Color Schemes
Use deep, saturated colors for primary — pastel/light colors wash out on large posters viewed from distance. Each venue uses a 3-color system: primary (dark, for title bar), secondary (medium, for section headers), accent (contrast, for highlights).
| Venue | Primary | Secondary | Accent | Background | Text |
|---|---|---|---|---|---|
| NeurIPS | #4C1D95 (deep purple) | #6D28D9 (purple) | #2563EB (blue) | #F5F3FF | #1F2937 |
| ICML | #7F1D1D (deep maroon) | #B91C1C (red) | #1E40AF (blue) | #EDD5D5 | #111827 |
| ICLR | #065F46 (deep green) | #059669 (green) | #0284C7 (blue) | #F0FDF4 | #1F2937 |
| CVPR | #1E3A8A (deep blue) | #2563EB (blue) | #7C3AED (purple) | #F8FAFC | #1F2937 |
| AAAI | #0C4A6E (deep navy) | #0369A1 (blue) | #DC2626 (red) | #F0F9FF | #1F2937 |
| ACL | #155E75 (deep teal) | #0891B2 (teal) | #7C3AED (purple) | #F0FDFA | #1F2937 |
| EMNLP | #713F12 (deep amber) | #D97706 (amber) | #2563EB (blue) | #FFFBEB | #1F2937 |
| ECCV | #701A75 (deep fuchsia) | #C026D3 (fuchsia) | #0891B2 (teal) | #FDF4FF | #1F2937 |
| GENERIC | #1E293B (deep slate) | #334155 (slate) | #2563EB (blue) | #F8FAFC | #1F2937 |
⚠️ Color lesson: Never use light/pastel colors (e.g.,
#8B5CF6) as primary — they look washed out on A0 posters. Always use the darkest shade as primary for the title bar.
State Persistence (Compact Recovery)
Poster generation can be long. Persist state to poster/POSTER_STATE.json after each phase:
{
"phase": 3,
"venue": "NeurIPS",
"poster_size": "A0",
"orientation": "landscape",
"columns": 4,
"figures_selected": ["architecture.pdf", "results.pdf"],
"codex_thread_id": "019cfcf4-...",
"status": "in_progress",
"timestamp": "2026-03-18T15:00:00"
}
On startup: if POSTER_STATE.json exists with "status": "in_progress" and within 24h → resume from saved phase. Otherwise → fresh start.
Critical LaTeX Architecture Decisions
⚠️ MUST use
articleclass, NEVERbeamerclass. The beamer class consumes too many TeX grouping levels for its overlay/mode system. Combined with tcbposter'senhancedstyle on 8+ posterboxes, this triggers! TeX capacity exceeded, sorry [grouping levels=255]. The article class + geometry package for custom page size is the correct approach. This was validated through 5 failed compilation attempts with beamer before switching to article.
⚠️ NEVER use
adjustboxpackage. It may not be installed in minimal TeX distributions. Use plain\includegraphics[width=0.96\linewidth]{file}instead. Do NOT usemax heightoption (requires adjustbox).
Template Foundation
\documentclass{article}
% A0 landscape: paperwidth=1189mm,paperheight=841mm
% A0 portrait: paperwidth=841mm,paperheight=1189mm
\usepackage[paperwidth=1189mm,paperheight=841mm,margin=0mm]{geometry}
\usepackage{tcolorbox}
\tcbuselibrary{poster,skins,fitting}
\usepackage{graphicx}
\usepackage{amsmath,amssymb}
\usepackage{enumitem}
\usepackage[table]{xcolor} % MUST use [table] option for \rowcolor in tables
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\pagestyle{empty}
⚠️ NEVER use
\usepackage[most]{tcolorbox}— it pulls inlistingsutf8.stywhich may not be installed. Always use\tcbuselibrary{poster,skins,fitting}explicitly.
⚠️ Use
[table]{xcolor}not plain{xcolor}— needed for\rowcolorin benchmark tables. Thecolortblpackage is loaded automatically by this option.