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
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.
tcbposter Layout Rules (Critical)
⚠️ The #1 cause of poster failures is content overflow. tcbposter uses a fixed grid — content that exceeds the box is silently clipped with no compilation error. You will NOT see any warning; the poster will simply be cut off.
⚠️ The #2 cause is large whitespace gaps. Using too few rows (e.g.,
rows=5) creates ~168mm per row on A0 landscape. If title text only needs 120mm, the remaining 48mm is wasted whitespace. Solution: userows=20for fine-grained control (~42mm per row).
Grid System: rows=20 (Critical)
Use rows=20 for A0 landscape. Each row ≈ 42mm, giving precise control over section heights.
Recommended row allocation for 4-column A0 landscape:
| Section | Rows | Height | Row range |
|---|---|---|---|
| Title bar | 3 | ~126mm | top to row4 |
| Stat banner | 2 | ~84mm | row4 to row6 |
| Body content | 14 | ~588mm | row6 to bottom |
Key principle: Always use between=rowN and rowM syntax (not below=name) for precise vertical placement. The below= syntax lets tcolorbox auto-place, which often leaves unwanted gaps.
Row Count Guidance
| Poster Size | Orientation | Recommended rows | Columns | Row height |
|---|---|---|---|---|
| A0 | landscape | 20 | 4 | ~42mm |
| A0 | portrait | 20 | 3 | ~59mm |
| A1 | landscape | 16 | 3 | ~37mm |
| A1 | portrait | 20 | 2 | ~30mm |
Portrait A0 Layout (3 columns, rows=20)
⚠️ Portrait A0 posters use 2-3 columns, NEVER 4. Research consensus: "Two columns is typical for a poster with a portrait orientation" (Colin Purrington, NYU poster guides). At 841mm width, 4 columns give only ~195mm per column — too narrow for readable text at poster-session distance. 3 columns (~260mm each) is the recommended default for content-rich papers. Use 2 columns for simpler posters or when figures need more horizontal space.
For portrait posters (841x1189mm), use a 3-column, 3-row-band layout:
| Section | Rows | Row range | Content |
|---|---|---|---|
| Title bar | 4 | top to row4 | Title + authors + venue (span=3) |
| Stat banner | 2 | row4 to row6 | 3 headline stat callouts (span=3) |
| Row A | 5 | row6 to row11 | Background+Motivation, Method (hero fig), Key Results (fig) |
| Row B | 5 | row11 to row16 | Contributions, Equations+Ablation, Result 2 (fig+table) |
| Row C | 4 | row16 to bottom | References+QR, Setup+Benchmarks, Key Takeaways |
3-column portrait layout diagram:
┌─────────────────────────────────────┐
│