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至 session 暫存區,然後計算字數。每頁少於約 50 字表示檔案為掃描或圖片密集型:將每一頁作為影像讀取;文字轉存無用。 - 投影片組常僅以影像形式儲存方程式和圖形。即使有文字存在,仍應檢視頁面。
2. 檢查工具(先唯讀)
執行 which pdfinfo pdftotext pdftoppm soffice tectonic pdflatex。缺少的必要工具及其大小(參見 references/tooling.md)會放入第一個 MCQ 回合。沒有 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. 報告
簡要列出:寫入的檔案、每個檔案的涵蓋範圍、跳過的問題(來源已解決)、發現的差異以及編譯狀態。如果未編譯,請明確說明。