Skill: zlhad/ieee-reference-manager (version 1.0.0)

--- name: ieee-reference-manager description: IEEE Trans 论文参考文献全流程管理助手。负责参考文献的格式校验、引用审查、BibTeX 条目修复、期刊名标准化、DOI/元数据在线验证、Early Access 处理、作者数量合规、重复条目检测等。当用户需要"检查参考文献"、"修复引用格式"、"验证 DOI"、"整理 bib 文件"、"参考文献审查"时触发。 allowed-tools: Read, Edit, Write, Bash, Glob, Grep, WebSearch, WebFetch, Agent model: opus --- # IEEE Trans 论文参考文献管理助手 ## 核心能力 ### 1. BibTeX 文件审查与修复 - 检测重复条目（相同 DOI / 相似标题 / 重复 key） - 检测缺失必要字段（author, title, year, journal/booktitle, pages, volume, number） - Early Access 文章识别与格式修正（删除占位 pages，添加 `note = {early access}`） - 作者数量合规检查（IEEE 规范：≤6 位全列，≥7 位用 et al.） - BSTcontrol 配置检查与建议 - 清理未引用的冗余条目 ### 2. 引用格式审查 - 连续 `\cite{}` 合并检查（如 `\cite{a}, \cite{b}` → `\cite{a, b}`） - 引用键名与 .bib 文件交叉验证（检测 missing/undefined references） - 检查是否有被引用但 .bib 中不存在的条目 - 检查 .bib 中存在但未被引用的条目 ### 3. 期刊名标准化 - 检查 journal 字段是否使用 IEEE 标准宏（如 `IEEE_J_WCOM`、`IEEE_J_VT`） - 检测直接写全名或非标准缩写的条目 - 利用 IEEEabrv.bib / IEEEfull.bib 进行自动匹配和替换建议 - Conference 条目检查 `booktitle` 是否完整 ### 4. DOI 与元数据在线验证 - 通过 DOI 在线查询验证论文元数据（标题、作者、年份、期刊） - 检测 DOI 与实际论文是否匹配 - 检测疑似错误的 DOI（格式不正确、无法解析） - 验证论文标题是否存在明显拼写错误 ### 5. 格式规范检查 - `@article` vs `@inproceedings` 类型检查（期刊用 article，会议用 inproceedings） - Conference 条目是否有 `booktitle`（不应用 `journal`） - 页码格式检查（应使用 `--` 而非 `-`） - 年份合理性检查 - 检查 `copyright`、`langid` 等非必要字段（可建议清理） - 标题大小写保护检查（缩写词、专有名词是否用 `{{}}` 包裹） ### 6. 扩展条目类型支持 - `@book` / `@incollection`：书籍和章节（需 publisher + address） - `@techreport`：技术报告（需 institution + number） - `@standard`：技术标准（IEEE / 3GPP / ISO，需 organization + number） - `@electronic`：在线资源和网页（需 url + year） - `@misc`：arXiv 预印本、待发表论文、RFC、白皮书等 - `@phdthesis` / `@mastersthesis`：学位论文（需 school + address） - `@patent`：专利（需 nationality + number） ## 工作流程 ### 模式 A：全面审查（用户说"检查参考文献"、"审查 ref"、"review references"） **步骤 1：文件定位** - 自动查找工作目录下的 `.bib` 文件和主 `.tex` 文件 - 识别 IEEEabrv.bib / IEEEfull.bib（标准宏文件，不修改） - 识别用户的 Ref.bib（待审查文件） **步骤 2：结构性检查** - 解析所有 .bib 条目，提取 key、类型、字段 - 检测重复条目（基于 DOI 精确匹配 + 标题模糊匹配） - 检测缺失必要字段 - 检查条目类型是否正确（article/inproceedings） **步骤 3：引用交叉验证** - 从 main.tex 提取所有 `\cite{...}` 引用键 - 与 .bib 文件条目交叉比对 - 报告：missing references（cited but not in bib）、unused entries（in bib but not cited） **步骤 4：格式检查** - 连续 \cite 合并检查 - 期刊名宏检查 - Early Access 识别 - 作者数量 + BSTcontrol 检查 - 页码格式检查 **步骤 5：输出报告** 以表格形式汇总所有问题，按严重程度排序： - **严重**（会导致编译错误或参考文献列表错误） - **警告**（格式不规范但不影响编译） - **建议**（可改可不改的优化项） ### 模式 B：DOI 验证（用户说"验证 DOI"、"verify references"、"检查论文真实性"） **步骤 1**：提取所有 .bib 条目的 DOI **步骤 2**：逐条通过 WebSearch 或 DOI resolver 验证 **步骤 3**：比对返回的元数据与 .bib 中的 title/author/year **步骤 4**：标记不匹配或无法解析的条目 ### 模式 C：单条修复（用户指定某个条目或某个问题） 直接定位并修复，遵循学术写作工作流（先展示 Before/After，等确认后修改）。 ### 模式 D：新增参考文献（用户提供论文信息，需要生成 BibTeX 条目） **步骤 1**：根据用户提供的信息（DOI / 标题 / 作者）搜索论文 **步骤 2**：生成规范的 BibTeX 条目（使用 IEEE 宏、完整字段） **步骤 3**：检查是否与现有条目重复 **步骤 4**：建议插入位置和引用键命名 ## 核心规则 ### IEEE 参考文献格式规范 1. **作者**：BibTeX 中使用全名（`Last, First Middle`），IEEEtran.bst 自动缩写为首字母 2. **期刊名**：必须使用 IEEE 标准宏（IEEEabrv.bib 中定义），不要硬编码全名或缩写 3. **作者数量**： - ≤6 位：全部列出 - ≥7 位：列第 1 位 + *et al.* - 通过 BSTcontrol 的 `ctluse_forced_etal`、`ctlmax_names_forced_et_al`、`ctlnames_show_etal` 控制 4. **Early Access 文章**： - 删除 `pages` 字段（`pages = {1--1}` 是 IEEE Xplore 占位符） - 添加 `note = {early access}` - 保留 `doi` 字段（唯一永久标识符） - 不需要 `volume` 和 `number` 5. **引用合并**：相邻的 `\cite{a}, \cite{b}` 应合并为 `\cite{a, b}` 6. **条目类型**： - 期刊论文 → `@article`（需要 `journal`） - 会议论文 → `@inproceedings`（需要 `booktitle`，不用 `journal`） 7. **页码**：使用双连字符 `--`（如 `pages = {100--110}`） 8. **DOI**：标准 IEEEtran.bst 默认不显示 DOI，但保留 `doi` 字段无害且有助于验证 9. **BSTcontrol**：必须在 .bib 文件开头定义，且在 .tex 中用 `\bstctlcite{IEEEexample:BSTcontrol}` 调用 ### 命名约定 BibTeX key 推荐格式：`首作者姓年份+关键词`，如 `zhao2019computation`、`li2025secrecy` ### 常见错误清单 | 错误类型 | 示例 | 修复方法 | |---------|------|---------| | 重复条目 | 同一论文两个不同 key | 删除重复，统一引用 | | \cite 未合并 | `\cite{a}, \cite{b}` | → `\cite{a, b}` | | Early Access 保留占位页码 | `pages = {1--1}` | 删除 pages，加 note | | Conference 用了 @article | `@article` + `booktitle` | 改为 `@inproceedings` | | 期刊名硬编码 | `journal = {IEEE Trans. Wireless Commun.}` | → `journal = IEEE_J_WCOM` | | 标题拼写错误 | "Computation Computational" | 核实原文实际标题 | | 作者过多未截断 | 7+ 作者全列 | BSTcontrol 启用 et al. | | 缺失必要字段 | 无 volume/number/pages | 通过 DOI 补全 | ## 辅助工具集成 项目中可能存在以下辅助脚本，如存在则优先利用： ### analyze_bib.py - 功能：解析 .bib 文件，检测重复、分析引用覆盖率 - 调用：`python analyze_bib.py` - 输出：详细分析报告 ### nameTranslate.py - 功能：将 .bib 中硬编码的期刊名替换为 IEEE 标准宏 - 调用：`python nameTranslate.py` - 依赖：IEEEfull.bib 用于全名匹配 ## 注意事项 1. **不修改 IEEEabrv.bib 和 IEEEfull.bib**——这些是 IEEE 官方标准宏文件 2. **修改前必须展示 Before/After**，等用户确认后再执行（遵循全局 CLAUDE.md 规则） 3. **DOI 验证时注意**：部分新发表或 Early Access 文章可能尚未被搜索引擎索引 4. **标题中的特殊格式**（如 `{{...}}`）是 BibTeX 的大小写保护，不要随意删除 5. **搜索验证论文时**，优先使用 DOI 查询，其次使用标题+作者搜索 6. **不要自动删除未引用条目**——用户可能正在写作中，留待确认

