STEM 补充笔记(LaTeX)
从任何STEM源材料生成 .tex 格式的学习材料。用户通过多项选择题(AskUserQuestion)驱动所有选择,因此在构建之前务必询问。
支持文件(在到达相应步骤时读取):
references/tooling.md:软件、安装命令和大小、转换命令references/questions.md:MCQ问题库(包括轮次问题,含编译问题)references/style-guide.md:布局、标签、解题格式、验证和差异规则templates/formula_sheet.tex、templates/solutions.tex、templates/summary_notes.tex:需要复制的前导部分
工作流
1. 盘点源文件
- 列出用户指向的文件(文件夹或
@路径)。支持 PDF、PNG/JPG、PPTX/DOCX。 - 对每个PDF运行
pdfinfo(页数)和pdftotext -layout到会话暂存区,然后统计字数。每页字数少于约50字意味着是扫描或图像密集型文件:将每一页作为图像读取;文本转储无效。 - 幻灯片通常只将公式和图形保存为图像。即使有文本存在,仍然需要查看页面。
2. 检查工具(先只读)
运行 which pdfinfo pdftotext pdftoppm soffice tectonic pdflatex。任何缺失且需要的内容将进入第一批MCQ问题,并附上其大小(参见 references/tooling.md)。没有MCQ答案绝不安装。 仅在存在Office文件时才需要LibreOffice。如果用户以问题回答(例如“需要多少存储空间?”),先回答该问题,然后重新提问。
3. 接收MCQ问题
按照 references/questions.md 中的轮次提问,每次AskUserQuestion调用最多4个问题。将推荐选项放在第一位并标记为“(推荐)”。只提问用户所选输出对应的问题组。编译问题总是最后提问。 逐字阅读答案:自由文本答案覆盖选项。
4. 读取所有内容
- PDF:使用Read工具,指定
pages(每次调用最多20页,因此拆分较大范围),并一次性并行发出所有文件的所有页面范围读取请求。Read工具需要poppler的pdftoppm。 - 图片:直接读取。
- PPTX/DOCX:在暂存区转换为PDF(
soffice --headless --convert-to pdf --outdir <scratchpad> file),然后按PDF读取。 - 对每个问题或示例记录:源文件、幻灯片/页数、题号、源文件是否已完全或部分解决,以及任何给出的答案。
5. 求解并验证
- 处理范围内的每个问题。对于任何非平凡问题(曲线拟合、积分、力矩平衡、多步数值计算),使用暂存区中的简短
python3脚本检查数值。 - 与给出的答案进行比较。如果不一致,重新检查,然后在文档中和向用户报告差异。 绝不为了匹配给出的答案而强行修改计算过程。
- 在脚注或“为何如此”的注释中标明源文件中的笔误(符号错误、项错误、数据不一致)。
6. 编写 .tex 文件
- 从
templates/中的相应模板开始:保留其前导部分,替换%% TODO占位符。 - 遵循
references/style-guide.md:为每个条目打上标签(来源 · 幻灯片/页数 · 题号)、添加覆盖率表格、完整复述每个问题、用框标出答案。 - 使用仅ASCII源文件。注释仅使用单行
%注释,绝不使用多行横幅注释。 - 默认输出文件夹为源文件旁边的
latex/,除非用户另行指定。
7. 仅在用户选择时编译
- tectonic:
tectonic -X compile file.tex。MacTeX:latexmk -pdf file.tex。修复错误并重新编译,直到无误。 - 如果用户要求停止,立即停止任务(TaskStop),不要重试。
8. 报告
简要列出:写入的文件、每个文件涵盖的内容、跳过的题目(源文件中已有解答的)、发现的差异以及编译状态。如果未进行编译,请明确说明。