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 true only if user explicitly requests fully autonomous mode.
  • COMPILER = latexmk — LaTeX build tool.
  • ENGINE = pdflatex — LaTeX engine. Use xelatex for 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.md to align figure-to-text ratio, caption length tendency, and paragraph density. Venue color scheme and column count above still take precedence — --style-ref only 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).

VenuePrimarySecondaryAccentBackgroundText
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 article class, NEVER beamer class. The beamer class consumes too many TeX grouping levels for its overlay/mode system. Combined with tcbposter's enhanced style 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 adjustbox package. It may not be installed in minimal TeX distributions. Use plain \includegraphics[width=0.96\linewidth]{file} instead. Do NOT use max height option (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 in listingsutf8.sty which may not be installed. Always use \tcbuselibrary{poster,skins,fitting} explicitly.

⚠️ Use [table]{xcolor} not plain {xcolor} — needed for \rowcolor in benchmark tables. The colortbl package 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: use rows=20 for 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 | |--------

同一分类的其他项