path: references/ieee-reference-rules.md
content: # IEEE 参考文献格式规范详细手册

> 来源：[IEEE Reference Guide](https://journals.ieeeauthorcenter.ieee.org/wp-content/uploads/sites/7/IEEE_Reference_Guide.pdf)、[IEEEtran BibTeX HOWTO](https://www.michaelshell.org/tex/ieeetran/bibtex/)

## 一、条目类型与必需字段

### @article（期刊论文）
```bibtex
@article{key,
  author  = {Last1, First1 and Last2, First2},
  title   = {Paper Title},
  journal = IEEE_J_WCOM,          % 必须用 IEEE 宏
  year    = {2024},
  month   = mar,                   % 小写三字母缩写，不加花括号
  volume  = {23},
  number  = {3},
  pages   = {1728--1741},          % 双连字符
  doi     = {10.1109/TWC.xxx}
}
```

### @inproceedings（会议论文）
```bibtex
@inproceedings{key,
  author    = {Last1, First1 and Last2, First2},
  title     = {Paper Title},
  booktitle = {2024 IEEE International Conference on Communications (ICC)},
  year      = {2024},
  month     = jun,
  pages     = {100--105},
  doi       = {10.1109/ICC.xxx}
}
```

### Early Access 文章
```bibtex
@article{key,
  author  = {Last1, First1},
  title   = {Paper Title},
  journal = IEEE_J_WCOM,
  year    = {2025},
  note    = {early access},        % 关键标记
  doi     = {10.1109/TWC.xxx}      % 必须保留
  % 不写 volume, number, pages
}
```

### @book（书籍）
```bibtex
% 作者编写的书籍
@book{key,
  author    = {Last1, First1 and Last2, First2},
  title     = {Book Title},
  publisher = {Publisher Name},
  address   = {City, State/Country},
  year      = {2020}
}

% 编辑主编的书籍
@book{key,
  editor    = {Last1, First1 and Last2, First2},
  title     = {Edited Book Title},
  publisher = {Publisher Name},
  address   = {City, State/Country},
  year      = {2020}
}

% 含版次和丛书信息
@book{key,
  author    = {Last1, First1},
  title     = {Book Title},
  edition   = {Second},
  series    = {Series Name},
  volume    = {5},
  publisher = {Springer-Verlag},
  address   = {Berlin, Germany},
  year      = {2020}
}
```

### @incollection（书籍章节）
```bibtex
@incollection{key,
  author    = {Last1, First1},
  title     = {Chapter Title},
  editor    = {Editor Last, Editor First},
  booktitle = {Book Title},
  publisher = {Publisher Name},
  address   = {City, State/Country},
  year      = {2020},
  chapter   = {3},
  pages     = {45--78}
}
```

### @techreport（技术报告）
```bibtex
@techreport{key,
  author      = {Last1, First1 and Last2, First2},
  title       = {Report Title},
  institution = {Institution Name},
  address     = {City, State/Country},
  number      = {TR-2024-001},
  month       = aug,
  year        = {2024}
}
% type 字段可覆盖默认的 "Tech. Rep." 标识
% 如 type = {CMPSCI Tech. Rep.}
```

### @standard（技术标准：IEEE / 3GPP / ISO 等）
```bibtex
% IEEE 标准
@standard{key,
  title        = {Wireless {LAN} Medium Access Control {(MAC)} and
                  Physical Layer {(PHY)} Specification},
  organization = {IEEE},
  address      = {Piscataway, NJ},
  number       = {802.11},
  year         = {2020}
}

% 3GPP 标准
@standard{key,
  title        = {Study on New Radio ({NR}) Access Technology},
  organization = {3rd Generation Partnership Project ({3GPP})},
  type         = {TR},                   % 或 TS
  number       = {38.912 V15.0.0},
  month        = jun,
  year         = {2018}
}

% ISO 标准
@standard{key,
  title        = {Information Technology---Open Systems Interconnection},
  organization = {ISO/IEC},
  number       = {7498-1},
  year         = {1994}
}
```
> **注意**：`@standard` 是 IEEEtran.bst 扩展类型，非标准 BibTeX。若使用其他 .bst 可用 `@misc` 替代。

### @electronic（在线资源 / 网页）
```bibtex
% 有作者的在线资源
@electronic{key,
  author       = {Last1, First1},
  title        = {Webpage or Resource Title},
  url          = {https://example.com/resource},
  year         = {2024}
}

% 带来源描述（howpublished 描述资源形式，如 mailing list、Internet draft 等）
@electronic{key,
  author       = {Last1, First1},
  title        = {Resource Title},
  howpublished = {Internet draft},           % 描述资源类别，非 [Online]
  url          = {https://example.com/draft},
  year         = {2024}
}

% 无个人作者的网站（用 key 字段提供排序依据）
@electronic{key,
  title        = {The {IEEE} Website},
  url          = {https://www.ieee.org/},
  year         = {2024},
  key          = {IEEE}
}
```
> **IEEEtran.bst 渲染规则**：`@electronic` 条目会自动生成 `[Online]. Available: URL` 格式输出。
> **不要**手动写 `howpublished = {[Online]}`，否则会导致重复输出。`howpublished` 应用于描述来源类别（如 `Internet draft`、`end2end-interest mailing list`）。
>
> **访问日期**：IEEE 要求在线资源注明访问日期。可通过 `note` 字段添加：
> ```bibtex
> note = {Accessed: Mar. 10, 2026}
> ```
> 对于频繁更新的网页建议加上；对于稳定的在线资源（如官方文档）可省略。
>
> `@electronic` 是 IEEEtran.bst 扩展类型。若使用其他 .bst，可用 `@misc` + `howpublished = {\url{...}}` 替代。

### @misc（arXiv 预印本 / 待发表 / 其他）

#### arXiv 预印本
```bibtex
@misc{key,
  author       = {Last1, First1 and Last2, First2},
  title        = {Paper Title},
  howpublished = {arXiv preprint arXiv:2401.12345},
  year         = {2024}
}
```
> **IEEE 官方要求**：若论文已被期刊 Early Access 或正式发表，应引用出版版本而非 arXiv 版本。

#### 待发表（To Be Published）
```bibtex
@misc{key,
  author       = {Last1, First1},
  title        = {Paper Title},
  howpublished = IEEE_J_WCOM,
  note         = {to be published},
  year         = {2025}
}
```

#### RFC 文档
```bibtex
@misc{key,
  author       = {Last1, First1 and Last2, First2},
  title        = {{RFC} Title},
  howpublished = {RFC 9293},
  month        = aug,
  year         = {2022}
}
```

#### 白皮书 / 数据手册
```bibtex
@misc{key,
  title        = {White Paper Title},
  howpublished = {White Paper},
  organization = {Company Name},
  year         = {2024}
}
```

### @phdthesis / @mastersthesis（学位论文）
```bibtex
@phdthesis{key,
  author  = {Last1, First1},
  title   = {Dissertation Title},
  school  = {University Name},
  address = {City, State/Country},
  year    = {2023}
}

@mastersthesis{key,
  author  = {Last1, First1},
  title   = {Thesis Title},
  school  = {University Name},
  address = {City, State/Country},
  year    = {2023}
}
% type 字段可覆盖默认标识，如 type = {M. Eng. thesis}
```

### @patent（专利）
```bibtex
@patent{key,
  author      = {Last1, First1 and Last2, First2},
  title       = {Patent Title},
  nationality = {United States},
  number      = {1234567},
  month       = sep,
  year        = {2023}
}
```
> `@patent` 是 IEEEtran.bst 扩展类型。支持 `assignee`、`dayfiled`、`monthfiled`、`yearfiled` 等字段。

---

## 二、IEEE 期刊宏对照表（常用）

| 宏名 | 全名 | 缩写 |
|------|------|------|
| `IEEE_J_WCOM` | IEEE Trans. Wireless Commun. | TWC |
| `IEEE_J_VT` | IEEE Trans. Veh. Technol. | TVT |
| `IEEE_J_JSAC` | IEEE J. Sel. Areas Commun. | JSAC |
| `IEEE_J_COM` | IEEE Trans. Commun. | TCOM |
| `IEEE_J_MC` | IEEE Trans. Mobile Comput. | TMC |
| `IEEE_J_IOT` | IEEE Internet Things J. | IoT-J |
| `IEEE_J_NET` | IEEE/ACM Trans. Netw. | ToN |
| `IEEE_J_AC` | IEEE Trans. Autom. Control | TAC |
| `IEEE_J_SP` | IEEE Trans. Signal Process. | TSP |
| `IEEE_J_IT` | IEEE Trans. Inf. Theory | TIT |
| `IEEE_J_ITS` | IEEE Trans. Intell. Transp. Syst. | TITS |
| `IEEE_J_IINF` | IEEE Trans. Ind. Informat. | TII |
| `IEEE_J_NSE` | IEEE Trans. Netw. Sci. Eng. | TNSE |
| `IEEE_J_COML` | IEEE Commun. Lett. | CL |
| `IEEE_O_ACC` | IEEE Access | Access |
| `IEEE_O_CSTO` | IEEE Commun. Surv. Tutorials | COMST |

完整列表见 IEEEabrv.bib。

## 三、BSTcontrol 配置

```bibtex
@ieeetranbstctl{IEEEexample:BSTcontrol,
  ctluse_forced_etal        = {yes},  % 启用 et al. 截断
  ctlmax_names_forced_et_al = {6},    % 超过 6 位时触发
  ctlnames_show_etal        = {1}     % 显示 1 位作者 + et al.
}
```

在 .tex 中必须调用：
```latex
\bstctlcite{IEEEexample:BSTcontrol}  % 放在第一个 \cite 之前
```

## 四、\cite 命令规范

| 场景 | 正确写法 | 错误写法 |
|------|---------|---------|
| 单引用 | `\cite{key}` | - |
| 多引用 | `\cite{key1, key2, key3}` | `\cite{key1}, \cite{key2}` |
| 文中提及 | `the authors in \cite{key}` | `the authors in [1]` |
| 句末引用 | `...method~\cite{key}.` | `...method \cite{key} .` |

注意：`~` 不换行空格保证引用不与前文断行。

## 五、常见错误与修复

### 5.1 月份格式
```bibtex
% 正确（IEEEtran.bst 自动格式化）
month = mar,
month = {Mar.},

% 错误
month = {March},
month = {3},
```

### 5.2 页码格式
```bibtex
% 正确
pages = {100--110},

% 错误
pages = {100-110},    % 单连字符
pages = {1--1},       % Early Access 占位符
```

### 5.3 标题大小写保护
BibTeX 默认将标题转换为 sentence case。需要保持大写的专有名词用 `{{}}` 保护：
```bibtex
title = {Deep {{Reinforcement Learning}} for {{UAV}} Networks}
```

**需要保护的常见情况：**
- 缩写词：`{{UAV}}`、`{{MIMO}}`、`{{NOMA}}`、`{{IoT}}`、`{{QoS}}`、`{{DRL}}`
- 专有名词/协议：`{{Lyapunov}}`、`{{Markov}}`、`{{Shannon}}`、`{{TCP}}`、`{{LTE}}`
- 算法/框架名：`{{MAPPO}}`、`{{PPO}}`、`{{Transformer}}`、`{{ResNet}}`
- 标准组织/系统：`{{IEEE}}`、`{{3GPP}}`、`{{OFDM}}`、`{{5G}}`、`{{NR}}`
- 注意：`booktitle`（会议名）不受此影响，无需保护

### 5.4 非 IEEE 期刊
对于非 IEEE 期刊（如 Springer, Elsevier），直接写缩写名：
```bibtex
journal = {J. Supercomput.},
```

## 六、DOI 验证方法

### 通过 DOI 解析器
URL 格式：`https://doi.org/10.1109/TWC.2024.xxxx`
- 正常：重定向到论文页面
- 异常：404 或无法解析

### 通过 IEEE Xplore 搜索
- 搜索标题或 DOI
- 比对作者、年份、期刊、页码

### 批量验证策略
1. 提取所有 DOI
2. 格式检查（应以 `10.` 开头）
3. 按优先级验证（Early Access > 近年 > 早期）


path: references/utility-scripts.md
content: # 参考文献辅助脚本核心逻辑

> 以下为两个常用辅助脚本的核心逻辑提取。当项目中存在这些脚本时优先直接调用；不存在时，可参考以下逻辑临时编写等效代码或由 LLM 直接处理。

## 一、analyze_bib.py — BibTeX 分析与引用交叉验证

### 核心功能
1. 解析 .bib 文件提取条目元数据（key, type, title, author, year, journal, line_number）
2. 重复检测：精确 key 匹配 + 标题模糊匹配（阈值 85%）
3. 问题 key 检测（空格、非 ASCII、LaTeX 特殊字符）
4. 从 .tex 提取 `\cite{...}` 引用键，支持多键展开
5. 交叉验证：unused entries + missing references

### 关键正则表达式

```python
# 解析 BibTeX 条目
entry_pattern = r'@(\w+)\{([^,]+),'

# 提取 title 字段
title_pattern = r'title\s*=\s*[{"]([^"}]+)[}"]'

# 提取 LaTeX 引用（含可选参数）
cite_pattern = r'\\cite(?:\[[^\]]*\])?\{([^}]+)\}'
```

### 标题相似度比较

```python
from difflib import SequenceMatcher

def normalize_title(title):
    """去除特殊字符、转小写、合并空白"""
    title = re.sub(r'[^a-zA-Z0-9\s]', '', title.lower())
    return ' '.join(title.split())

def title_similarity(t1, t2):
    return SequenceMatcher(None, normalize_title(t1), normalize_title(t2)).ratio()

# 阈值 > 0.85 判定为疑似重复
```

### 调用方式

```bash
# 在项目目录下运行（需要 Ref.bib 和 main.tex 在同目录）
python analyze_bib.py
```

输出包含：重复 key、相似标题、未使用条目、缺失引用的详细报告。

---

## 二、nameTranslate.py — 期刊名标准化

### 核心功能
1. 从 IEEEfull.bib 加载 IEEE 期刊全名 → 宏命令映射（约 400+ 条）
2. 扫描 Ref.bib 中硬编码的 `journal = {全名}` 字段
3. 精确匹配 → 直接替换为宏
4. 模糊匹配（cutoff=0.8）→ 近似替换
5. 未匹配 → 报告警告

### 关键正则表达式

```python
# 解析 IEEEfull.bib 的 @STRING 定义
string_pattern = r'@STRING\s*\{\s*(\S+)\s*=\s*(?:"([^"]+)"|\{([^}]+)\})\s*\}'

# 匹配 Ref.bib 中的 journal 字段（花括号包围）
journal_pattern = r'journal\s*=\s*{([^}]+)}'
```

### 替换逻辑

```python
from difflib import get_close_matches

# 1. 精确匹配
if journal_name in full_name_dict:
    macro = full_name_dict[journal_name]
    # journal = {IEEE Trans. Wireless Commun.} → journal = IEEE_J_WCOM

# 2. 模糊匹配（精确失败时）
close = get_close_matches(journal_name, full_name_dict.keys(), n=1, cutoff=0.8)
if close:
    macro = full_name_dict[close[0]]
```

### 调用方式

```bash
# 需要 IEEEfull.bib 和 ref.bib（注意文件名大小写）
python nameTranslate.py
```

### 注意事项
- 脚本默认读取 `ref.bib`（小写），实际项目可能用 `Ref.bib`（大写），需确认
- 已使用 IEEE 宏的条目（如 `journal = IEEE_J_WCOM`，无花括号）不会被匹配，不受影响
- 替换后建议人工确认，模糊匹配可能有误判

---

## 三、LLM 直接处理 vs 脚本处理的决策

| 场景 | 推荐方式 | 原因 |
|------|---------|------|
| 期刊名识别（<10条） | LLM | 常见期刊已在训练数据中 |
| 期刊名批量替换（>10条） | 脚本 | 系统性、无遗漏 |
| 重复检测（全文件） | 脚本 | O(n²) 比较，代码更可靠 |
| 单条 DOI 验证 | LLM + WebSearch | 需要网络能力 |
| 批量格式检查 | 两者结合 | 脚本扫描 + LLM 判断边界情况 |
| 新增条目生成 | LLM | 需要理解语义和规范 |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)