ペーパービデオカバー
論文ディレクトリからGemini/SUSTech 16:10カバーを生成します。生成プログラムは、LaTeXコンパイルとPNG変換の両方が成功した場合にのみ出力をインストールします。
パッケージとセットアップ
インストールされるuvプロジェクトは以下の通りです:
<SKILLS_DIR>/paper-video-cover
これはPillow依存関係を管理し、必要な両方のテーマを含みます:
<SKILLS_DIR>/paper-video-cover/templates/beamerthemegemini.sty
<SKILLS_DIR>/paper-video-cover/templates/beamercolorthemesustech.sty
LuaLaTeXとPopplerのpdftoppmは外部ツールです。生成前に両方が解決されている必要があります。各ツールは、明示的なCLIフラグ、LUALATEXまたはPDFTOPPM環境変数、PATHの順に解決されます。優先度の高い無効なオーバーライドは致命的であり、バイパスされません。
実行
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>"
デフォルト出力は<paper_dir>/posterです。別のディレクトリを選択するには:
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
"<paper_dir>" --output-dir "<output_dir>"
オプション:
--data <json>:オプションのJSONオーバーライド。--scheme <default|lab|bilibili>:SUSTechのカラースキーム(デフォルトはdefault;ラボ調査ではbilibiliを使用してデッキに合わせます)。--title-font <points>:自動タイトルサイズをオーバーライドします。--output-dir <directory>:最終出力ディレクトリ。--lualatex <path-or-command>:明示的なLuaLaTeX実行可能ファイル。--pdftoppm <path-or-command>:明示的なpdftoppm実行可能ファイル。
PNG生成は必須です。成功した出力には、空でないposter.tex、poster.pdf、poster.png、およびコピーされたテーマと変換された図が含まれます。ビルドは兄弟の一時ディレクトリで行われるため、ビルドに失敗しても既存の最終出力は置き換えられません。
ラボ調査ポスター生成器(实验室调研、generate_lab_poster.py)
ラボ調査には、汎用パスの代わりにscripts/generate_lab_poster.pyを使用します。これは、リポジトリのポスターテンプレート(<TEMPLATE_DIR>/main_template_lab_poster.tex、ソースオブトゥルース;templates/にフォールバックコピーあり)をDECKの可視化分析セクション区切り形式で埋めます:全面表示slides-beamer/figures/background.png(必須 — ない場合は致命的;デッキにない場合は、paper-group-to-beamer/scripts/gen_viz_background.py --survey-dir "<LAB_DIR>"でビルド)+ 4つの白い角丸影付きボックス(行):ラボ調査+日付ペア / 機関ブロック(ブランドカラーのアイブロウ + 英語行)/ 教授名 / title_2+title_3(emphルール付き)。メトリック行、宣伝文、ラボ名行はありません。
注意(2026-08-07 デフォルト変更):ポスターはラボディレクトリに必須の成果物です(アップローダーはポスター/poster.pngがないとクローズします)が、BilibiliアップロードカバーのデフォルトはDECKの最初のスライド(video/cover.png)です — ポスターをvideo/cover.pngにコピーしないでください;パイプラインのスライド001レンダリングを維持してください。詳細は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は必須(30文字以内)。命名規則:中国語名PI → xxx教授(例 李飞飞教授、刘华平教授);非教授の役割はProf./教授を付けない(例 Sergey Levine 等联合创始人);英語名教授 → Prof. First Last(例 Prof. Yann LeCun)。
title_1_uniはオプション(幅予算40単位、CJKグリフ=2単位、それ以外=1、例 纽约大学=8、Physical Intelligence=21;空の場合は行を削除)、
title_1_uni_colorはオプション(#RRGGBB — 機関のロゴブランドカラー、例 NYU 57068B、Stanford 8C1515、CMU C41230、Berkeley 003262、Tsinghua 660874、SUSTech 2C5F7C、HKUST 003366;ブランドカラーのない機関はデフォルトで黒 000000)、
title_1_uni_enはオプション(40文字以内、例 NEW YORK UNIVERSITY) — タイトルブロックは大学を機関ブランドカラーのアイブロウ(25ptセミボールド、title_1_uni_color、0.25emのCJKトラッキングは生成器が自動挿入、サイドダッシュ80×3pxでブランドカラーの50%)、英語の小行(13pt #8A8F98)、次に教授名(55ptピンク太字、一行)でレンダリングします。title_2/title_3はオプション(それぞれ幅予算30単位、例 从卷积网络到世界模型=18、IEEE Fellow 2026=15;空の部分はその行を削除)。date(オプション、デフォルトは今日)は日付ブロックを埋めます。papers.jsonからのコーパス統計は情報提供のみです — ファイルがない場合は警告付きで劣化し、実行を失敗させることはありません。ラボ名行、宣伝文行、メトリック行、·セパレータはありません。例:
title_1_uni="纽约大学"、title_1_uni_en="NEW YORK UNIVERSITY"、
title_1_pi="Prof. Yann LeCun"、title_2="从卷积网络到世界模型"、
title_3="图灵奖得主的40年深度学习谱系"。video_meta.jsonのアップロードタイトルは、{機関略称} {PI氏名}教授:テーマ — フック形式を独立して維持します。ポスターレイアウト(デッキの可視化分析背景上の角丸影付きtikzボックス):0.6971\textwidthコンテナ内の4行、ページ上で絶対中央揃え(固定上部0.107\textheight / 下部0.103\textheightオフセット;スタックはページの約77%):行1 = ラボ調査 + 〈DATE〉ペア(各0.3092\textwidthテキスト幅、32pt、高さ0.1250\textheight);行2 = 機関ブロック — NYUパープルアイブロウ(25ptセミボールド、サイドダッシュ)+ 英語行13pt(0.6706\textwidth、高さ0.1250\textheight);行3 = 教授名ブロック(55ptピンク太字一行、0.6706\textwidth、高さ0.1806\textheight);行4 = title_2/title_3 + ルール37pt(高さ0.2153\textheight)。ギャップ:水平0.0258\textwidth / 垂直0.0417\textheight(2324×1440参照キャンバスで両方向60px)。
--schemeのデフォルトはbilibili(デッキ一致);--template/--theme-dirはリポジトリパスをオーバーライドします(デッキsustech-themeがビルドにコピーされます)。トークンコントラクト(コード行で置き換えられない場合は致命的):〈DATE〉〈TITLE1UNI〉〈TITLE1UNIEN〉〈TITLE1PI〉〈TITLE2〉〈TITLE3〉。xelatexでコンパイル(2パス;デッキテーマはxelatexのみ)し、poster.pngを300 dpi(32×20 cmページ→約3780×2363 px)でレンダリング;出力は<LAB_DIR>/poster/。
落とし穴 — 大きなタイトルテキスト内のスペース:sustechテーマ下でのTikZノード+\fontsize{72}{84}は単語間スペース(\ さえも)を削除します;そのため生成器はtitle_1/2/3内のプレーンスペースを\hspace{0.25em}グルーに変換します(pdftotextで確認:NYU Prof. Yann LeCunはスペースを保持)。
落とし穴 — 行のセンタリングとブロック幅:(1) \hbox to \containerwidthは段落行ではなく、\centeringはそれを中央揃えにしません — 行は\hbox to \textwidth{\hss … \hss}でなければならず、コンテンツを行全体の中央に配置します。(2) \dimexprベースのマクロを持つtikz text widthは、32 cmの用紙で「Dimension too large」エラーを発生させる可能性があります — リテラル幅(例 0.44\textwidth)を使用してください。(3) tikzノードの外側の幅 = text width + 2×inner sep — ボックスエッジが正確にコンテナに収まるように、幅マクロからsepパディングを引いてください。
落とし穴 — 全面表示背景:ポスターのジオメトリは\geometry{papersize={32cm,20cm},margin=0cm}でなければなりません。正のマージンはbeamerの背景キャンバス原点をテキストエリアの上部にオフセットし、上部に白い帯(margin=1.1cmで約1.1 cm)を生成し、背景画像の上端をクリップします。ポスタービルド後に必ず確認:poster.pngの上部/下部3%行に白いピクセルがほぼ0であること(PILスキャン)。
ラボ調査ポスター(实验室调研)
中国語のタイトルがサポートされています(生成されたプリアンブルはctexをロードします;beamerタイトルのフォールバックはCJKを削除しなくなりました)。ポスタタイトルはアップロードタイトル形式{機関略称} {PI氏名}教授:テーマ — フックに従います(例 NYU 杨立昆教授:从卷积网络到世界模型 — 图灵奖得主的40年深度学习谱系 / 清华刘华平教授:机器人具身智能 — 从视触觉到操作学习)。--scheme bilibiliと--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"
}
パレットのソースオブトゥルースは<TEMPLATE_DIR>/sustech-theme/beamercolorthemesustech.sty(デフォルト青 / ラボ赤 / bilibiliピンク)です;デッキテーマはビルドにコピーされ、フレームはxelatex(デッキのエンジン)でコンパイルされます。背景slides-beamer/figures/background.pngが存在する必要があります(デッキの可視化分析区切り背景) — 生成器はこれなしではクローズします。
明示的なツールを使用した例:
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"
環境構成を使用した例:
$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>"
入力
生成器は、md_output/*/auto/の下にある最初のMinerUマークダウンファイルから、タイトル、会場、プロジェクトURL、図、メトリックを抽出します。キャプションベースの抽出で図が見つからない場合は、slides-beamer/figures/、paper-source/image/、source/image/、Figures/、次にmd_output/*/auto/images/を検索します。
PNG、JPEG、PDFソースがサポートされています。PDFは解決されたpdftoppmを使用します。参照される図が欠落、サポート外、空、または変換不可能な場合は致命的です。
すべてのJSONフィールドはオプションです。figure_mapのパスは絶対パス、または論文ディレクトリからの相対パスです:
{
"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"
}
}
バッチ処理
1行に1つの論文ディレクトリを記述したUTF-8ファイルを使用します。startとcountはオプションの位置引数です:
uv run --project "<SKILLS_DIR>/paper-video-cover" `
"<SKILLS_DIR>/paper-video-cover/scripts/batch_generate.py" `
"<papers_file>" 0 20
バッチはuvが選んだインタプリタを使用し、各論文に3つの成果物すべてを要求し、いずれかのアイテムが失敗した場合は非ゼロを返します。
失敗時の動作
必要な実行可能ファイルまたはパッケージ化されたテーマが欠落している、子コマンドが非ゼロを返す、または必須の成果物が欠落または空である場合、生成器は非ゼロを返します。非ゼロの結果は公開なしとして扱います;失敗した一時ビルドは削除され、以前の最終出力は変更されません。
関連スキル
- 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