extract-tikz について
BeamerのソースからTikZ図を抽出し、複数ページのPDFにコンパイルして、Quartoスライド用のSVGに変換するスキルです。ソースの整合性と作図ルールを確認し、視覚レビューも行います。
主な機能
- 01抽出ファイルとBeamerソースの照合
- 02TikZの予防ルール確認
- 03複数ページPDFへのコンパイル
- 04ページごとのSVG変換
- 05ファイル同期と視覚レビュー
活用シーン
- 01Beamerの図をQuartoスライドで再利用
- 02TikZソース変更後のSVG再生成
- 03図のラベルと形状の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pedrohcgs/ claude-code-my-workflow --skill extract-tikzインストール後、Claude Code で/extract-tikzを入力して読み込まれたか確認します。
詳細
TikZ 図を SVG に抽出する
Beamer ソースから TikZ 図を抽出し、複数ページの PDF にコンパイルしてから、各ページを Quarto スライドで使用する SVG に変換します。
抽出ではなく、新しい図を作成しますか?
/new-diagramを使用してください。事前に適用された防止ルールとともに、templates/tikz-snippets/からひな形を作成します。
手順
ステップ 0:最新状態の確認(必須)
コンパイルする前に、extract_tikz.tex が現在の Beamer ソースと一致していることを確認してください。
- Beamer ソースを探します:
ls Slides/$ARGUMENTS*.tex - Beamer からすべての
\begin{tikzpicture}ブロックを抽出します Figures/$ARGUMENTS/extract_tikz.texと比較します- 差異が1つでもある場合:Beamer ソースから
extract_tikz.texを更新します extract_tikz.texが存在しない場合:新規作成します
ステップ 1:防止ルールの事前チェック(必須 — 違反があれば中止)
コンパイルする前に、Figures/$ARGUMENTS/extract_tikz.tex 内のすべての \begin{tikzpicture} ブロックが .claude/rules/tikz-prevention.md の防止ルールを満たしていることを確認します。この事前チェックには、/new-diagram と共有する小さな Python スクリプトを使用します。これにより、両方のスキルで同じ動作が適用されます。
python3 scripts/check-tikz-prevention.py "Figures/$ARGUMENTS/extract_tikz.tex"
チェック項目:
- P3 — ノードのスケーリングを伴わない
scale=X。scale=のみでは座標は縮小されますが、テキストは縮小されません。許可される形式:scale=X, every node/.style={scale=X}またはscale=X, transform shape。チェッカーは、複数行にわたる場合も含め、\begin{tikzpicture}[...]オプションブロック全体を解析します。 - P4 — エッジラベルの方向キーワード。 すべてのエッジラベル(
\draw内のnode)には、above、below、left、right、または複合形(例:above left)を指定する必要があります。midwayのみではパス上の位置を示すだけで、方向を示しません。チェッカーは\draw ...;文全体をスキャンするため、\drawが1行目にあり、node[...]{...}が次の行にある場合も両者を関連付けます。
事前チェックで強制しない項目にも注意してください。P1(ボックス付きノードの明示的な寸法)と P2(座標マップのコメント)は構造的なルールであり、ここではなくステップ 8 の tikz-reviewer が検出します。
終了コード:0 = すべてのファイルが合格、1 = P3/P4 違反が1つ以上(stderr にファイル、行、スニペット、ルールを表示)、2 = 使用方法のエラー。
終了コードが0以外の場合:処理を中止し、該当する行を報告して、Beamer ソース(単一の信頼できる情報源)を修正するようユーザーに依頼します。コンパイルしてはいけません。
ステップ 2:講義の Figures ディレクトリに移動
cd Figures/$ARGUMENTS
ステップ 3:extract_tikz.tex ファイルをコンパイル
TEXINPUTS=../../Preambles:$TEXINPUTS xelatex -interaction=nonstopmode extract_tikz.tex
ステップ 4:ページ数を数える
pdfinfo extract_tikz.pdf | grep "Pages:"
ステップ 5:0始まりのインデックスを使って各ページを SVG に変換
重要:PDF のページ番号は1始まりですが、出力される SVG ファイルは0始まりです!
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
ステップ 6:デプロイ用に docs/ に同期
cd ../..
./scripts/sync_to_docs.sh $ARGUMENTS
ステップ 7:SVG ファイルを確認
- SVG ファイルを2~3個読み込み、有効な SVG マークアップが含まれていることを確認します
- ファイルサイズが妥当であること(0バイトではないこと)を確認します
ステップ 8:視覚的な品質レビュー(tikz-reviewer)
TikZ ソースブロックを tikz-reviewer エージェント(Agent ツールで subagent_type=tikz-reviewer を指定)に渡し、ラベルの重なり、幾何学的な誤り、視覚的な不整合を検出します。レビュー担当者は .claude/rules/tikz-measurement.md の具体的なパスと数式を引用します。NEEDS REVISION または REJECTED が返された場合は、次の手順を繰り返します。
- 推奨された修正を Beamer の
.texソース(単一の信頼できる情報源)に適用します。 - 更新したブロックを
extract_tikz.texに再コピーします。 - 防止ルールの事前チェック(ステップ 1)を再実行してから、コンパイルします。
- SVG を再生成し、再同期します。
- tikz-reviewer を再度実行します。
tikz-reviewer が APPROVED を返した時点で終了します(最大5ラウンド)。
ステップ 9:結果を報告
信頼できる情報源に関する注意
TikZ 図は必ず最初に Beamer の .tex ファイルで編集し、その後 extract_tikz.tex にそのままコピーしてください。.claude/rules/single-source-of-truth.md を参照してください。