meta: CLAUDE.md 补"改完即提交"习惯

This commit is contained in:
2026-06-22 12:27:04 +08:00
parent b3c3011be5
commit a6394b5c3e
+3 -1
View File
@@ -28,7 +28,7 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
# LaTeX 操作约束 # LaTeX 操作约束
- **默认不编译**。阶段性收尾或涉及交叉引用/宏定义的改动后用 `xelatex -synctex=1` 验证:至少跑两次让 ref 稳定,有 bib 引用时夹一次 `biber`;检查 log 里的 `! `、`undefined references`、`label(s) may have changed`,全部消除后再 commit。 - **修改完成后默认编译验证**(一律带 `-synctex=1`)。每次改动收尾即编译:至少跑两次让 ref 稳定,有 bib 引用时夹一次 `biber`(或直接 `latexmk -xelatex -synctex=1` 自动处理多遍与 biber);检查 log 里的 `! `、`undefined references`、`label(s) may have changed`,全部消除后再 commit。
- **编译一律带 `-synctex=1`**:裸 `xelatex` 会覆盖 PDF 却不更新 `.synctex.gz`,使 VS Code 源码↔PDF 双向索引(SyncTeX)失效。若已用裸命令编过,补跑一次 `xelatex -synctex=1` 重建 synctex 即可。 - **编译一律带 `-synctex=1`**:裸 `xelatex` 会覆盖 PDF 却不更新 `.synctex.gz`,使 VS Code 源码↔PDF 双向索引(SyncTeX)失效。若已用裸命令编过,补跑一次 `xelatex -synctex=1` 重建 synctex 即可。
- **编译产物在 .gitignore,不主动 add,也不主动 rm**:用户在本地可能反复使用。 - **编译产物在 .gitignore,不主动 add,也不主动 rm**:用户在本地可能反复使用。
- **不读编译产物**:`*.aux`、`*.log`、`*.bbl`、`*.bcf`、`*.synctex.gz`、`*.run.xml`、`*.toc`、`*.ist`、`*.glo`、`*.acn`、根目录历史 PDF(`doa_doppler_est_*.pdf`)、`*.zip`。 - **不读编译产物**:`*.aux`、`*.log`、`*.bbl`、`*.bcf`、`*.synctex.gz`、`*.run.xml`、`*.toc`、`*.ist`、`*.glo`、`*.acn`、根目录历史 PDF(`doa_doppler_est_*.pdf`)、`*.zip`。
@@ -41,6 +41,7 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
- **标题正下方紧贴的多行公式用 `\tightalign`**:`align`/`gather` 等 amsmath 多行环境不走 TeX 原生 `$$`,紧跟标题(section/subsection/subsubsection/`\paragraph`)时会比 `equation` 多出约一行空白。需编号贴末行(故不改用 `equation`+`aligned`,其号垂直居中)时,在标题与公式之间插入 `\tightalign`(preamble 定义为 `\vspace*{-\baselineskip}`)抵消;若该公式本可单编号,也可直接换 `equation`+`aligned`。 - **标题正下方紧贴的多行公式用 `\tightalign`**:`align`/`gather` 等 amsmath 多行环境不走 TeX 原生 `$$`,紧跟标题(section/subsection/subsubsection/`\paragraph`)时会比 `equation` 多出约一行空白。需编号贴末行(故不改用 `equation`+`aligned`,其号垂直居中)时,在标题与公式之间插入 `\tightalign`(preamble 定义为 `\vspace*{-\baselineskip}`)抵消;若该公式本可单编号,也可直接换 `equation`+`aligned`。
- **正文已定义缩写用 `\gls{key}`**:`\newacronym` 词条的短形式在正文出现时一律用 `\gls`,不写裸短形式。例外(保留裸短形式):section/subsection 标题、`\caption` 题注、数学模式内的记号与下标(如 $\mathbf a_{\mathrm{UPA}}$、$\widehat{\bm\Theta}_{\mathrm{CDML}}$)、以及"全称(缩写)"并列释义。 - **正文已定义缩写用 `\gls{key}`**:`\newacronym` 词条的短形式在正文出现时一律用 `\gls`,不写裸短形式。例外(保留裸短形式):section/subsection 标题、`\caption` 题注、数学模式内的记号与下标(如 $\mathbf a_{\mathrm{UPA}}$、$\widehat{\bm\Theta}_{\mathrm{CDML}}$)、以及"全称(缩写)"并列释义。
- **正文交叉引用**:节用 `第~\ref{}~节`、小节用 `第~\ref{}~小节`(区间 `第~\ref{A}--\ref{B}~小节`);附录(节与小节)统一用 `\appref{}`,渲染为附录 X 或附录 X.Y。不用 `\S`/§,正文也不写裸 `\ref`(附录会漏掉"附录"前缀)。 - **正文交叉引用**:节用 `第~\ref{}~节`、小节用 `第~\ref{}~小节`(区间 `第~\ref{A}--\ref{B}~小节`);附录(节与小节)统一用 `\appref{}`,渲染为附录 X 或附录 X.Y。不用 `\S`/§,正文也不写裸 `\ref`(附录会漏掉"附录"前缀)。
- **公式引用用 `\eqref{}`,不用"上式/上一式/此式/下式"等位置指代**:被引用的公式需带 `\label`;若目标公式尚无 label,先补 label 再引用。`\eqref` 与相邻中文之间前后留空格(句首句末、紧邻标点除外)——它输出 Latin `(X.Y)`,无 xeCJK 空格泄漏问题,与输出中文、须紧贴前字的 `\appref` 相反。
--- ---
@@ -84,6 +85,7 @@ LaTeX 学习笔记:相控阵 DoA + Doppler 估计与 CRB 推导。作者 Josh
## 其他硬规则 ## 其他硬规则
- **结构改动与内容改动分开 commit**——"重命名 A6 → E" (`struct`) 与 "E.2 新增多用户推导" (`content`) 必须是两个 commit - **结构改动与内容改动分开 commit**——"重命名 A6 → E" (`struct`) 与 "E.2 新增多用户推导" (`content`) 必须是两个 commit
- **改完即提交**——每个逻辑改动经编译验证后立即按规范 commit,不把多个改动攒在工作区;攒着会让 struct 与 content 混在同一文件、日后无法干净拆 commit
- **不写 `Co-Authored-By` 尾注**——个人学习笔记 - **不写 `Co-Authored-By` 尾注**——个人学习笔记
- subject 与 body 风格不一致时,参考既往 commit 历史定调 - subject 与 body 风格不一致时,参考既往 commit 历史定调