WMDE Technical Wishes/Sub-referencing
| 子引用 | |
|---|---|
| Status | 进行中 |
| Origin | 技术愿望调查2013,2015,2022和其他。 |
| Focus area | 使得再次引用更容易 |
| Phabricator | 项目告示板 |
| Responsible | 技术愿望團隊 |
告诉我们您的想法 我们邀请您测试我们持續不断更新的原型。請观看本页面或是注册本消息列表以了解可供您测试的新内容 | |
在目前,你無法在同一篇文章中輕易地再次使用同一個不同细节的参考资料。社群成员們已多次要求一种无需模板的解决方案,且该解决方案是基于维基文本和可视化编辑器的现有引用方式。 » 了解关于该问题的更多内容
作为"使得再次引用更容易"这一重点领域的一部份,德国维基媒体的技术愿望团队正在引入子引用--这是一项可选功能,让您可以轻松地在现有参考资料上依附不同细节的內容,而无需复制它。
子引用功能已于2025年9月部署到德语维基百科,并于2026年2月部署到其他试点维基。我们的计划是在2026年将子引用功能引入其他维基媒体wiki。
子引用的简要介绍
要多次引用同一来源并附上不同的细节,您需要一个主引用和一个子引用。
- 主引用包含主要的书目信息。在下面的截图中,“参考文献”部分中的“1. E. Miller …”代表主要参考文献。
- 子引用定义了附加详细信息,例如页码、章节、经文、引文或视频时间戳。在屏幕截图中,“1.1”和“1.2”后跟页码,代表两个不同的子引用。

- 在参考文献部分,读者可以看到所有子参考文献都集中在其共同的主参考文献下方。这使得读者更容易了解单个参考文献在条目中的引用次数。
- 在维基文本中,您可以使用一个新的属性来定义子引用的详细信息。它叫做
details。更多信息和示例请参见下文。 - 在可视化编辑器中,我们正在扩展现有的引用对话框,使其支持子引用。
主要优势
- 子引用很大程度上基于现有的引用方式。
- 它既适用于可视化编辑器,也适用于维基文本。
- 该解决方案将集成到MediaWiki的Cite扩展中,因此可在所有维基媒体维基中使用,而且无需基于模板。
- 子引用可在参考资料预览中正确显示,并且预览框在移动裝置也可以正常弹出。
- 此為可选项:您仍然可以使用其他方法进行引用。 但您可能会在其他用户撰写的文章中遇到子引用。

