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的格式规则输出
针对你的两个场景具体说明:
- 脚注类CSL(如american-school-of-classical-studies-at-athens):
- 无方括号的
@verletComputerExperimentsClassical1967会输出「作者名+上标脚注」,即你看到的Computers are complicated Verlet<sup>1</sup> - 带方括号的
[@verletComputerExperimentsClassical1967]会直接输出符合预期的Computers are complicated<sup>1</sup>
- 无方括号的
- 作者-日期类CSL(如Harvard Cite Them Right):
- 无方括号的
@verletComputerExperimentsClassical1967会输出「作者名+(年份)」,即Computers are complicated Verlet (1967) - 带方括号的
[@verletComputerExperimentsClassical1967]会输出符合预期的Computers are complicated (Verlet, 1967)
- 无方括号的
如果需要citeproc严格遵循指定CSL的格式输出,必须使用带方括号的引用语法[@引用ID]。
内容的提问来源于stack exchange,提问作者Terence Eden
相关产品推荐
相关产品推荐

