You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandoc citeproc强制显示作者名,添加[]才正常?求助

问题

无论使用哪种CSL,Pandoc的citeproc都会在文本中强制显示作者名。我的Markdown内容如下:

---
bibliography: bib.json
csl: american-school-of-classical-studies-at-athens
...

Computers are complicated @verletComputerExperimentsClassical1967.

预期输出应为:

Computers are complicated1
但实际输出为:
Computers are complicated Verlet1

使用Harvard Cite Them Right格式时,预期输出是:

Computers are complicated (Verlet, 1967).
实际却得到:
Computers are complicated Verlet (1967).

执行的命令为pandoc --citeproc test.md -o test.html,版本为pandoc 2.19.2、citeproc 0.8.0.1。

更新:当引用用[和]包裹为Computers are complicated [@verletComputerExperimentsClassical1967].时,输出符合预期,这是设计如此还是bug?


解答

这是设计如此,并非bug。Pandoc的citeproc对引用语法有明确的功能区分:

  • 不带方括号的@引用ID属于文本内引用(in-text citation),会主动将作者名插入到文本流中,再跟上CSL定义的补充格式(如上标脚注、年份括号)
  • 带方括号的[@引用ID]属于标准引用,会完全遵循所选CSL的格式规则输出

针对你的两个场景具体说明:

  1. 脚注类CSL(如american-school-of-classical-studies-at-athens):
    • 无方括号的@verletComputerExperimentsClassical1967会输出「作者名+上标脚注」,即你看到的Computers are complicated Verlet<sup>1</sup>
    • 带方括号的[@verletComputerExperimentsClassical1967]会直接输出符合预期的Computers are complicated<sup>1</sup>
  2. 作者-日期类CSL(如Harvard Cite Them Right):
    • 无方括号的@verletComputerExperimentsClassical1967会输出「作者名+(年份)」,即Computers are complicated Verlet (1967)
    • 带方括号的[@verletComputerExperimentsClassical1967]会输出符合预期的Computers are complicated (Verlet, 1967)

如果需要citeproc严格遵循指定CSL的格式输出,必须使用带方括号的引用语法[@引用ID]。


内容的提问来源于stack exchange,提问作者Terence Eden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:20:30