工作原理
在维基文本中使用
维基文本的子引用解决方案已在测试集群上测试通过。维基文本特有的优势:
- 该解决方案利用了命名引用这一现有的、已知的概念。
- 不需要任何模板知识。
- 可以删除维基文本中近似重复的引用,使其更简洁、减少冗余文字、并更易于阅读。
定义主引用
创建子引用之前,您需要一个包含完整书目信息的主引用。该引用必须被赋予一个名称:
<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref>
主要参考文献既可以内联定义(在条目正文中),也可以定义在参考文献部分。
创建行内引用的子引用
如果主引用是内联的,您可以使用details属性通过两种方式创建子引用:
方案一:修改主要参考文献,添加更多细节(例如页码)
<!-- Add the details attribute directly to the <ref> tag -->
<ref name="Miller" details="Page 23.">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref>
<!-- As a next step, you can add another sub-reference using the following statement: -->
<ref name="Miller" details="Page 48." />
例子:
According to scientists, the Sun is pretty big. In fact, it is very big.<ref name="Miller" details="Page 23.">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref> Take their word for it.<ref name="Miller" details="Page 48." />
== References ==
<references /> <!-- or {{reflist}} -->
|
方案2:在保持主引用不变的情况下,直接在新行内语句中插入一个或多个单独的子引用。
<!-- Unchanged main reference (in-line): -->
<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref>
<!-- New sub-references: -->
<ref name="Miller" details="Page 23." />
<ref name="Miller" details="Page 48." />
例子:
According to scientists, the Sun is pretty big.<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref> In fact, it is very big.<ref name="Miller" details="Page 23." /> Take their word for it.<ref name="Miller" details="Page 48." />
== References ==
<references /> <!-- or {{reflist}} -->
|
为列表定义的引用创建子引用
如果主引用存储在<references>标签内或{{reflist}}标签内(或类似模板中),则无需重新定义。只需使用以下语法即可:
<!-- Add this directly to the chosen location in the article text -->
<ref name="Miller" details="Page 23." />
<!-- The list-defined reference stays unchanged: -->
<references>
<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref>
</references>
例子:
According to scientists, the Sun is pretty big. In fact, it is very big.<ref name="Miller" details="Page 23." /> Take their word for it.<ref name="Miller" details="Page 48." />
== References ==
<references>
<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref>
</references>
|
重用子引用
定义子引用后,您可以在多个地方重复使用它,而无需重新定义主引用。只需在同一行中重复使用相同的引用语法即可:
<ref name="Miller" details="Page 23." />
- 请注意,这与您通常使用的其他引用不同。虽然这会在维基文本中产生一些重复项,但相同的子引用会在阅读器和可视化编辑器视图中自动合并,以防止渲染输出中出现不必要的重复。
- 同样的重用选项已经适用于常规引用(包括列表定义的引用和行内引用)。
- 提示:复制并粘贴现有的子引用语句仍然是一种简单且推荐的方法。
示例 - 重用行内子引用:
According to scientists, the Sun is pretty big.<ref name="Miller" details="Page 23.">E. Miller, ''The Sun''. New York: Academic Press, 2005</ref> In fact, it is very big. Take their word for it.<ref name="Miller" details="Page 48." /> Don't look directly at the sun!<ref name="Miller" details="Page 23." />
== References ==
<references /> <!-- or {{reflist}} -->
|
示例 - 重用列表中定义的子引用:
According to scientists, the Sun is pretty big.<ref name="Miller" details="Page 23." /> In fact, it is very big. Take their word for it.<ref name="Miller" details="Page 48." /> Don't look directly at the sun!<ref name="Miller" details="Page 23." />
== References ==
<references>
<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005</ref>
</references>
|
将现有引用转换为子引用
编辑即将成为新主引用的参考文献,将页码等详细信息移至新的details="…"属性中。将类似的参考文献替换为子参考文献。
示例:没有子引用的维基文本:
According to scientists,<ref name="Miller">E. Miller, ''The Sun''. New York: Academic Press, 2005. Page 23.</ref> the Sun is pretty big.<ref>E. Miller, ''The Sun''. New York: Academic Press, 2005. Page 30.</ref> In fact, it is very big.<ref>E. Miller, ''The Sun''. New York: Academic Press, 2005. Page 35.</ref> Take their word for it.<ref>E. Miller, ''The Sun''. New York: Academic Press, 2005. Page 48.</ref> Don't look directly at the sun!<ref name="Miller" />
== References ==
<references /> <!-- or {{reflist}} -->
|
示例:维基文本中的引用转换为子引用后
请注意,第一个参考文献已转换为主参考文献(包括详细信息),其他参考文献已转换为子参考文献。
According to scientists,<ref name="Miller" details="Page 23.">E. Miller, ''The Sun''. New York: Academic Press, 2005</ref> the Sun is pretty big.<ref name="Miller" details="Page 30." /> In fact, it is very big.<ref name="Miller" details="Page 35." /> Take their word for it.<ref name="Miller" details="Page 48." /> Don't look directly at the sun!<ref name="Miller" details="Page 23." />
== References ==
<references /> <!-- or {{reflist}} -->
|
嵌套子引用
可以使用嵌套脚注进行子引用。多级嵌套可能也有效,尽管目前尚未得到积极支持。
示例:使用{{refn}}嵌套子引用
According to scientists, the Sun is pretty big.<ref name="Miller" details="Page 23.>E. Miller, ''The Sun''. New York: Academic Press, 2005.</ref> In fact, it is very big.{{refn|group="notes"|Some scientists disagree.<ref details="Page 30." name="Miller" />}} Take their word for it.<ref name="Miller" details="Page 48." />.
== Notes ==
<references group="notes" />
== References ==
<references />
|
模板和子引用
模板可以像在常规引用中一样,在子引用和主引用中使用。
示例:使用{{subref}}示例模板的子引用
According to scientists, the Sun is pretty big.<ref name="Miller" details="{{Subref|page=23|quote=It's soo big}}">{{Cite book |last=Miller |first=E. |title=The Sun |publisher=Academic Press |location=New York |date=2005}}</ref> In fact, it is very big. Take their word for it.<ref name="Miller" details="{{Subref|page=48}}" /> Don't look directly at the sun!<ref name="Miller" details="{{Subref|page=50|quote=Don't do it}}" />
== References ==
<references /> <!-- or {{Reflist}} -->
|
谨记

