# Ref Style Converter

> 参考文献格式转换工具，可在APA、MLA、IEEE、Harvard四种主流学术格式间相互转换，支持批量处理和格式错误检查。当用户需要转换参考文献格式、检查引用是否正确，或提到citation、bibliography、APA/MLA/IEEE/Harvard格式、批量格式化引用等关键词时触发。

- Skill: `haomingz/ref-style-converter` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add haomingz/ref-style-converter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/haomingz/ref-style-converter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- License: MIT
- Author: haomingz (https://skillmd.com/u/haomingz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/haomingz/ref-style-converter

---


# Citation Formatter

参考文献格式转换工具，支持 APA (7th)、MLA (9th)、IEEE、Harvard 四种主流学术引用格式之间的相互转换，同时提供格式错误检查和批量处理能力。

## 支持的格式

| 格式 | 说明 | 示例 |
|------|------|------|
| APA | American Psychological Association 第7版 | `Smith, J. A. (2023). Title. *Journal*, *1*(2), 10-20.` |
| MLA | Modern Language Association 第9版 | `Smith, John A. "Title." *Journal*, vol. 1, no. 2, 2023, pp. 10-20.` |
| IEEE | Institute of Electrical and Electronics Engineers | `[1] J. A. Smith, "Title," *Journal*, vol. 1, no. 2, pp. 10-20, 2023.` |
| Harvard | Harvard Referencing Style | `Smith, J.A. (2023) 'Title', *Journal*, 1(2), pp. 10-20.` |

## Quick Start

### 1. 格式转换（文本输入）

将 APA 格式引用转为 IEEE 格式：

```bash
python3 scripts/citation_formatter.py convert --to ieee "Smith, J. A. (2023). Machine learning approaches. Nature, 12(3), 45-67."
```

### 2. 格式转换（结构化 JSON 输入，更精确）

```bash
echo '{"authors":["Smith, John A.","Jones, Mary B."],"year":"2023","title":"Machine learning approaches","journal":"Nature","volume":"12","issue":"3","pages":"45-67","entry_type":"article"}' | python3 scripts/citation_formatter.py format --style ieee
```

### 3. 格式错误检查

```bash
python3 scripts/citation_formatter.py check --style apa "Smith J (2023) Machine learning. Nature 12(3) 45-67"
```

### 4. 批量处理

```bash
# 从文件批量转换（每行一条引用）
python3 scripts/citation_formatter.py convert --to mla --input refs.txt

# 批量检查
python3 scripts/citation_formatter.py check --style apa --input refs.txt
```

### 5. 自动检测格式

```bash
python3 scripts/citation_formatter.py detect "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."
```

## 子命令详细说明

### `format` — 结构化数据格式化

将 JSON 格式的结构化引用数据转为指定格式的引用文本。**这是最可靠的方式**，因为不需要解析文本。

```bash
# 通过 stdin 传入 JSON
echo '{"authors":["Zhang, Wei"],"year":"2024","title":"Deep Learning","publisher":"Springer","entry_type":"book"}' | python3 scripts/citation_formatter.py format --style harvard

# 通过 --data 参数传入
python3 scripts/citation_formatter.py format --style apa --data '{"authors":["Li, Ming"],"year":"2024","title":"AI Methods","journal":"Science","volume":"5","pages":"1-10","entry_type":"article"}'

# 批量：传入 JSON 数组文件
python3 scripts/citation_formatter.py format --style mla --input citations.json
```

**JSON 字段说明：**

| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `authors` | `string[]` | ✓ | 作者列表，格式 `"姓, 名"` |
| `year` | `string` | ✓ | 出版年份 |
| `title` | `string` | ✓ | 标题 |
| `journal` | `string` | 期刊文章必填 | 期刊名称 |
| `volume` | `string` | | 卷号 |
| `issue` | `string` | | 期号 |
| `pages` | `string` | | 页码，如 `"45-67"` |
| `publisher` | `string` | 书籍必填 | 出版社 |
| `doi` | `string` | | DOI |
| `url` | `string` | | URL |
| `entry_type` | `string` | | `article` / `book` / `chapter` / `webpage` |
| `edition` | `string` | | 版次 |
| `city` | `string` | | 出版城市 |

### `parse` — 文本解析为结构化数据

```bash
python3 scripts/citation_formatter.py parse "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."
# 输出 JSON 结构化数据
```

### `convert` — 格式互转

```bash
# 自动检测源格式，转为目标格式
python3 scripts/citation_formatter.py convert --to harvard "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."

# 指定源格式
python3 scripts/citation_formatter.py convert --from apa --to ieee "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."

# JSON 输出
python3 scripts/citation_formatter.py convert --to mla --json "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."
```

### `check` — 格式错误检查

```bash
# 检查 APA 格式是否正确
python3 scripts/citation_formatter.py check --style apa "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."

# JSON 输出（方便程序处理）
python3 scripts/citation_formatter.py check --style apa --json "Smith, J. A. (2023). Title. Nature, 12(3), 45-67."
```

检查项目包括：
- 必填字段缺失（作者、标题、年份）
- 年份格式正确性
- 期刊文章的期刊名、卷号、页码
- 书籍的出版社信息
- DOI 格式
- 各格式特有的标点和结构规范

### `detect` — 自动检测格式

```bash
python3 scripts/citation_formatter.py detect "[1] J. Smith, \"Title,\" Nature, vol. 1, 2023."
# 输出: ieee
```

## 使用建议

1. **最可靠的方式**：先从用户输入中提取结构化信息，构造 JSON，然后用 `format` 子命令格式化
2. **快速转换**：如果用户已有标准格式的引用文本，直接用 `convert` 子命令
3. **批量处理**：将引用放入文件（每行一条），使用 `--input` 参数
4. **质量检查**：转换后用 `check` 子命令验证结果

## 前置条件

- Python 3.7+
- 无需安装额外依赖（仅使用标准库）
- 无需 API Key

