Claude Code Skills · 论文 · 演讲与海报
paper-poster
Generate a conference poster (article + tcbposter LaTeX → A0/A1 PDF + editable PPTX + SVG) from a compiled paper. Use when user says "做海报", "制作海报", "conference poster", "make poster", "生成poster", "poster session", or wants to create a poster for a conference presentation.
- Repo
Chanw-research/claude-code-paper-writing- Slug
paper-poster
SKILL.md
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.4— 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:
if [ ! -f tools/extract_paper_style.py ]; then
echo "error: tools/extract_paper_style.py not found — re-run 'bash tools/install_aris.sh' to refresh the '.aris/tools' symlink (added in #174), or copy the helper manually from the ARIS repo" >&2
exit 1
fi
CACHE=$(python3 tools/extract_paper_style.py --source "<source>")
case $? 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.4 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.
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 | |--------
同一分类的其他项