- 使用details属性时,务必指定引用名称。使用引用名称可以让其他人轻松地重复使用同一引用,而无需事先定义名称。
- 子引用并非仅限于页码,它还可以用于其他用途。一些编辑告诉我们,他们希望将其用于播客时间戳、网址、诗歌段落、引文和其他细节。
- 如果您希望在
details="…"中使用引号"(例如,插入引用时),请务必使用"代替,或者使用单引号分隔详细信息。VisualEditor用户在填写子引用详细信息时可以输入",它将在维基文本中自动转换。其他在使用details="…"时可能需要类似处理的特殊字符是<和>。 - 一些与引用相关的小工具和脚本也可能需要更新,以便与新的子引用解决方案配合使用。
- 使用子引用时,请避免使用会生成
<ref>标签的模板,因为这些模板会导致VisualEditor出现问题,而我们目前还无法解决这些问题。
在可视化编辑器中
VisualEditor的子引用实现已在beta集群上测试通过。一些细节仍需完善,其他功能可能会在试点wiki部署后进行调整。VisualEditor特有的优势:
- 如果要引用同一来源但细节不同,您不再需要从头开始创建新的参考文献。
- 子引用旨在与VisualEditor完全兼容(而不是基于模板的变通方法)。
定义主引用
- 使用现有的引用对话框创建一个主参考文献,其中包含完整的书目信息,但不包括您希望在子参考文献中使用的详细信息(例如页码)。
创建子引用
- 选择已重用的参考文献或创建重用参考文献(通过复制粘贴参考文献或使用重用引用对话框)。
- 如果要重复使用参考文献,请点击参考文献弹出窗口中出现的“添加详细信息”按钮。

- 输入子引用的详细信息,然后单击应用更改。

编辑子引用
- 点击条目正文中的脚注标记,然后选择第二个编辑按钮(钢笔图标)来更改子引用。

- 您现在可以编辑子引用的详细信息。

- 在参考文献列表中,您无法通过单击子参考文献来编辑它——以这种方式编辑主参考文献与往常一样。
再次引用一个子引用
- 您可以使用引文对话框中的“再次引用”选项卡以再次引用子引用。

- 或者,您可以像常规引用一样,选择子引用的脚注,然后使用复制和粘贴将其复制到文章中的所需位置,这样也可以进行重用。
将现有引用转换为子引用
- 选择一个已重用的引用(或创建一个已重用的引用)。
- 点击编辑,复制要用于子引用的详细信息(例如页码),然后删除详细信息,将引用转换为主引用。
模板和子引用
模板可以像在常规引用中一样,在子引用和主引用中使用。
请注意
- 我们正在努力为VisualEditor中的参考文献使用打造更加直观的用户体验。您现在看到的仅仅是个开始,我们还计划改进参考文献编辑对话框等功能。在将子参考文献功能部署到首批试点维基后,我们将就一些原型征求您的反馈意见。
- VisualEditor中为重用引用自动创建名称的现有行为也适用于子引用。修复此问题超出了本项目范围。
我们决定在试点版维基中移除引用对话框中“重用”选项卡创建子引用的功能,因为用户测试表明该功能不够直观。试点版维基部署完成后,我们将收集更多反馈,以确定是否需要在后续版本中重新添加该选项(如果需要,我们将探讨如何改进)。
測試我們的原型
我们需要您的反馈,以确保我们开发出正确的产品。欢迎您在本项目的讨论页上提出反馈或问题,或者直接预约与我们的用户研究员通话。原型已发布在beta wiki上。

