name: extract-tikz description: 从Beamer源文件中提取TikZ图表,编译为PDF,使用0-based索引转换为SVG。用于更新Quarto幻灯片中的TikZ图表。 argument-hint: “[LectureN, 例如 Lecture2]” allowed-tools: [“Read”, “Bash”, “Glob”]
提取TikZ图表到SVG
从Beamer源文件中提取TikZ图表,编译为多页PDF,并将每页转换为SVG,用于Quarto幻灯片。
步骤
步骤0:新鲜度检查(强制性)
在编译前,验证extract_tikz.tex是否与当前Beamer源文件匹配。
- 找到Beamer源文件:
ls Slides/$ARGUMENTS*.tex - 从Beamer中提取所有
\begin{tikzpicture}块 - 与
Figures/$ARGUMENTS/extract_tikz.tex进行比较 - 如果存在任何差异:从Beamer源文件更新extract_tikz.tex
- 如果extract_tikz.tex不存在:从头创建它
步骤1:导航到讲座的Figures目录
cd Figures/$ARGUMENTS
步骤2:编译extract_tikz.tex文件
TEXINPUTS=../../Preambles:$TEXINPUTS xelatex -interaction=nonstopmode extract_tikz.tex
步骤3:计算页数
pdfinfo extract_tikz.pdf | grep "Pages:"
步骤4:使用0-based索引将每页转换为SVG
关键:PDF页是1-indexed,但输出SVG文件是0-indexed!
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
步骤5:同步到docs/以进行部署
cd ../..
./scripts/sync_to_docs.sh $ARGUMENTS
步骤6:验证SVG文件
- 读取2-3个SVG文件,确认它们包含有效的SVG标记
- 确认文件大小合理(不为0字节)
步骤7:报告结果
源数据真实性提醒
TikZ图表必须先在Beamer .tex文件中编辑,然后逐字复制到extract_tikz.tex。参见.claude/rules/single-source-of-truth.md。