CSL样式开发疑问:如何实现符合作者数量规则的作者-日期文内引用
CSL文内作者-日期引用规则实现方案
你需要通过条件判断作者数量来实现需求,直接修改author_short宏即可,替换后代码如下:
<macro name="author_short"> <choose> <!-- 作者数≤3时,显示所有作者短格式 --> <when test="count(author) <= 3"> <names variable="author"> <name form="short" name-as-sort-order="all" sort-separator=" " delimiter=", " delimiter-precedes-last="always"/> </names> </when> <!-- 作者数>3或无作者时,显示标题 --> <else> <text variable="title"/> </else> </choose> </macro>
关键说明:
- 用
<choose>分支结构替代原有的<substitute>,通过count(author) <= 3精确判断作者数量 - 符合数量条件时,保留原有的作者短格式输出逻辑
- 作者数超过3时直接输出标题,这是
suppress-max参数无法实现的(该参数仅控制是否显示“等/et al”) - 配合文内引用模板(通常是
[<text macro="author_short"/>, <date variable="issued" form="numeric" date-parts="year"/>]),即可完全匹配你要的效果:- 1位作者:
[Doe, 2022] - 2位作者:
[Doe, Gogh, 2022] - 3位作者:
[Doe, Gogh, Johnson, 2022] - 4位作者:
[Climate change impacts, 2022]
- 1位作者:
内容的提问来源于stack exchange,提问作者Alexander Plesovskikh
相关产品推荐
相关产品推荐