- 外观可能不同(例如没有使用您设置的皮肤)。
- 也可能会提供一些仍在测试中的新功能。
- beta维基只包含一些测试页面和模板,而不是整个维基百科的内容,也没有你习惯使用的所有模板、模块、小工具等。
- 您无法使用您普通维基的账户。您可以注册一个账户,确保和普通维基账户的密码不同,或者在没有账户的情况下测试该功能。这将会创建一个临时账户。
进行中
子引用功能现已在维基文本和可视化编辑器中准备就绪,并已部署到德语、波兰语和瑞典语维基百科以及其他一些试点维基,以便为未来的改进收集新的见解。接下来的一些步骤:
- 虽然常规差异没有问题,但可视化差异目前无法正确显示子引用 (phab:T397319)。
- 使用子引用的条目中的VisualEditor编辑有时会导致维基文本发生意外更改,而不会影响读者浏览("脏差异"),例如将
<references />替换为(phab:T403379)。<references></references> - 目前,在VisualEditor中,维基文本中的子引用内的换行符无法加载。(phab:T390266)
- VisualEditor和
{{Reflist}}仍然存在一些问题,我们需要在部署到使用类似模板的项目之前解决这些问题。
我们正在解决的问题
在维基百科文章中,通常会多次引用同一个来源。但虽然你可以直接重复使用相同的引用,但目前无法在引用不同细节(例如不同页码)的情况下重复使用同一个引用。你只能选择创建一个新的引用或使用其他方法。
现状:在维基文本和可视化编辑器中再次引用参考资料
如果想在维基文本中重复使用参考资料,可以将其转化为命名参考资料,并在文章的另一处引用该名称。命名参考资料可以放在文章文本中,也可以放在参考资料部分。在可视化编辑器中,您可以使用引用对话框中的 “再次引用”选项。在参考资料部分,具有相同名称的参考资料会被组合在一起。
-
维基文本: 文本中的<ref name>
-
维基文本:参考资料部分中的<ref name>
-
可视化编辑器: 引用对话框
-
读者看到的效果
现状: 在维基文本中重复使用具有不同细节的参考资料
如果想在维基文本中重复使用细节不同的现有参考资料,目前需要复制并粘贴现有参考资料,然后更改重复内容的细节,或者从头开始创建一个几乎相同的新参考资料。有些项目使用简短引用或簡略脚注等基于模板的解决方案。在参考资料部分,原始参考资料和您创建的新参考资料不会放在一起。
-
维基文本中有两处几乎相同的引用。
-
读者视角:几乎相同的参考资料没有放在一起
-
维基文本中短引文的变通方法
-
读者视角:使用短引文的变通方法
-
在维基文本中使用{{sfn}}的变通方法
-
读者视角:在维基文本中使用{{sfn}}的变通方法
现状: 在可视化编辑器中重复使用具有不同细节的引用
如果您想在可视化编辑器中以不同的细节重新使用已有的参考资料,引文对话框中的“复用”选项和复制粘贴都不会起作用,因为这两种方法都会导致完全相同的重新使用,而更改重新使用或复制的参考资料的细节会改变该参考资料的全部。相反,你需要从头开始创建一个几乎相同的新引用。在“引用”部分,原始引用和您创建新的引用不会被组合在一起。
通过{{sfn}}等基于模板的变通方法创建的参考资料无法在参考资料部分进行编辑,也不会出现在引文重用选项卡中;但可以在文章文本中查找这些参考资料时对其进行手动编辑。
使用{{sfn}}的变通方法:
-
读者看到的效果
-
参考资料会在点击“编辑”后,从参考资料區消失。
-
你无法通过“再次引用”对话框來使用{{sfn}}引用。
-
只有在文章中找到参考资料时才能编辑参考资料
读者遇到的问题
在参考资料预览、参考资料提示工具和手机软件的参考弹出窗口中无法正确显示基于模板的变通方法。
带有引用预览的{{sfn}}解决办法:
现状的主要问题
- Visual Editor和wikitext用户的使用体验截然不同。
- 大多数再次引用不同细节的引用的变通方法在Visual Editor中都无法正常工作。
- 创建大量具有不同细节的几乎完全相同的引用,会使维基文本更长,而且可能更难阅读。
- 基于模板的变通方法并不为所有社区所接受,因此无法在全域范围内使用。
- 有些用户为了避免这个问题,会把资料来源放在参考书目部分,而根本不把它们作为参考资料,这就增加了验证文章部分的难度。
最近的变更和下一步计划
我们的团队断断续续地研究这个问题已经有一段时间了。这里是这个项目的历史概述,包括我们的研究。
感谢所有参与测试和面试、表达兴趣的朋友们,也感谢多年来在我们的讨论页上留言的每一位朋友。我们对此深表感激。如果您还有其他反馈意见,请在讨论页上分享。
更新
我们已于2025年9月在德语维基百科上部署了子引用功能,作为我们的第一个试点维基。
阅读更多关于我们三个月来对德语维基百科进行子引用所获得的经验和观察。
我们已于2026年2月将子引用功能部署到其他试点维基中。 (phab:T414094)
我们正在不断改进该功能并采纳社区反馈意见。
下一步
技术愿望团队的重点仍然是完成子引用功能。
- 该功能在betawiki上不断更新,我们会持续向您通报最新进展,并且我们需要您进行测试。
- 我们计划在2026年将子引用功能部署到其他Wikimedia wiki上。
- 查看我们的报告和phab:T414094,了解我们的初步部署计划和子引用改进路线图。
- 我們將在功能安裝後持續收集用戶的回饋。
2025年至今的更新存档
2024 年,我们基于扩展语法开发了一个用于探索和测试目的的原型,并通过多次维基交流、用户测试会议以及在不同场所举办的研讨会(包括2024年维基国际会议)与社区互动。
2024年10月/11月,我们根据收到的社区反馈,探讨了维基文本方法的可能改进方案。我们联系了各个社区,并提出了一项新的解决方案,以收集他们对可用性的反馈。我们发现反馈褒贬不一,但没有任何意见表明该功能不能为社区带来预期价值。
2025年,我们启动了新语法的开发工作。技术需求团队的工程师和设计师正在努力构建子引用功能。
我们已于2025年9月在德语维基百科上部署了子引用功能,作为我们的第一个试点维基。
我们正在改进子引用功能,并将在未来几个月内联系其他潜在的试点维基。
2024年至今的更新存档
测试版维基上有一个原型。它涵盖有wikitext的解决方案和 VisualEditor解决方案的一些基本功能。您可以继续测试此原型并提供反馈。
我们已在所有维基中发出通知,让社群了解这一即将推出的功能,并邀请他们进行测试和提供反馈。
我们的团队在2024國際維基媒體大会上介绍了子引用,并与与会者进行了讨论。 (YouTube)
2024年,在不同的项目中进行了用户测试。- 截至2024年10月/11月,我们正在根据收到的社区反馈,探索对维基文本机制进行可能调整的可能性。我们将尽快联系各个社区,就子引用功能可能的改进方案收集更多反馈意见。
- 试点wiki部署已暂停,等待讨论和对我们功能的潜在更改。
- 我们计划在2025年将子引用功能部署到其他Wikimedia wiki上。
- 部署后,我们将继续收集反馈意见,以改进解决方案。
常見問題與解答
如何查找使用子引用的文章?
任何使用子引用的页面都会添加一个名为Category:Pages that use sub-references的跟踪分类,方便您使用新功能浏览或修复页面。此类别的名称可能会更改。
此外,该团队还在英文betawiki上创建了一些示例。
我可以在details属性中插入模板吗?
是的,您可以在主引用和子引用中插入模板。我们最初收到的反馈表明,在属性中使用模板可能弊大于利。其他用户明确希望获得模板支持,尤其是在可视化编辑器中。请在讨论页分享您对子引用和模板的看法。
新功能将如何影响现有工具和脚本?
一些与引用相关的工具和脚本可能需要更新才能与新的子引用方案兼容。由于这些工具和脚本由维基社区维护,我们无法对其进行适配。
如果您发现任何问题或需要帮助更新引用模板以使其与新功能兼容,请在讨论页上告知我们。
为什么选择这种维基文本语法?
本文阐述了选择details语法的理由。我们认为,尽管这种语法存在一些局限性,但它仍然是实现可用功能的最佳捷径。
从历史上看,没有一种语法是完美的,每种解决方案都有其不足之处。经过与维基媒体基金会多个团队的长时间讨论和磋商,我们最终认为,该方案既满足我们的技术要求,又能满足长期维护的需求。
它还完全兼容那些仍然依赖或更喜欢使用{{reflist}}的维基。这种语法允许将主要参考文献直接内联使用,而无需将其放在“参考文献”部分,否则会限制可视化编辑器的功能。
此外,我们相信这种方法在VisualEditor的工作流程中也能始终如一地发挥作用。
为什么找到解决方案花了这么长时间?
技术愿望团队在这个功能上断断续续工作了很多年。如果你想了解更多信息,请参阅问题的历史和复杂性概览。