mcpField
B
beamer

beamer

github.com/noi1rドキュメント37071 回インストール11 週間前に更新
リポジトリ

beamer について

学術向けBeamerプレゼンテーションの作成、コンパイル、レビュー、調整を支援するワークフロースキルです。段階的な作成手順に加え、技術発表の構成、レイアウト、検証ルールを示します。

主な機能

  1. 01段階に沿ったスライド作成
  2. 02Beamerのレイアウトと文字組みの規則
  3. 03XeLaTeXでのコンパイルとチェック
  4. 04PDFの視覚的な確認
  5. 05参考文献と予備スライドの指針

活用シーン

  1. 01研究論文をもとに発表資料を作成
  2. 02Beamer資料をコンパイルして警告を確認
  3. 03スライドの情報量や表示崩れを点検
  4. 04発表時間に合わせた技術プレゼンの準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/noi1r/beamer-skill --skill beamer

インストール後、Claude Code で/beamerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
references/
create-workflow.md
review-actions.md
tikz-standards.md

詳細

Beamer スライド作成ワークフロー

学術的な Beamer プレゼンテーション向けの汎用スキルです。全ライフサイクルを網羅します: 作成 → コンパイル → レビュー → 仕上げ → 検証。


0. 参考プリアンブル

新しいスライドを作成する際は、ユーザーがカスタムテンプレートを指定していない限り、以下をデフォルトのプリアンブルとして使用してください。

\documentclass[aspectratio=169,10pt]{beamer}

\usetheme{Madrid}
\usecolortheme{default}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}[frame number]

\usepackage{amsmath,amssymb,amsthm,booktabs,mathtools}
\usepackage{stmaryrd}  % for \llbracket, \rrbracket
\usepackage{graphicx}  % for \includegraphics (extracted figures)
\usepackage{hyperref}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning,decorations.pathreplacing}

