Paper-Videocover
Erzeugt ein Gemini/SUSTech 16:10-Cover aus einem Paper-Verzeichnis. Der Generator installiert die Ausgabe erst, nachdem sowohl die LaTeX-Kompilierung als auch die PNG-Konvertierung erfolgreich waren.
Paket und Einrichtung
Das installierte uv-Projekt befindet sich unter:
<SKILLS_DIR>/paper-video-cover
Es verwaltet seine Pillow-Abhängigkeit und enthält beide erforderlichen Designs:
<SKILLS_DIR>/paper-video-cover/templates/beamerthemegemini.sty
<SKILLS_DIR>/paper-video-cover/templates/beamercolorthemesustech.sty
LuaLaTeX und Poppler pdftoppm sind externe Werkzeuge. Beide müssen vor der Generierung verfügbar sein. Jedes Werkzeug wird in der folgenden Reihenfolge aufgelöst: explizites CLI-Flag, Umgebungsvariable LUALATEX oder PDFTOPPM, dann PATH. Ein ungültiger Überschreibungswert mit höherer Priorität ist fatal und wird nicht umgangen.
Ausführung
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>"
Standardausgabe ist <paper_dir>/poster. Wählen Sie ein anderes Verzeichnis mit:
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>" --output-dir "<output_dir>"
Optionen:
--data <json>: optionale JSON-Überschreibungen.--scheme <default|lab|bilibili>: SUSTech-Farbschema (Standarddefault; 实验室调研 verwendetbilibili, um zum Labor-Übersichtsdeck zu passen).--title-font <punkte>: Überschreibt die automatische Titelgröße.--output-dir <verzeichnis>: Endgültiges Ausgabeverzeichnis.--lualatex <pfad-oder-befehl>: Explizites LuaLaTeX-Executable.--pdftoppm <pfad-oder-befehl>: Explizitespdftoppm-Executable.
Die PNG-Generierung ist obligatorisch; eine erfolgreiche Ausgabe enthält nicht leere poster.tex, poster.pdf und poster.png sowie kopierte Designs und konvertierte Abbildungen. Der Build erfolgt in einem temporären Verzeichnis, sodass ein fehlgeschlagener Build keine vorhandene endgültige Ausgabe ersetzt.
Labor-Übersichts-Postergenerator (实验室调研, generate_lab_poster.py)
Für 实验室调研-Übersichten verwenden Sie scripts/generate_lab_poster.py anstelle des generischen Pfads – es füllt die Poster-Vorlage des Repositorys (<TEMPLATE_DIR>/main_template_lab_poster.tex, Quelle der Wahrheit; Sicherungskopie in templates/) mit dem DECK-Format des Abschnittstrenners für 可视化分析: randlos slides-beamer/figures/background.png (ERFORDERLICH – fatal, wenn nicht vorhanden; falls das Deck keins hat, erstellen Sie es mit paper-group-to-beamer/scripts/gen_viz_background.py --survey-dir "<LAB_DIR>") + VIER weiße abgerundete Schattenboxen (Zeilen): 实验室调研+Datum-Paar / Institutsblock (Markenfarbe-Augenbraue + englische Zeile) / Prof.-Name / title_2+title_3 mit Betonungsregel. KEINE Metrikzeile, KEINE Beschreibung, KEINE Labornamenszeile.
HINWEIS (Standardänderung 2026-08-07): Das Poster ist das ERFORDERLICHE ARTEFAKT für Laborverzeichnisse (der Uploader schlägt ohne Poster/poster.png fehl), aber das Bilibili-UPLOAD-COVER standardmäßig auf die ERSTE FOLIE des Decks (video/cover.png) – kopieren Sie NICHT das Poster über video/cover.png; behalten Sie den Slide-001-Render der Pipeline bei. Siehe lab-survey-to-bilibili-runbook.
uv run --project "<SKILLS_DIR>/paper-video-cover" \
"<SKILLS_DIR>/paper-video-cover/scripts/generate_lab_poster.py" \
"<LAB_DIR>" --data "<LAB_DIR>/poster_data.json"
--data JSON: title_1_pi ist ERFORDERLICH (≤30 Zeichen). Namenskonvention: 中文名 PI → xxx教授 (z. B. 李飞飞教授, 刘华平教授); Nicht-Professoren-Rollen ohne Prof./教授 (z. B. Sergey Levine 等联合创始人); Englischer Name Professor → Prof. First Last (z. B. Prof. Yann LeCun). title_1_uni optional (Breitenbudget 40 Einheiten, CJK-Glyphe = 2 Einheiten, andere = 1, z. B. 纽约大学 = 8, Physical Intelligence = 21; leer → Zeile weggelassen), title_1_uni_color optional (#RRGGBB – die LOGO-Markenfarbe des Instituts, z. B. NYU 57068B, Stanford 8C1515, CMU C41230, Berkeley 003262, Tsinghua 660874, SUSTech 2C5F7C, HKUST 003366; Institute ohne Markenfarbe standardmäßig schwarz 000000), title_1_uni_en optional (≤40 Zeichen, z. B. NEW YORK UNIVERSITY) – der Titelblock rendert die Universität als eine Augenbraue in Institutsmarkenfarbe (25pt halbfett in title_1_uni_color, 0.25em CJK-Tracking automatisch vom Generator eingefügt, Seitenstriche 80×3px bei 50% der Markenfarbe), die englische kleine Zeile (13pt #8A8F98), dann den Prof.-Namen (55pt pink fett, einzelne Zeile). title_2/title_3 optional (Breitenbudget jeweils 30 Einheiten, z. B. 从卷积网络到世界模型 = 18, IEEE Fellow 2026 = 15; leere Teile lassen ihre Zeile weg). date (optional, Standard heute) füllt den Datumsblock. Korpusstatistiken aus papers.json dienen nur zu Informationszwecken – eine fehlende Datei wird mit einer Warnung herabgestuft, führt aber niemals zum Abbruch des Laufs. KEINE Labornamenszeile, KEINE Beschreibungszeile, KEINE Metrikzeile und KEINE ·-Trennzeichen. Beispiel: title_1_uni="纽约大学", title_1_uni_en="NEW YORK UNIVERSITY", title_1_pi="Prof. Yann LeCun", title_2="从卷积网络到世界模型", title_3="图灵奖得主的40年深度学习谱系". Der Upload-Titel in video_meta.json behält unabhängig davon das volle Format {Institutionskürzel} {PI-Name}教授:Thema — Hook bei. Poster-Layout (tikz abgerundete Boxen mit Schlagschatten über dem 可视化分析-Hintergrund des Decks): VIER Zeilen in einem 0.6971\textwidth-Container, absolut zentriert auf der Seite (feste obere 0.107\textheight / untere 0.103\textheight-Versätze; Stapel ≈ 77% der Seite): Zeile 1 = 实验室调研 + 〈DATE〉-Paar (0.3092\textwidth Textbreite jeweils, 32pt, Höhe 0.1250\textheight); Zeile 2 = Institutsblock – NYU lila Augenbraue (25pt halbfett, Seitenstriche) + englische Zeile 13pt (0.6706\textwidth, Höhe 0.1250\textheight); Zeile 3 = Prof.-Namenblock (55pt pink fett einzelne Zeile, 0.6706\textwidth, Höhe 0.1806\textheight); Zeile 4 = title_2/title_3 + Regel bei 37pt (Höhe 0.2153\textheight). Abstände: horizontal 0.0258\textwidth / vertikal 0.0417\textheight (60 px in beide Richtungen auf der 2324×1440 Referenzleinwand). --scheme Standard bilibili (zum Deck passend); --template/--theme-dir überschreiben die Repository-Pfade (das Deck sustech-theme wird in den Build kopiert). Token-Vertrag (fatal, wenn nicht auf Codezeilen ersetzt): 〈DATE〉〈TITLE1UNI〉〈TITLE1UNIEN〉〈TITLE1PI〉〈TITLE2〉〈TITLE3〉. Kompiliert mit xelatex (zwei Durchläufe; das Deck-Design ist nur für xelatex) und rendert poster.png bei 300 dpi (32×20 cm Seite → ~3780×2363 px); Ausgabe <LAB_DIR>/poster/.
Fallstrick – Leerzeichen in großem Titeltext: TikZ-Knoten + \fontsize{72}{84} unter dem sustech-Design lassen Wortzwischenräume weg (sogar \ ); der Generator wandelt daher einfache Leerzeichen in title_1/2/3 in \hspace{0.25em}-Kleber um (überprüft via pdftotext: NYU Prof. Yann LeCun behält seine Leerzeichen).
Fallstrick – Zeilenzentrierung und Blockbreiten: (1) Ein \hbox to \containerwidth ist KEINE Absatzzeile und \centering wird es nicht zentrieren – Zeilen müssen \hbox to \textwidth{\hss … \hss} sein, damit der Inhalt innerhalb der vollen Zeile zentriert wird. (2) tikz text width mit einem \dimexpr-basierten Makro kann Dimension too large auf dem 32 cm Papier auslösen – verwenden Sie literale Breiten (z. B. 0.44\textwidth). (3) Die äußere Breite eines tikz-Knotens = text width + 2×inner sep – subtrahieren Sie den sep-Abstand von den Breitenmakros, sodass die Boxkanten genau auf dem Container landen.
Fallstrick – Randloser Hintergrund: Die Poster-Geometrie MUSS \geometry{papersize={32cm,20cm},margin=0cm} sein. Jeder positive Rand versetzt den Ursprung der beamer-Hintergrundleinwand an die obere Kante des Textbereichs, was einen weißen Streifen oben erzeugt (~1,1 cm für margin=1.1cm) und die Oberkante des Hintergrundbilds abschneidet. Überprüfen Sie nach jedem Poster-Build: Die oberen/unteren 3%-Zeilen von poster.png müssen ~0 weiße Pixel aufweisen (PIL-Scan).
Labor-Übersichts-Poster (实验室调研)
Chinesische Titel werden unterstützt (die generierte Präambel lädt ctex; der beamer-Titel-Fallback entfernt CJK nicht mehr). Der Postertitel folgt dem Upload-Titel-Format {Institutionskürzel} {PI-Name}教授:Thema — Hook (z. B. NYU 杨立昆教授:从卷积网络到世界模型 — 图灵奖得主的40年深度学习谱系 / 清华刘华平教授:机器人具身智能 — 从视触觉到操作学习). Ausführen mit --scheme bilibili und einem --data JSON:
{
"title_1_uni": "纽约大学",
"title_1_uni_en": "NEW YORK UNIVERSITY",
"title_1_uni_color": "57068B",
"title_1_pi": "Prof. Yann LeCun",
"title_2": "从卷积网络到世界模型",
"title_3": "图灵奖得主的40年深度学习谱系",
"date": "2026-08-06"
}
Die Quelle der Wahrheit für die Palette ist <TEMPLATE_DIR>/sustech-theme/beamercolorthemesustech.sty (Standard blau / Labor rot / bilibili pink); das Deck-Design wird in den Build kopiert und der Frame wird unter xelatex kompiliert (die Engine des Decks). Der Hintergrund slides-beamer/figures/background.png muss vorhanden sein (der 可视化分析-Trennerhintergrund des Decks) – der Generator schlägt ohne ihn fehl.
Beispiel mit expliziten Werkzeugen:
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>" `
--lualatex "C:/path/to/lualatex.exe" `
--pdftoppm "C:/path/to/pdftoppm.exe"
Beispiel mit Umgebungskonfiguration:
$env:LUALATEX = "C:/path/to/lualatex.exe"
$env:PDFTOPPM = "C:/path/to/pdftoppm.exe"
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>"
Eingaben
Der Generator extrahiert Titel, Konferenzort, Projekt-URL, Abbildungen und Metriken aus der ersten MinerU-Markdown-Datei unter md_output/*/auto/. Wenn die beschriftungsbasierte Extraktion keine Abbildungen findet, durchsucht er slides-beamer/figures/, paper-source/image/, source/image/, Figures/, dann md_output/*/auto/images/.
PNG-, JPEG- und PDF-Quellen werden unterstützt. PDFs verwenden das aufgelöste pdftoppm. Fehlende, nicht unterstützte, leere oder nicht konvertierbare referenzierte Abbildungen sind fatal.
Alle JSON-Felder sind optional. figure_map-Pfade sind absolut oder relativ zum Paper-Verzeichnis:
{
"title": "Override Title",
"venue": "CVPR 2025",
"title_font": 220,
"cards_col1": [],
"cards_col2": [],
"figures": {"col1": ["fig1"], "col2": ["fig2"]},
"figure_map": {
"fig1": "md_output/1234.5678/auto/images/figure-1.png"
}
}
Batch
Verwenden Sie eine UTF-8-Datei mit einem Paper-Verzeichnis pro Zeile; start und count sind optionale Positionsargumente:
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/batch_generate.py" `
"<papers_file>" 0 20
Der Batch verwendet den uv-ausgewählten Interpreter, erfordert alle drei Artefakte für jedes Paper und gibt einen Fehlercode ungleich Null zurück, wenn ein Element fehlschlägt.
Fehlerverhalten
Der Generator gibt einen Fehlercode ungleich Null zurück, wenn ein erforderliches ausführbares Programm oder ein paketiertes Design fehlt, ein Unterbefehl einen Fehlercode ungleich Null zurückgibt oder ein erforderliches Artefakt fehlt oder leer ist. Behandeln Sie jeden von Null abweichenden Rückgabewert als Nichtveröffentlichung; der fehlgeschlagene temporäre Build wird entfernt und die vorherige endgültige Ausgabe bleibt unverändert.
Verwandte Fähigkeiten
- skill://lab-survey-to-bilibili-runbook
- skill://paper-group-to-beamer
- skill://lab-poster-deck-format
- skill://paper-bilibili-uploader
- skill://paper-lab-survey-to-bilibili
- skill://paper-to-bilibili