Agent-almanac format-citations
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/zh-CN/skills/format-citations" ~/.claude/skills/pjt222-agent-almanac-format-citations-6b6d79 && rm -rf "$T"
manifest:
i18n/zh-CN/skills/format-citations/SKILL.mdsource content
格式化引文
使用引文样式语言(CSL)和 citeproc 处理器选择引文样式、将行内引文应用于文档并生成格式化的参考文献列表。
适用场景
- 为期刊投稿按特定引文样式格式化参考文献
- 在不同引文样式之间转换(例如从 APA 到 IEEE)
- 理解和自定义 CSL 样式文件
- 排查引文格式问题(消歧、排序、标点)
- 在 R Markdown 或 Quarto 文档中配置引文处理
输入
- 必需:包含参考文献的参考文献数据源(
文件、CSL JSON 或 YAML).bib - 必需:目标引文样式(期刊名称、样式系列或
文件).csl - 可选:需要格式化的行内引文(引用键列表)
- 可选:区域设置(用于日期格式和本地化术语如"等"/"et al.")
- 可选:文档格式(R Markdown、Quarto、LaTeX、纯文本)
步骤
第 1 步:选择和获取 CSL 样式
确定正确的引文样式文件:
- 按期刊名称查找:在 CSL 样式仓库 (https://github.com/citation-style-language/styles) 中按期刊名称搜索。大多数主要期刊都有可用的 CSL 文件。
- 样式系列:识别所使用的通用样式系列:
- 作者-日期:(Smith, 2024) — APA、Chicago 作者-日期、Harvard
- 数字编号:[1] — IEEE、Vancouver、Nature
- 脚注:上标或括号编号带脚注 — Chicago 注释
- 标签:[Smi24] — 自定义标签,在学术出版中较少见
- 下载 CSL 文件:从仓库获取
文件或使用区域变体(例如用于脚注样式的.csl
)。locale-zh-CN.xml - 验证样式:检查 CSL 文件头部的
块中的标题、ISSN 和类别字段以确认是正确的样式。<info>
# R Markdown/Quarto 的 YAML 头部示例 bibliography: references.bib csl: apa-7th-edition.csl lang: zh-CN
预期结果: 与目标期刊或样式系列匹配的已验证 CSL 文件。
失败处理: 如果仓库中没有现成的 CSL 文件,找到最接近的样式(通常是同一出版商的另一期刊)并按第 2 步中的说明进行修改。
第 2 步:理解 CSL 样式结构
解析 CSL 文件以理解格式规则:
- 引文元素(
):控制行内引文的外观。关键属性:<citation>
:多引文如何合并(例如collapse
与[1-3]
)[1, 2, 3]
:在同一作者同年的情况下添加 a/b 后缀disambiguate-add-year-suffix
/et-al-min
:何时缩写作者列表et-al-use-first
- 参考文献列表元素(
):控制参考文献列表格式。关键属性:<bibliography>
:条目排序依据(作者、日期、引用顺序)sort
:每个条目中元素的排列方式layout
:编号与文本的对齐方式second-field-align
- 宏(
):可复用的格式块(例如"author"宏定义作者姓名在所有位置的格式化方式)。<macro> - 区域设置术语:特定语言的词汇("et al."、"编辑"/"editors"、"取自"/"retrieved from"),由 CSL locale 文件控制。
预期结果: 理解所选样式如何格式化行内引文和参考文献列表条目。
失败处理: 如果样式行为出乎意料,在 CSL 可视化编辑器 (https://editor.citationstyles.org/) 中用示例引文测试,诊断哪个宏或属性需要调整。
第 3 步:应用行内引文
在文档中插入正确格式化的引文:
- 基本引文语法(R Markdown/Quarto):
- 括号引文:
→ (Smith, 2024)[@smith2024] - 叙述性引文:
→ Smith (2024)@smith2024 - 多作者:
→ (Jones, 2023; Smith, 2024)[@smith2024; @jones2023] - 带页码:
→ (Smith, 2024, p. 42)[@smith2024, p. 42] - 抑制作者:
→ (2024)[-@smith2024]
- 括号引文:
- 特殊情况:
- 同一作者同年的多篇文章使用年份后缀消歧:(Smith, 2024a) vs. (Smith, 2024b)
- 第一次引用使用完整作者列表(如果样式要求),后续引用缩写
- 组织作者名称不应被缩写
- LaTeX/BibTeX 语法:
、\cite{smith2024}
、\citep{smith2024}
,由 natbib 或 biblatex 处理。\citet{smith2024}
预期结果: 所有行内引文格式正确,消歧后缀正确应用,多引文组正确排序。
失败处理: 如果引文显示为
??? 或 [?],引用键与 .bib 文件中的条目不匹配。验证引用键拼写和文件路径。
第 4 步:生成参考文献列表
在文档末尾生成格式化的参考文献列表:
- 自动生成:在 R Markdown/Quarto 中,参考文献列表在文档末尾自动生成。在 LaTeX 中使用
和\bibliography{references}
。\bibliographystyle{style} - 排序:验证条目排序是否与样式要求匹配(作者-日期样式按字母顺序,数字编号样式按引用顺序)。
- 格式检查:核实:
- 作者姓名格式(名, 姓 vs 姓, 名首字母)
- 标题大小写(句首大写 vs 标题大写)
- 期刊名称(斜体 vs 正体,全称 vs 缩写)
- 卷号/期号格式(加粗卷号、括号中的期号)
- DOI/URL 格式和超链接
- 引用位置标记:如果参考文献列表需要出现在特定位置(不在文档末尾),在 Quarto/R Markdown 中使用
。<div id="refs"></div>
预期结果: 格式完整的参考文献列表,每个条目的所有元素符合目标样式。
失败处理: 如果格式偏离目标样式,将实际输出与样式指南逐项比较。常见问题:缺少 DOI(更新
.bib 条目)、标题大小写不正确(在 .bib 中用 {} 保护专有名词)、期刊缩写不正确(使用期刊缩写列表)。
第 5 步:处理特殊格式化场景
解决常见的引文格式化难题:
- 同名同年消歧:当两个条目有相同的作者和年份时,CSL 自动添加后缀(2024a、2024b)。验证后缀分配与参考文献列表排序一致。
- 组织作者:使用
在 BibTeX 中(双花括号)防止缩写。{{国家统计局}} - 标题中的特殊字符:在 BibTeX 中用
保护大写字母和特殊字符:{}
而非{DNA}
。DNA - 多语言参考文献:为非英语来源使用
字段触发正确的区域设置术语。langid - 交叉引用:使用
字段从合集/论文集条目继承字段到章节/论文条目。crossref
预期结果: 所有特殊情况正确处理,无格式异常。
失败处理: 如果 citeproc 产生非预期输出,隔离问题条目,在 CSL 编辑器中测试,然后修改条目数据或 CSL 文件。
验证清单
- 选择的 CSL 样式与目标期刊/格式要求匹配
- 所有行内引文解析正确(无
或缺失引文)??? - 同名同年的条目有正确的消歧后缀
- 参考文献列表按样式要求排序
- 作者姓名、标题大小写和期刊格式均符合样式规范
- DOI/URL 正确显示并可点击(如适用)
- 非英语参考文献使用正确的区域设置术语
常见问题
- 选择了错误的 CSL 变体:许多样式有多个变体(例如 APA 第 6 版 vs 第 7 版、Chicago 作者-日期 vs 注释)。选错变体会导致整个参考文献列表格式不正确。务必验证特定的变体。
- BibTeX 中的大小写保护:BibTeX 在格式化时会将标题转为小写。如果标题包含必须保持大写的词(专有名词、首字母缩略词),请用
保护:{}
而非{Bayesian}
。Bayesian - 旧式 BibTeX vs. BibLaTeX:它们的字段名不同(BibTeX 用
,BibLaTeX 用journal
)。混用格式会导致字段缺失。journaltitle - 忽略区域设置设置:法语引文需要法语术语("et" 代替 "and"、"dans" 代替 "in")。如果不设置正确的区域设置,所有术语都会使用英语。
相关技能
-- 创建和维护引文格式化使用的参考文献库manage-bibliography
-- 验证参考文献的准确性后再格式化validate-references