% Semantic colors — use in BOTH text and TikZ for global consistency
\definecolor{positive}{HTML}{0173B2}       % blue (correct, advantage)
\definecolor{negative}{HTML}{DE8F05}       % orange (limitation, drawback)
\definecolor{emphasis}{HTML}{029E73}        % green (highlight, key finding)
\definecolor{neutral}{gray}{0.55}          % muted context
\definecolor{cbPurple}{HTML}{CC78BC}        % additional accent
\newcommand{\pos}[1]{\textcolor{positive}{#1}}
\newcommand{\con}[1]{\textcolor{negative}{#1}}
\newcommand{\HL}[1]{\textcolor{emphasis}{#1}}

ルール:

  • 必ず 10pt にする — 11pt または 12pt では、スライドが大きく、余白が多くなりすぎます。
  • 必ず aspectratio=169 にする — 現代のプロジェクターは 16:9 です。
  • デフォルトの発表者:\author{Presenter: [name]} と \institute{Shanghai Jiao Tong University} を使用します。ユーザーから別の指定がある場合に限り、変更してください。
  • ユーザーからカスタムプリアンブル、ヘッダーファイル、またはテーマが提供された場合は、それを使用してください。
  • 必要に応じて、分野固有のマクロ(例:\newcommand{\F}{\mathbb{F}})を追加してください。
  • アルゴリズム/コード用パッケージ(必要な場合のみ追加):
    • アルゴリズム: \usepackage[ruled,lined]{algorithm2e} — \SetAlgoLined と \DontPrintSemicolon を設定します。
    • コードリスト:\usepackage{listings} — basicstyle=\ttfamily\small、keywordstyle=\bfseries\color{positive}、commentstyle=\color{neutral} を設定します。1 スライドあたりのコードは最大 10 行にしてください。escapeinside={(*@}{@*)} と \colorbox で重要な行を強調します。
    • 擬似コード:\usepackage{algorithmic} — algorithm2e よりシンプルで、短い手順に適しています。
  • データのプロット(必要な場合のみ追加):
    • \usepackage{pgfplots} + \pgfplotsset{compat=1.18} — データ駆動型のプロット(棒グラフ、散布図、エラーバー、ヒストグラム)に使用します。データの可視化では、手動で TikZ の座標を使ったプロットを作成するよりも、はるかに効率的です。
    • \usepackage{subcaption} — \begin{subfigure}{0.48\textwidth} を使って、1 つのフレームに複数のサブ図を配置します。
  • 定理環境:Beamer には theorem、lemma、corollary、definition、example、proof が標準で用意されています(テーマによってスタイルが設定されます)。形式的な記述にはこれらを使用してください。自動で番号が付与され、一貫したスタイルが適用されます。\setbeamertemplate{theorems}[numbered] または [ams style] でカスタマイズできます。

1. 厳守事項(必須)

  1. オーバーレイなし — \pause、\onslide、\only、\uncoverは使用しないでください。段階的に内容を表示する場合は複数のスライドを使い、注目させる箇所には色で強調します。よく使う置き換えパターン:
    • 数式を段階的に構築: スライドAに基本の数式を示し、スライドBではそれをコピーして次の項を追加します(スライドAの項は文脈としてグレー表示のまま残します)。フレーム全体をコピー&ペーストして拡張します。
    • リストを段階的に表示: スライドAに項目1~2を示し、スライドBに項目1~4を示します(項目1~2は再掲します)。すでに表示した項目は\textcolor{neutral}{}を使って目立たなくします。
    • 図を段階的に構築: スライドAに基本構造を示し、スライドBで注釈や辺を追加します。tikzpictureを複製し、新しい要素を追加してください。以前の要素は削除しないでください。
  2. 色付きボックスはスライド1枚につき最大2つ — それ以上では強調が薄れます。つなぎの説明は通常の斜体にします。
  3. 形式化の前に動機を示す — すべての概念で「なぜ?」を「何か?」より先に説明します。
  4. 各定義から2枚以内のスライドに具体例を示す。
  5. XeLaTeXのみ — pdflatexは使用しないでください。
  6. Beamerの.texを唯一の信頼できる情報源とする — TikZ図、内容、表記法はすべてここで定義します。
  7. 作業のたびに検証する — コンパイルし、警告を確認して、PDFを開きます。
  8. 電文調のスタイル — 完全文ではなく、キーワード句を使います。スライドは発表者用の手がかりであり、原稿ではありません。定義や話題の切り替えを示す導入文は例外です。各箇条書きは2行以内(約15語)にします。長い場合は小項目に分けるか、簡潔に書き直します。
  9. すべてのスライドに役割を持たせる — 各スライドには、少なくとも1つの実質的な要素(数式、図、表、定理、アルゴリズム)を含めます。短い箇条書きが3つあるだけで、それ以外に何もないスライドは、統合するか内容を充実させます。
  10. ボックス内のはみ出しを防ぐ — alertblock、exampleblock、block環境では内部余白が加わり(幅が約15%狭くなり、タイトルバーと上下の余白で高さがさらに12~16pt増えます)、何もないスライドに収まる内容でも、ボックス内では縦横どちらにもはみ出すことがあります。ルール:
    • 縦方向のはみ出し(最もよく起き、見つけにくい):1つのボックス内に表示数式(\[ \])とその下のテキストを入れると、縦方向の収容可能量を簡単に超えます。ボックス内の内容は表示数式1つ、または短い箇条書き2~3項目までにします。両方は入れません。ボックス内で強引な\vspace{-Xpt}は使用しないでください。下部の内容が枠線を越えてしまいます。
    • 横方向のはみ出し:ボックス内で\qquadは使用せず、\quadまたは,を使います。何もないスライドで表示数式の幅が\textwidthの約70%を超える場合は、ボックスに入れる前に書式を変更します。
    • Beamerはブロック内のはみ出し警告を抑制します — コンパイル時の警告がゼロでも、見た目上はみ出していないとは限りません。PDFですべてのボックスを必ず目視確認します。
  11. 参考文献スライド — 最後から2枚目のスライド(Thank Youの直前)は、主要な引用文献を列挙したReferencesスライドにします。\smallを指定して\begin{thebibliography}{9}を使います。主要論文と、関連性の高い参考文献を3~5件含めます。
  12. 色とコントラストの基準 — テキストと背景のコントラスト比は4.5:1以上(WCAG AA)にします。赤と緑を二項の対比に使用しないでください(色覚障害は男性の約8%に影響します)。青とオレンジを優先します。プリアンブルで定義する意味別の色コマンド:\pos{} = 肯定/正しい(青)、\con{} = 否定/制限(オレンジ)、\HL{} = 強調/重要な結果(緑)、\textcolor{neutral}{} = 目立たなくする。これらは色覚障害に配慮した配色です。使用する色は合計3~5色に抑えます。
  13. フォントサイズによる視覚的階層 — スライドタイトル:20~24pt(Beamerのデフォルト)、重要な結果/定理:通常サイズで\textbfを使用、補足テキスト:通常サイズ、ラベル/キャプション:最低でも\small。ユーザーに見せる内容に\tinyは使用しないでください。
  14. 補足スライド — Thank Youスライドの後に、想定される質問に備えた補足スライドを3~5枚追加します。補足セクションの前に\appendixを使用します。\begin{frame}{Backup Slides}\end{frame}の区切りスライドを使って、本編と分けます。補足スライドは発表時間の割り当てに含めません。含める内容(Phase 0の資料分析に基づいて決めます):
    • メインデッキで概要のみを示した場合は、主要な定理の完全な証明
    • パラメーターの選択/セキュリティ分析の詳細(暗号/プロトコル論文の場合)
    • ベースラインを追加した拡張比較表
    • 実験の設定詳細(ハードウェア、ハイパーパラメーター、データセット)
    • 既知の前提として扱った前提知識の定義(質問への備え)
  15. カラムレイアウト — 横並びのコンテンツには\begin{columns}[T]と\column{W\textwidth}を使います。ルール:
    • 比較/並列のコンテンツ:それぞれ0.48\textwidthの2カラム(間隔を0.04残します)。
    • 図とテキスト:図のカラムは0.45-0.55、テキストのカラムは0.40-0.50、間隔は0.05にします。
    • カラムは最大3つ:各カラムを≤ 0.30\textwidthにし、短い項目(アイコン、統計値、1行の説明)に限ります。
    • カラムの中にカラムを入れないでください。
    • 意図的に中央揃えにする場合を除き、常に[T](上揃え)を使います。
    • カラム内のコンテンツにも、通常のスライドと同じ密度の制約を適用します。

2. アクション

$ARGUMENTS を解析して、実行するアクションを判断します。アクションが指定されていない場合は、確認してください。

2.1 compile [file]

引用を完全に解決するため、XeLaTeX を 3 回実行してから bibtex を実行します。

# Adapt TEXINPUTS/BIBINPUTS to your project's preamble/bib locations
xelatex -interaction=nonstopmode FILE.tex
bibtex FILE
xelatex -interaction=nonstopmode FILE.tex
xelatex -interaction=nonstopmode FILE.tex

コンパイル後のチェック:

  • ログで Overfull \\hbox 警告を検索する(件数と発生箇所)
  • Undefined control sequence または undefined citations を検索する
  • Label(s) may have changed を検索する
  • PDF を開いて視覚的に確認する
  • 成功/失敗、overfull の件数、未定義の項目、ページ数を報告する
2.2 create [topic]

協力しながら反復的に講義を作成します。フェーズの厳格なゲートを守り、先に進んではいけません。

フェーズ 0:資料の分析(論文/資料が提供された場合)

まず読み、質問はその後にします。 有意義な質問をする前に、内容を理解する必要があります。

  • .pdf、.md、または論文/資料の混在入力を受け付けます。
  • Markdown が提供された場合は、セクション階層、数式、定理の記述、キャプション、参考文献、記法の主要な意味情報源として使用します。
  • Markdown と PDF の両方が提供された場合は、構成とテキストの理解に Markdown を使用し、図、ページの文脈、視覚的な参照、抽出には PDF を使用します。
  • PDF のみが提供され、解析によって構成が失われる場合は、Markdown への変換を提供できるかユーザーに尋ねます。特定の PDF から Markdown への変換ツールを必須としたり、実行したりしてはいけません。
  • 論文/資料全体を十分に読む
  • 中核となる貢献、主要な手法、主な定理、先行研究との比較を抽出する
  • 記法の慣例を整理する
  • 論文の論理構成と、スライドに適した箇所を特定する
  • 前提知識、自然なセクションの区切り、省略または詳しく説明できる箇所を内部で記録する

結果を提示したり質問したりせず、直接フェーズ 1 に進んでください。

フェーズ 1:ニーズのヒアリング(必須 — フェーズ 0 を踏まえる)

AskUserQuestion を通じて、内容に基づくヒアリングを実施します。以下の質問は最低限必要な項目です。フェーズ 0 から導き出した、論文に固有の質問も追加する必要があります。

最低限必要な質問(必ず尋ねる):

  1. 発表時間:発表時間はどのくらいですか?
  2. 聴衆のレベル:聴衆はどのような方々ですか?

任意の質問(ジャーナルクラブ、研究発表、またはユーザーがリハーサルのサポートを希望しているように見える場合に尋ねる): 3. 発表者ノート:発表者ビューに発表者ノートを表示しますか?表示する場合、各フレームに要点を簡潔にまとめた説明(要点、話題の切り替え、想定される質問)を記載した \note{} ブロックを追加します。2 画面表示には、プリアンブルに \setbeameroption{show notes on second screen=right} を追加する必要があります。

内容に基づく質問(フェーズ 0 から導き出し、必要な数だけ尋ねる):

  • 前提知識:フェーズ 0 で特定した具体的な技術的前提を列挙します。聴衆がそれらを知っているか尋ねます。例:「この論文では sumcheck と多項式コミットメントを使用しています。これらを説明しますか?」。「基本的な代数に詳しいですか?」のような質問は避けます。
  • 内容の範囲:論文に含まれる実際の構成要素を選択肢として提示します。どの内容を重点的に扱うか、省くか、簡単に触れるだけにするかを尋ねます。
  • 詳細さと幅広さのバランス:直感的な概要と詳細な構成の両方がある場合、どちらを希望するか尋ねます。
  • 論文固有の選択事項:例として、論文で 2 つの構成を比較している場合、両方を同じ程度に説明するか、一方に焦点を当てるかを尋ねます。

ガイドライン:

  • 選択肢は汎用的なテンプレートではなく、論文の実際の内容に基づいて提示します。
  • 質問は合計 3~6 個にします。多すぎず、少なすぎないようにします。
  • 文脈から明らかなこと(例:ユーザーが「討論会」と述べている場合)は、質問せずに推測します。

スライド枚数の目安:1.5~2 分あたり約 1 枚です。

時間配分表:

時間スライド総数導入/動機手法/背景中核内容まとめ/結論
5 分(ライトニングトーク)5-71-20-12-31
10 分(短時間発表)8-1221-24-51
15 分(学会発表)10-152-32-35-71-2
20 分(セミナー)13-1832-36-92
45 分(基調講演)22-304-55-710-142-3
90 分(講義)45-605-68-1225-353-4

発表の種類に応じたヒント:

発表の種類重点項目よくある間違い
ライトニングトーク(5 分)中心となるメッセージを 1 つに絞り、背景説明はしない5 分に通常の発表内容を詰め込む
学会発表(10~20 分)重要な結果を 1~2 件に絞り、手法の概要を手早く説明する技術的な詳細に偏り、全体像を示さない
セミナー(45 分)深く掘り下げてもよいが、視覚的なリズムが必要例を示さず、数式ばかりのスライドを続ける
研究発表/学位論文発表習熟度を示し、体系的に説明する動機を省き、結果の説明を急ぐ
ジャーナルクラブ批判的に分析し、議論を促す評価を加えずに要約する
研究助成の提案重要性 → 実現可能性 → 影響技術的すぎて、「なぜ重要なのか」を十分に説明しない

時間配分の原則:時間の 40~50%を中核内容(結果/技術)に充てます。具体例または視覚的な区切りを挟まずに、理論中心のスライドを 3~4 枚以上続けないでください。

フェーズ 2:構成案(ゲート — 草稿作成前にユーザーの承認が必要)

詳細なアウトラインを作成します。各セクションについて、以下を記載します。

  • セクションタイトル
  • 割り当てるスライド枚数
  • 各スライドの主要な内容(各 1~2 行)
  • 予定している TikZ 図または図表(簡単な説明)
  • 導入する記法

**構成案をユーザーに提示します。**構成に問題がないか、追加、縮小、削除したい内容がないか尋ねます。

ユーザーの承認を得るまで、草稿作成に進んではいけません。

フェーズ 3:草稿作成(反復的に、分割して実施)

このフェーズが最も重要です。すべてのサブルールを厳密に守ってください。

3a. 執筆スタイル
  • 電文調のキーワードを使い、完全な文章は避けます。例外は、背景を示すためのスライドごとに1文の導入文です。
  • 数式と分析を密接に交互に配置します。量を定義したら、すぐに同じスライドでそのコスト/特性/意味を示します。数式だけをあるスライドに置き、分析を次のスライドに分けることは避けます。
  • 会話調の曖昧な表現は使いません。「待って、正確には違います」「実は、明確にさせてください」などの表現は使いません。補足が必要な点は、最初から正確に述べます。
  • キーワードを初めて導入する際は \textbf{} を使用します。肯定的な特性には \pos{...}、欠点/制約には \con{...}、重要な知見には \HL{...} を使用します(プリアンブルで定義)。
3a-2. 導入と締めくくりの戦略

導入スライド(戦略を1つ選択):

  • 意外性のある統計値 — 前提を覆す、直感に反する数値
  • 挑発的な質問 — 聴衆がすぐには答えられない問い
  • 実世界での障害/問題 — 「システムXは……が原因で失敗しました」→「どうすればこれを防げるでしょうか?」
  • 視覚的な実演 — 説明の前に現象を見せる

導入では、講演の残りの部分で解決される緊張感や好奇心を生み出します。

締めくくりの戦略:

  • 導入への回帰 — 導入の質問/問題を再び取り上げ、答えを示します(循環的な構成)。
  • 重要なポイント3つ — 番号付き、電文調、1枚のスライドにまとめます。聴衆が覚えているのは、最後に見た内容です。
  • 未解決の問い/今後の方向性 — 聴衆に考えを促し、質疑応答にも自然につながります。
  • 「Thank You」だけで終わらせない — 最後から2枚目の内容スライドで、印象に残るメッセージを伝えます。「Thank You」スライドは礼儀として添えるものであり、結論ではありません。
3b. 数学を含むスライドのパターン

数式を多く含むスライドは、次のいずれかのパターンに従います。

定義スライド:

[Framing sentence: why this definition matters]
[Formal definition in display math]
[Key properties / immediate consequences as 2-3 bullet items]

構成/アルゴリズムのスライド:

[One-line goal statement]
[Core equation / algorithm steps]
[Complexity analysis: prover cost, verifier cost, soundness]

比較スライド:

[Side-by-side table: prior work vs this work]
[1-2 lines highlighting the key difference]

洞察/補足スライド(論文にない価値を加える):

[Observation the paper doesn't emphasize, or a comparison with related work]
[Why this matters / what it implies]

すべてのスライドに、明確な要点(聴衆が覚えておくべき1つのこと)が必要です。

定理/証明スライド(数学的な形式記述向け):

[Framing sentence: informal statement of the result]
\begin{theorem}[Optional name]
  [Formal statement in display math]
\end{theorem}
[Key implication or "why this matters" as 1-2 bullets]
  • 証明は次のスライドに置きます(定理と証明を1枚に詰め込みません)。
  • 長い証明では、証明の概要(重要な手順のみ)を示し、完全な証明は予備スライドに置きます。
  • 簡略化した証明であることを示すには \begin{proof}[Proof sketch] を使用します。

スライド間の相互参照:

  • 重要なスライドのフレーム内に \label{slide:construction} を付けます。
  • 他のスライドから参照するには、see Slide~\ref{slide:construction} またはクリック可能な \hyperlink{slide:construction}{\beamerbutton{Back to Construction}} を使用します。
  • 質疑応答で特に便利です。参照された結果へすばやく戻れます。
  • 予備スライドには、必ずその内容の動機となるメインスライドへのハイパーリンクを付けます。
3c. 内容の密度に関する制約

上限(スライドごと):

  • 箇条書きまたは項目は7つ以下
  • ディスプレイ数式は2つ以下(それ以上の場合は分割)
  • 新たに導入する記号は5つ以下
  • 色付きボックス(alertblock/exampleblock)は2つ以下

下限(スライドごと):

  • 各スライドには、数式、図、表、定理の記述、アルゴリズムのいずれかを少なくとも1つ含めます。
  • 短いテキストのみの箇条書きが3つ以下のスライドは内容が少なすぎます。隣接するスライドと統合するか、数式/図を追加します。
  • テキストのみの箇条書きスライドは、デッキ全体の30%以下にします。

バッチごとの密度の自己チェック:

  • 数式/図/表がまったくないスライドを数え、バッチの30%を超える場合は要確認とします。
  • 項目が3つ以下で数式がないスライドを数え、統合候補とします。
3d. バッチの作業手順
  • 承認済みの構成に従い、5~10枚ずつ作業します。
  • 各バッチの後に xelatex -interaction=nonstopmode でコンパイルし、エラーを早期に検出します。フェーズ5で40枚のデッキの問題を12件修正するより、10枚のバッチで問題を2件修正するほうがはるかに簡単です。
  • 各バッチの後に、表記の一貫性、密度の制約、形式化に先立つ動機付けを自己チェックします。
  • 現在のバッチが問題なくコンパイルでき、自己チェックにも合格してから、次のバッチに進みます。
3e. 表のベストプラクティス
  • 表は必ず中央揃えにします — 独立した表はすべて \begin{center}...\end{center} で囲みます。左揃えの表はスライド上で位置がずれて見えます。
  • フレームタイトルの直後に表を配置しないでください — Madrid のようなテーマでは、色付きのタイトルバーの下端が \toprule と視覚的につながり、表がタイトルに埋め込まれているように見えます。タイトルと最初の \toprule の間には、必ず \vspace{4pt}(または導入文)を挿入します。コンパイラーはこれについて 警告を一切出しません — 見た目を確認して初めて検出できます。
  • 常に booktabs(\toprule、\midrule、\bottomrule)を使用します — 縦線(|)は使用しません。
  • 列の配置:数値は右揃え(r)、テキストは左揃え(l)、短いラベルは中央揃え(c)にします。
  • 1枚のスライドにつき、列は最大6~7列、行は8~10行にします。それ以上の場合は、以下のページ分割ルールに従ってスライドを分けます:
    • 続きの各スライドでは、ヘッダー行全体(\toprule+ヘッダー+\midrule)を繰り返します。
    • フレームタイトルに「(続き)」を追加します: \frametitle{Results (cont'd)}。
    • 論理的な行グループの境界(例:アルゴリズムファミリー間、データセットグループ間)で分割します — グループの途中では分割しません。
    • 最終ページには、データ行を3行以上含めます。3行未満の場合は、前のページと統合します。
    • 各ページの表の下に、そのページのデータが異なる見解を示す場合は、独自の要点を1行で記載します。
  • \resizebox{\textwidth}{!}{...} の使用は最終手段とし、まず列数や行数を減らします。
  • 重要なセルは \cellcolor{positive!15} または \textbf{} で強調し、視線を引きつけます。
  • 比較表では、各行または列の最良の結果を太字にします。
  • 表の下に \small でキャプションを付けるか、フレームタイトルを暗黙のキャプションとして使用します。
3f. アルゴリズムとコードの表示
  • 擬似コードは1枚のスライドにつき10行以下にします。それより長い場合は、「概要」と「主要なサブルーチン」のスライドに分けます。
  • 重要な行を強調します。listings では escapeinside を、algorithm2e では \colorbox を使用します。
  • アルゴリズムの冒頭で、入力と出力を明確に示します。
  • 一貫した命名規則を使用します。変数は数式のイタリック体($x$)、関数はサンセリフ体またはタイプライター体にします。
  • コード(擬似コードではないもの)には \ttfamily\small を使用し、listings で構文をハイライトします。関連する箇所のみを示し、ソースファイル全体をそのまま載せないでください。
フェーズ 4:図
  • Beamer ソース内の TikZ 図(唯一の信頼できる情報源)
  • TikZ の品質基準を適用します(セクション 2.6 を参照)
  • 必要に応じて R/Python スクリプトを使用します

データ可視化のガイドライン(論文用の図 ≠ スライド用の図):

  • 徹底的に簡素化する — 細かなグリッド線や詳細な凡例(プロット上に直接ラベルを付けます)、第 2 軸を削除します。現在のスライドの要点を裏付けるデータだけを表示します。
  • すべてを大きくする — 軸ラベルは 18pt 以上、線幅は 2~4pt、マーカーサイズは 8~12pt にします。ノート PC から 60~90cm 離れて読めない場合、プロジェクターでは使えません。
  • 直接ラベルを付ける — 別の凡例を使わず、線や棒に直接ラベルを付けます。認知的負荷を軽減できます。
  • 図ごとにメッセージを 1 つにする — 複数パネルの論文用の図は、複数のスライドに分けます。各スライドには比較を 1 つだけ表示します。
  • 結果を強調する — 重要なデータには彩度の高い太字色を使い、比較対象のデータには控えめなグレーを使います。重要な結果には \textcolor{blue!70!black}{...} を、参照データにはグレーを使います。
  • 色覚多様性に配慮したパレット — 赤と緑の組み合わせより、青(#0173B2)とオレンジ(#DE8F05)を優先します。冗長な符号化として、線種(実線/破線/点線)にも違いを加えます。TikZ では次のようにします。
    \definecolor{cbBlue}{HTML}{0173B2}
    \definecolor{cbOrange}{HTML}{DE8F05}
    \definecolor{cbGreen}{HTML}{029E73}
    \definecolor{cbPurple}{HTML}{CC78BC}
    
  • 段階的に表示する — 複雑な図は、軸 → 最初のデータセット → 比較 → 結果を示す注釈の順に、段階的に作成します。別々のスライドを使います(\pause は使いません)。
  • サブ図 — 1 つのフレームにパネルを並べて表示する場合は、\begin{subfigure}{0.48\textwidth}(subcaption パッケージが必要です)を使います。各サブ図には独自の \caption{(a) ...} を付けます。パネルごとに個別のキャプションが必要な場合は、\includegraphics をそのまま並べる方法よりこちらを推奨します。1 枚のスライドにつきサブ図は最大 2 つにします(4 パネルの場合は 2 枚のスライドに分けます)。

データ駆動型の図には pgfplots を使用(データに対しては手動の TikZ より優先):

数値データをプロットする場合は、必ず pgfplots を使います。軸、凡例、スケーリング、データ読み込みを自動で処理します。

% Bar chart from inline data
\begin{tikzpicture}
\begin{axis}[
  ybar, bar width=12pt,
  xlabel={Method}, ylabel={Accuracy (\%)},
  symbolic x coords={Baseline, Ours, Oracle},
  xtick=data, ymin=0, ymax=100,
  nodes near coords, every node near coord/.append style={font=\small},
  width=0.85\textwidth, height=5cm
]
  \addplot coordinates {(Baseline,72) (Ours,89) (Oracle,95)};
\end{axis}
\end{tikzpicture}
% Line plot from CSV file
\begin{tikzpicture}
\begin{axis}[
  xlabel={Epoch}, ylabel={Loss},
  legend pos=north east, grid=major,
  width=0.85\textwidth, height=5cm
]
  \addplot table[x=epoch, y=train_loss, col sep=comma] {data/results.csv};
  \addplot table[x=epoch, y=val_loss, col sep=comma] {data/results.csv};
  \legend{Train, Validation}
\end{axis}
\end{tikzpicture}
% Scatter plot with error bars
\begin{axis}[xlabel={$x$}, ylabel={$y$}]
  \addplot+[only marks, error bars/.cd, y dir=both, y explicit]
    coordinates {(1,2)+-(0,0.3) (2,3.5)+-(0,0.5) (3,5.1)+-(0,0.4)};
\end{axis}
  • はみ出しを防ぐため、必ず width と height を明示的に設定します。
  • ファイルからデータを読み込むには、\addplot table[col sep=comma]{file.csv} を使います。これにより .tex をすっきり保てます。
  • プレゼンテーションでは、目盛りラベルを大きくし(tick label style={font=\small})、線を太くし(thick)、意味に応じた色(color=positive)を使います。
フェーズ 5:品質チェックループ(必須 — 反復)

下書き全体を完成させたら、品質チェックループに入ります。

┌─→ 5a. Compile (2-pass XeLaTeX)
│   5b. Self-Review (structure + content + visual)
│   5c. Score (apply rubric)
│   5d. Fix all issues found
└── If score < 90 and round < 3: loop back to 5a
    If score ≥ 90 or round = 3: report to user

5a. コンパイル

  • XeLaTeX で2パスコンパイル(ここでは bibtex は不要です。フェーズ 3 の一括コンパイルですでに解決済みです)
  • 確認項目:エラー、overfull hbox、未定義の参照
  • PDF を開いて目視で確認します

5b. セルフレビュー — .tex を読み直し、以下を確認します。

構成:

  • スライド数が計画と一致している(許容範囲:±2)
  • 論理的な流れ:動機 → 背景 → 手法 → 結果 → まとめ
  • 具体例または視覚的な区切りを挟まずに、形式的なスライドが4枚を超えて連続していない
  • 主要なセクション間に導入文がある

内容の密度:

  • 数式や図がなく、短い箇条書きが3項目以下だけのスライドがない
  • 純粋なテキストのみのスライドがデッキ全体の30%以下である
  • 上限(箇条書き7項目、数式2つ、記号5つ、ボックス2つ)を超えるスライドがない

TikZ とビジュアル:

  • ラベル同士、またはラベルと曲線の重なりがない
  • スライドの境界からはみ出しているコンテンツがない
  • 色付きボックス内ではみ出しているコンテンツがない(alertblock/exampleblock/block の実効幅は約85%です。PDF のすべてのボックスを目視で確認してください)
  • TikZ 図がスライド内の残りのスペースに収まっている — テキストと図が混在するスライドでは、図のバウンディングボックスの高さとテキストの高さの合計が約70mm以内であることを確認してください。よくある問題:大きな TikZ scale と、その上にある複数の数式により、図の下部が切れる
  • マークされたすべての点が曲線上にある — プロットした曲線上にあるべき \fill、\node、または \draw の終点について、同じ関数から \pgfmathsetmacro を使って y 座標を計算していることを確認してください。値をハードコードしてはいけません。PDF を目視で確認し、点やマーカーが曲線上にあることを確認してください
  • 破線の参照線が曲線との交点で終わっている — 垂直・水平のガイド線は、任意の y 値で終わらせず、曲線との交点で正確に終わらせてください
  • 表がスライドの幅に収まっている
  • 独立した表がすべて中央揃えになっている(\begin{center}...\end{center})
  • 表の \toprule がタイトルバーと視覚的に接していない(最初の表の前に \vspace{4pt} またはテキストを追加してください)
  • TikZ のフォントサイズが \footnotesize 以上である
  • すべての図でスタイルが統一されている

表記法:

  • 同じ記号を一貫して使用している
  • すべての記号を使用前に定義している

5c. 品質スコア

100点から開始します。以下の問題に応じて減点します。

重大度問題減点
致命的コンパイル失敗-100
致命的数式のはみ出し(スライドまたはボックス内部)-20
致命的TikZ 図がスライドの境界を超えてはみ出している(下端または右端で切れている)図ごとに -15
致命的未定義の制御シーケンス/引用-15
致命的overfull hbox が 10pt を超える-10
重大色付きボックス内のコンテンツのはみ出し(垂直または水平、目視で確認)ボックスごとに -10
重大TikZ のマークされた点が曲線上にない(計算せず y 値をハードコードしている)図ごとに -8
重大内容が少ないスライド(項目が3つ以下で、数式や図がない)スライドごとに -5
重大TikZ のラベルが重なっている-5
重大参考文献スライドがない-5
重大表が中央揃えされていない(\begin{center} がない独立した表)表ごとに -3
重大表の \toprule がタイトルバーと視覚的に接している(フレームタイトルの後に間隔がない)スライドごとに -5
重大表記法に一貫性がない-3
軽微\vspace の過剰使用(1スライドにつき3回超)-1
軽微フォントサイズの縮小(\footnotesize など)スライドごとに -1

しきい値:

  • 90以上:納品可能です。ユーザーに報告してください。
  • 80~89:許容範囲です。可能であれば残りの重大な問題を修正し、注意事項とともに報告してください。
  • 80未満:修正が必要です。ループに戻り、致命的な問題と重大な問題を解決してください。

5d. 修正 — 致命的な問題と重大な問題をすべて修正します。再コンパイルします。スコアが90以上に改善したら、ループを終了します。無限ループを避けるため、最大3ラウンドまでとします。

作成後のチェックリスト(最終確認)
[ ] Compiles without errors
[ ] No overfull hbox > 10pt
[ ] All citations resolve
[ ] Score ≥ 90
[ ] Every definition has motivation + worked example
[ ] Max 2 colored boxes per slide
[ ] No sparse slides (all slides have substantive content)
[ ] TikZ diagrams visually verified — no overlaps, no overflow, all marked points on curves
[ ] Tables fit within slide boundaries, are centered, and separated from title bar
[ ] No content overflow inside colored boxes (visual PDF check)
[ ] References slide present (second-to-last, before Thank You)
2.3 review [file] または proofread [file]

読み取り専用のレポートです。ファイルは編集しません。

5 つのチェックカテゴリ:

カテゴリチェック内容
文法主語と動詞の一致、冠詞、前置詞、時制の一貫性
誤字スペルミス、検索・置換の痕跡、重複語、置換されていないプレースホルダー([name]、[TODO]、[XXX]、テンプレートの残骸)
はみ出し\resizebox を使っていない長い数式、スライドあたりの項目数が多すぎる
一貫性引用形式(\citet/\citep)、表記法、用語、ボックスの使用法、スライド間での分母の一貫性
学術的な品質くだけた略語、単語の抜け、引用のない主張、曖昧な略語(異なる用語に同じ略語を使用)

問題ごとのレポート形式:

### Issue N: [Brief description]
- **Location:** [slide title or line number]
- **Current:** "[exact text]"
- **Proposed:** "[fix]"
- **Category / Severity:** [Category] / [High|Medium|Low]
2.4 audit [file]

視覚的なレイアウトの監査です。読み取り専用のレポートです。

チェック項目:

  • はみ出し: 境界を超えるコンテンツ、幅の広い表や数式
  • フォントの一貫性: インラインのサイズ指定、一貫性のないサイズ
  • ボックス疲れ: スライドあたり 2 個以上のボックス、不適切なボックスの種類
  • 間隔: \vspace の多用、構造上の問題
  • レイアウト: 移行の欠落、導入文の欠落

間隔を優先する修正原則(優先順位順):

  1. 垂直方向の間隔を縮める(構造の変更)
  2. リストをまとめる
  3. ディスプレイ数式をインラインに移動する
  4. \resizebox を使って画像や表のサイズを縮小する
  5. 最終手段: \footnotesize(\tiny は使用しない)
2.5 pedagogy [file]

包括的な教育的レビューです。読み取り専用のレポートです。

検証する 13 のパターン:

#パターン警告サイン
1形式化の前に動機を示す文脈のない定義
2記法を段階的に導入する1 枚のスライドに新しい記号が 5 個以上ある
3定義の後に具体例を示す具体例なしで定義が 2 つ連続する
4複雑さを段階的に高める前提知識が必要な概念より先に高度な概念が出てくる
5断片を見せながら展開する(問題→解決策)密度の高い定理を一度にすべて提示する
6要点となる場面で目立つスライドを使う唐突な話題の切り替え、移行がない
7密度の高い定理には 2 枚のスライドを使う複雑な定理を 1 枚のスライドに詰め込む
8意味に応じて色を使う二項対立に同じ色を使う
9ボックスの階層コンテンツに不適切なボックスの種類
10ボックス疲れ1 枚のスライドにボックスが 3 個以上ある
11ソクラテス式の問いかけを組み込むスライド全体に問いかけがまったくない
12複雑な概念には視覚表現を優先する視覚化より先に記法を示す
13比較には並列配置を使う関連する定義を別々のスライドで順番に示す

デッキ全体のチェック項目: 物語の流れ、ペース配分(具体例の前に理論スライドが最大 3~4 枚)、視覚的なリズム(5~8 枚ごとにセクション区切り)、記法の一貫性、学生の前提知識に関する想定。

2.6 tikz [file]

TikZ 図のレビューと抽出。

品質基準:

  • ラベルが曲線、線、点、ほかのラベルと重なることは絶対に避けてください

  • 2 つのラベルが同じ高さ付近にある場合は、位置をずらしてください

  • 視覚的な意味:実線=観測値、破線=反実仮想、塗りつぶし=観測値、中抜き=反実仮想

  • 線の太さ:軸=thick、データ=thick、注釈=thick(very thick は使用しない)

  • 標準スケール:全幅の図には [scale=1.1] を使用

  • 点の半径:データ点には 4pt

  • ラベルと最も近い図形要素との間隔は、最低 0.2 単位を確保

  • プロットする点の数学的精度:プロットした曲線上にあるべき点、マーカー、破線の端点の y 座標を、絶対にハードコードしないでください。これらの座標はすべて、曲線の描画に使うものと同じ関数から \pgfmathsetmacro を介して計算する必要があります。これは次のものに適用されます。

    • 単一の曲線上に示す点(例:「ℓ=2 における BiPerm」のようなラベル付きの特殊値)
    • 曲線上で終端する垂直/水平の破線
    • 2 つの曲線の交点
    • 曲線上の位置に固定する注釈

    よくある誤り(誤り — 曲線と一致しない y 座標をハードコード):

    \draw[thick] plot[domain=0.8:10] (\x, {0.3*\x + 2.7/\x});
    \draw[dashed] (2, 0) -- (2, 3.2);  % BAD: 3.2 is not 0.3*2+2.7/2=1.95
    \node at (2, 3.2) {BiPerm};         % BAD: label floats above the curve
    

    正しいパターン(必ず関数から計算):

    \draw[thick] plot[domain=0.8:10] (\x, {0.3*\x + 2.7/\x});
    \pgfmathsetmacro{\yTwo}{0.3*2 + 2.7/2}  % = 1.95, exactly on curve
    \draw[dashed] (2, 0) -- (2, \yTwo);
    \fill (2, \yTwo) circle (2pt);
    \node[above left] at (2, \yTwo) {BiPerm};
    

    曲線の交点については、まず連立方程式を代数的に解き、その後、正確な式をコードに記述してください。

    % Intersection of y=0.5x and y=2.5/x+0.3:
    % 0.5x = 2.5/x + 0.3 => x^2 - 0.6x - 5 = 0 => x = (0.6+sqrt(20.36))/2
    \pgfmathsetmacro{\xint}{(0.6 + sqrt(20.36))/2}
    \pgfmathsetmacro{\yint}{0.5*\xint}
    \fill (\xint, \yint) circle (3pt);
    
  • テキストと図が混在するスライドでの TikZ 図のサイズ:テキストや数式と同じスライドに配置する TikZ 図は、残りの縦方向のスペースに収める必要があります。Beamer の 16:9、10pt では、タイトルバーの下に約 70mm の使用可能な高さがあります。TikZ コードを書く前に、次のように見積もってください。

    1. 図の上にあるテキストと数式:ディスプレイ数式の数(各約 12~15mm)+テキストの行数(各約 5mm)+間隔を数えます
    2. 残りの高さ = 70mm − テキストの高さ
    3. TikZ のバウンディングボックスの高さ = (最大 y 座標 − 最小 y 座標)× yscale × 0.3528mm/pt
    4. 図が収まらない場合:yscale を小さくする、座標範囲を縮める、またはコンテンツを別のスライドに移動します

    テキストと図が混在するスライドの安全な既定値:xscale=0.5-0.7、yscale=0.4-0.6。スライド全体を使う図には scale=0.9-1.1。

  • 短い矢印に付けるラベル:ボックス間の矢印に node[midway, above] でラベルを配置すると、ラベルのテキストが矢印の端からはみ出し、隣接するボックスの枠に重なることがあります。次の方法で防止してください。

    1. ラベルのテキスト幅と矢印の長さ(right= の間隔)を見積もります。ラベルが間隔の約 80% を超える場合は、間隔を広げるか、ラベルのフォントを小さく(\scriptsize/\tiny)します。
    2. ラベルとボックスの枠の間に縦方向の余白を設けるため、単独の above ではなく above=4pt(またはそれ以上)を使います。
    3. 3 つ以上のボックスを使うフロー図では、全幅 = (N × ボックス幅)+((N−1)× 間隔)。16:9 の beamer では 14cm 以下に収める必要があります。ボックスの text width と間隔を合わせて調整してください。
    4. 判断に迷う場合は、コンパイルして、ラベルがどのボックスの枠にも重ならないことを目視で確認してください。

Web/Quarto で使うための SVG 抽出:

xelatex -interaction=nonstopmode extract_tikz.tex
PAGES=$(pdfinfo extract_tikz.pdf | grep "Pages:" | awk '{print $2}')
for i in $(seq 1 $PAGES); do
  idx=$(printf "%02d" $((i-1)))
  pdf2svg extract_tikz.pdf tikz_exact_$idx.svg $i
done

TikZ チェックリスト:

[ ] No label-label overlaps
[ ] No label-curve overlaps
[ ] No edge labels overlapping adjacent nodes (check label width vs. arrow length)
[ ] Diagram bounding box fits within remaining slide space (especially mixed text+diagram slides)
[ ] ALL marked points/dots/line-endpoints on curves computed via \pgfmathsetmacro from the SAME function — no hardcoded y-values
[ ] Dashed reference lines terminate exactly at the curve, not at arbitrary coordinates
[ ] Consistent dot style (solid=observed, hollow=counterfactual)
[ ] Consistent line style (solid=observed, dashed=counterfactual)
[ ] Arrow annotations: FROM label TO feature
[ ] Axes extend beyond all data points
[ ] Labels legible at presentation size
[ ] Minimum spacing between labels and graphical elements

TikZ 図のよくあるパターン:

これらを出発点として、必要に応じてカスタマイズしてください。すべてのパターンで、arrows.meta、positioning、decorations.pathreplacing ライブラリが読み込まれていることを前提とします(既定のプリアンブルに含まれています)。

フローチャート(横方向):

\begin{tikzpicture}[
  box/.style={draw, rounded corners, minimum width=2.2cm, minimum height=0.8cm,
              font=\small, fill=positive!10},
  arr/.style={-{Stealth}, thick}
]
  \node[box] (A) {Step 1};
  \node[box, right=1.5cm of A] (B) {Step 2};
  \node[box, right=1.5cm of B] (C) {Step 3};
  \draw[arr] (A) -- node[above, font=\scriptsize] {label} (B);
  \draw[arr] (B) -- (C);
\end{tikzpicture}
  • 全幅は 16:9 で 14cm 以下にします。式:N × box_width + (N-1) × gap。
  • 縦方向のフローでは、right= の代わりに below= を使います。

タイムライン:

\begin{tikzpicture}
  \draw[-{Stealth}, thick] (0,0) -- (12,0) node[right] {Time};
  \foreach \x/\lab in {1.5/Event A, 5/Event B, 9/Event C} {
    \draw[thick] (\x, 0.15) -- (\x, -0.15);
    \node[above=3pt, font=\small] at (\x, 0.15) {\lab};
  }
\end{tikzpicture}

ツリー図:

\begin{tikzpicture}[
  level distance=1.2cm, sibling distance=2.5cm,
  every node/.style={draw, rounded corners, font=\small, minimum width=1.5cm}
]
  \node {Root}
    child { node {A} child { node {A1} } child { node {A2} } }
    child { node {B} child { node {B1} } };
\end{tikzpicture}

注釈付きの波括弧:

\draw[decorate, decoration={brace, amplitude=6pt, raise=2pt}]
  (start) -- (end) node[midway, above=10pt, font=\small] {annotation};

交点を計算する座標プロット:

\begin{tikzpicture}[scale=1.1]
  \draw[-{Stealth}, thick] (0,0) -- (6,0) node[right] {$x$};
  \draw[-{Stealth}, thick] (0,0) -- (0,4) node[above] {$y$};
  \draw[thick, positive] plot[smooth, domain=0.5:5.5] (\x, {0.5*\x});
  \draw[thick, negative, dashed] plot[smooth, domain=0.5:5.5] (\x, {2.5/\x + 0.3});
  % Exact intersection via \pgfmathsetmacro (see quality standards above)
\end{tikzpicture}

ひし形の判断ノード(アルゴリズムのフローチャート用):

\node[diamond, draw, aspect=2, inner sep=1pt, font=\small] (D) {condition?};
\draw[arr] (D) -- node[right, font=\scriptsize] {yes} ++(0,-1.2);
\draw[arr] (D) -- node[above, font=\scriptsize] {no} ++(2.5,0);

複雑な図に対する TikZ の反復レビュー手順:

TikZ 図にノードが 5 個以上ある場合、またはプロットした曲線を含む場合は、反復レビューを実施してください。

┌─→ Step 1: Mentally render — trace every coordinate, compute where each element appears
│   Step 2: Check for issues — overlaps, misalignments, inconsistent semantics
│   Step 3: Classify — CRITICAL (overlap, wrong semantics, geometric error),
│                       MAJOR (poor spacing, readability), MINOR (aesthetic)
│   Step 4: Fix all CRITICAL and MAJOR issues
│   Step 5: Re-compile and visually verify in PDF
└── If CRITICAL or MAJOR remain and round < 3: loop back to Step 1
    If all clear or round = 3: declare APPROVED or report remaining issues

判定基準:

  • 承認:重大な問題が 0 件、主要な問題が 0 件 → 図は完成です
  • 要修正:重大または主要な問題が残っている → 必要な修正を具体的に列挙します
  • 却下:構造上の根本的な問題がある → 図の再設計を検討します
2.7 excellence [file]

多面的な包括的レビューです。効率を最大限に高めるため、Agent ツールを使用してレビューエージェントを並列で起動してください。

エージェントの並列起動 — 以下を同時に Agent 呼び出しとして起動します。

  1. 視覚監査エージェント — 「[file] を読み、各スライドについて、はみ出し、フォントの一貫性、ボックス疲れ(2 個以上のボックス)、間隔の問題、トランジションの欠落を確認してください。重大度を付けてスライドごとに報告してください。間隔を優先して修正する原則に従ってください。」
  2. 教育的レビューエージェント — 「[file] を読み、13 の教育的パターン(形式化より先に動機付けを行う、表記法を段階的に導入する、例題を示すなど)と、デッキ全体の確認項目(ナラティブの流れ、ペース配分、視覚的リズム、表記法の一貫性)を検証してください。パターンごとにステータスを付けて報告してください。」
  3. 校正エージェント — 「[file] を読み、文法、誤字、引用の一貫性(\citet/\citep)、表記法の一貫性、学術的な品質を確認してください。問題の場所と修正案を付けて、問題ごとに報告してください。」
  4. TikZ レビューエージェント(ファイルに \begin{tikzpicture} が含まれる場合)— 「[file] を読み、すべての TikZ 図について、ラベルの重なり、幾何学的な正確さ、視覚的な意味、間隔を確認してください。容赦なく、すべての欠陥を見つけてください。正確な座標と修正案を付けて、問題ごとに報告してください。」
  5. 分野レビューエージェント(任意)— 「[file] を読み、内容の正確性(前提、導出、引用の忠実性)を検証してください。」

すべてのエージェントの結果を受け取った後、統合レポートを作成します。

# Slide Excellence Review: [Filename]

## Overall Quality Score: [EXCELLENT / GOOD / NEEDS WORK / POOR]

| Dimension | Critical | Major | Minor |
|-----------|----------|-------|-------|
| Visual/Layout | | | |
| Pedagogical | | | |
| Proofreading | | | |
| TikZ (if any) | | | |

### Critical Issues (Immediate Action Required)
### Major Issues (Next Revision)
### Recommended Next Steps

品質スコアの基準(マルチエージェントによる excellence レビュー用。create の実行中に使う Phase 5 の数値スコアを補完します)。

スコア重大な問題中程度の問題意味
Excellent0-20-5発表可能(≈ Phase 5 のスコア ≥ 90)
Good3-56-15軽微な修正(≈ Phase 5 のスコア 80-89)
Needs Work6-1016-30大幅な修正が必要(≈ Phase 5 のスコア < 80)
Poor11+31+大幅な再構成が必要
2.8 devils-advocate [file]

5~7 個の具体的な教育的質問を通じて、スライドのデザインに異議を唱えます。

検討カテゴリ:

  1. 順序 — 「Y より前に X を説明したほうが、学生は理解しやすいでしょうか?」
  2. 前提知識 — 「学生はこれを理解するための背景知識を持っていますか?」
  3. 不足箇所 — 「ここに直感的な例を含めるべきでしょうか?」
  4. 別の提示方法 — 「この概念を提示する別の方法を 2 つ」
  5. 表記の衝突 — 「この記号は以前の使い方と競合しています」
  6. 認知負荷 — 「このスライドには新しい記号が多すぎます」
  7. 単独での読みやすさ — 「このセクションは、単独で書籍の章として成立しますか?」
2.9 visual-check [file]

PDF から画像への体系的な視覚レビュー。 コンパイル済み PDF を画像に変換し、各スライドを視覚的に確認します。これにより、ソースコードからは見えず、コンパイラーによって警告が抑制される問題(特にボックス内部のはみ出し)を検出できます。

重要な理由: Beamer は block/alertblock/exampleblock 環境内の overfull 警告を抑制します。コンパイル警告がゼロでも、視覚的なはみ出しがゼロとは限りません。この操作では、実際の状態を確認できます。

ワークフロー:

  1. コンパイル(まだコンパイルされていない場合):

    xelatex -interaction=nonstopmode FILE.tex
    
  2. PyMuPDF を使用して PDF を画像に変換します。

    import fitz
    doc = fitz.open('FILE.pdf')
    n = doc.page_count          # cache before iterating or closing
    zoom = 200 / 72  # 200 DPI
    matrix = fitz.Matrix(zoom, zoom)
    for i in range(n):
        page = doc.load_page(i)
        pixmap = page.get_pixmap(matrix=matrix)
        pixmap.save(f'/tmp/slide-{i+1:03d}.jpg', output='jpeg')
    doc.close()
    print(f'Exported {n} slides')
    

    または bash 経由で実行します:python3 -c "import fitz; ..."

    代替手段(PyMuPDF を使用できない場合):Read ツールで PDF を直接読みます。Claude Code はマルチモーダルで、PDF をページごとに読み取れます。

  3. スライドごとに体系的に確認 — Read ツールで各画像を表示し、次の項目を確認します。

    • どの端(上、下、左、右)にもテキストのはみ出しがない
    • 色付きボックス内のコンテンツがはみ出していない(すべての alertblock/exampleblock/block を確認)
    • すべてのテキストが読みやすい(発表を聞く距離で読めないほど小さなテキストがない)
    • 表と数式がスライドの幅に収まっている
    • TikZ のラベルが線、点、その他のラベルと重なっていない
    • 種類の似たスライド間でフォントサイズが一貫している
    • テキストと背景のコントラストが十分にある
    • 視覚的にごちゃついていない(要素が多すぎて注意が分散していない)
  4. 問題ごとに次の形式で報告します。

    ### Slide N: [slide title]
    - **Issue:** [description]
    - **Severity:** Critical / Major / Minor
    - **Fix:** [specific recommendation]
    
2.10 validate [file] [duration]

自動定量検証。 内容を読まずに、測定可能な特性を確認します。

実行するチェック:

  1. スライド枚数と所要時間(所要時間が指定されている場合):

    # Get page count
    pdfinfo FILE.pdf | grep "Pages:"
    

    時間配分表(セクション 2.2、フェーズ 1)と比較します。推奨範囲から外れている場合は警告します。

  2. アスペクト比:

    pdfinfo FILE.pdf | grep "Page size:"
    

    想定値:364.19 x 272.65 pts(10pt で 16:9)、または同等の 16:9 比率です。4:3(旧式のプロジェクター形式)の場合は警告します。

  3. ファイルサイズ:

    • > 50 MB:警告(共有/メール送信に時間がかかります)
    • > 100 MB:重大(非圧縮画像が含まれている可能性が高いです)
  4. コンパイルの状態(.log ファイルから):

    grep -c "Overfull \\\\hbox" FILE.log
    grep -c "Undefined control sequence" FILE.log
    grep -c "Citation.*undefined" FILE.log
    grep -c "multiply defined" FILE.log
    
  5. ソースコードの静的チェック(.tex ファイルから):

    • \pause / \onslide / \only の使用数をカウント → 0 である必要があります(ハードルール 1)
    • 色付きボックスが 2 個を超えるスライドの数をカウント → 違反を警告します(ハードルール 2)
    • \tiny の使用数をカウント → 0 である必要があります(ハードルール 13)
    • \begin{thebibliography} の有無を確認 → 見つからない場合は警告します(ハードルール 11)

レポート形式:

# Validation Report: [Filename]

| Check | Result | Status |
|-------|--------|--------|
| Slide count | N slides / Xmin duration | OK / WARNING |
| Aspect ratio | 16:9 | OK |
| File size | X.X MB | OK / WARNING |
| Overfull hbox | N warnings | OK / CRITICAL |
| Undefined references | N | OK / CRITICAL |
| Overlay commands | N found | OK / VIOLATION |
| Box fatigue violations | N slides | OK / WARNING |
| References slide | Present / Missing | OK / WARNING |

Overall: PASS / PASS WITH WARNINGS / FAIL
2.11 extract-figures [pdf] [pages]

論文 PDF から図を抽出し、Beamer スライドに挿入できるよう準備します。

TikZ で描き直す代わりに、既存の論文(ユーザー自身の論文または引用した論文)の図を再利用したい場合に使用します。

ワークフロー
  1. 対象の図を特定する — ユーザーがページを指定していない場合は、ネイティブの Read ツール(pages パラメーターを使用)で PDF を確認し、図の位置を特定します。判断が難しい場合は、どの図を抽出するかユーザーに確認します。

  2. 指定したページから画像を抽出する(poppler の pdftoppm を使用):

    # Render each target page to a high-res PNG (300 dpi), saved to figures/
    pdftoppm -png -r 300 -f PAGE -l PAGE PDF_PATH figures/page
    # → figures/page-PAGE.png  (original resolution at the chosen dpi, zero token cost)
    

    ページ全体をレンダリングし、ステップ 5 で trim/clip を使って図を切り抜きます。きれいな埋め込みビットマップが 1 つだけの場合は、pdfimages -png -f PAGE -l PAGE PDF_PATH figures/img で画像オブジェクトを直接抽出できます。

  3. 命名規則に従って、分かりやすい名前に変更する:

    mv figures/page-3.png figures/fig-LABEL.png
    

    命名規則:fig-<descriptive-label>.png(例:fig-architecture.png、fig-results-table.png)。

  4. LaTeX スニペットを生成する — そのまま貼り付けられるコードを出力します。

    全幅の図:

    \begin{frame}{Frame Title}
      \begin{center}
        \includegraphics[width=0.85\textwidth]{figures/fig-LABEL.png}
      \end{center}
      \vspace{-6pt}
      {\small Source: \citet{author2024paper}}
    \end{frame}
    

    図とテキストを横並びにする(columns レイアウト):

    \begin{frame}{Frame Title}
      \begin{columns}[T]
        \column{0.50\textwidth}
          \includegraphics[width=\textwidth]{figures/fig-LABEL.png}
          {\small Source: \citet{author2024paper}}
        \column{0.45\textwidth}
          Key observations:
          \begin{itemize}
            \item Point 1
            \item Point 2
          \end{itemize}
      \end{columns}
    \end{frame}
    

    2 つの図を横並びにする(subfigure):

    \begin{frame}{Frame Title}
      \begin{figure}
        \begin{subfigure}{0.48\textwidth}
          \includegraphics[width=\textwidth]{figures/fig-LEFT.png}
          \caption{(a) Description}
        \end{subfigure}\hfill
        \begin{subfigure}{0.48\textwidth}
          \includegraphics[width=\textwidth]{figures/fig-RIGHT.png}
          \caption{(b) Description}
        \end{subfigure}
      \end{figure}
    \end{frame}
    
  5. 切り抜きのガイダンス — 抽出した画像に、取り除くべき周辺のテキストや余白が含まれている場合は、trim と clip オプションを使用します:

    \includegraphics[width=0.85\textwidth, trim=LEFT BOTTOM RIGHT TOP, clip]{figures/fig-LABEL.png}
    
    • 単位は bp(ビッグポイント)です。レンダリングされた画像の寸法から推定します(例:sips -g pixelWidth -g pixelHeight figures/fig-LABEL.png)。
    • よくあるケース:trim=50 200 50 100, clip でページの余白と周辺のテキストを取り除きます。
    • コンパイル後は必ず目視で確認してください — 切り抜きの座標は推定値です。
ルール
  • 必ず出典を明記する — ユーザー自身の論文でない限り、抽出した図の下に {\small Source: ...} を含めます。
  • ベクターを優先する — ページにきれいな図が 1 つだけある場合は、通常、抽出品質で十分です。複数の図が複雑に配置されたページでは、品質と一貫性を高めるため、主要な図を TikZ で描き直すことを検討してください。
  • 解像度を確認する — 抽出した画像の幅が 800px 未満の場合、プロジェクターでピクセル化して見える可能性があることをユーザーに警告します。より高解像度のソースを探すか、TikZ で描き直すことを提案します。
  • 表は抽出しない — PDF の表はラスタライズすると品質が低下します。必ず booktabs を使って LaTeX で表を作り直します。
  • プリアンブルの依存関係 — プリアンブルに \usepackage{graphicx} があることを確認し、なければ追加します。subfigure を使用する場合は、\usepackage{subcaption} もあることを確認します。

3. 検証プロトコル

すべてのタスクの最後に検証を行います。 これは必須です。

[ ] Compiled without errors (xelatex exit code 0)
[ ] No overfull hbox > 10pt
[ ] All citations resolve
[ ] PDF opens and renders correctly
[ ] Visual spot-check of modified slides

4. ドメインレビュー(テンプレート)

内容の正確さについて(見せ方ではなく)、次の5つの観点からレビューします。

  1. 前提条件のストレステスト — すべての前提が明示されており、十分かつ必要ですか?
  2. 導出の検証 — 各ステップは妥当ですか? 分解した要素の合計は全体と一致しますか?
  3. 引用の忠実性 — スライドは引用した論文を正確に表していますか?
  4. コードと理論の整合性 — コードはスライドの数式どおりに実装されていますか?
  5. 逆向きの論理チェック — 結論から設定に向かって読み進め、すべての主張が裏付けられていますか?

重大度:CRITICAL = 数学的に誤り。MAJOR = 前提条件の欠落。MINOR = さらに明確にできる点。


5. トラブルシューティング

エラー: ! Undefined control sequence. \llbracket 原因: 二重括弧に必要な stmaryrd パッケージがありません。 修正方法: プリアンブルに \usepackage{stmaryrd} を追加します。または、代替手段として \newcommand{\llbracket}{[\![} を定義します。

エラー: 特定のスライドで Overfull \vbox 原因: フレームの高さに対してコンテンツが多すぎます。 修正の優先順位:

  1. \vspace の値を小さくします
  2. テキストを短くします(電文調)
  3. 2枚のスライドに分割します
  4. 1つの要素に \small を使います(スライド全体には使いません)
  5. 最終手段として \footnotesize を使います(\tiny は使用しないでください)

エラー: XeLaTeX で Font "XXX" not found 原因: システムフォントがインストールされていないか、フォント名が正しくありません。 修正方法: fc-list | grep "FontName" を使って、利用可能なフォントを確認します。カスタムフォントを利用できない場合は、デフォルトの Latin Modern に切り替えます。

エラー: 数式がスライドの幅を超えます 原因: 項が多く長い数式です。 修正の優先順位:

  1. \begin{align} を使い、自然な位置(=、+)で改行します
  2. 中間変数を導入して式を短くします
  3. 最終手段として \resizebox{\textwidth}{!}{...} を使います(可読性が低下します)

エラー: Quarto/ウェブ上で PDF 画像が表示されません 原因: ブラウザーは PDF をインライン表示できません。 修正方法: SVG に変換します:pdf2svg input.pdf output.svg。図には PNG を使用しないでください(ラスタ画像はぼやけます)。

エラー: alertblock/exampleblock/block 内のコンテンツが見た目上はみ出しているのに、コンパイラーの警告が 0 件です 原因: Beamer は block 環境内のオーバーフロー警告を抑制します。発生しうる問題は次の2種類です。

  • 垂直方向:ディスプレイ数式とその下のテキストがボックスの高さを超え、下部のコンテンツが下枠からはみ出します。\vspace{-Xpt} があると悪化します。
  • 水平方向:block 内部のパディングによって実効幅が約 15% 狭まり、幅の広い数式が横にはみ出します。 修正の優先順位(垂直方向 — 最も一般的):
  1. ボックス内の \vspace{-Xpt} を削除するか、値を小さくします
  2. ボックス内のコンテンツは最小限にします。ディスプレイ数式を1つ、または箇条書きを数項目にとどめ、両方は入れません
  3. 数式の下の説明文をボックスの外に移します(\end{...block} の後に通常のテキストとして配置します)
  4. 別々のボックスまたはスライドに分割します 修正の優先順位(水平方向):
  5. \qquad を \quad または , に置き換えます
  6. 補助的な記法(例:サンプリングの矢印)を別の行に移します
  7. 自然な位置で \\ を使って数式を分割します
  8. 数式をボックスの外に移します コンパイル時の警告だけに頼らないでください — PDF 内の色付きボックスをすべて目視で確認してください。

コメント