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

如何在MediaWiki中实现带动态编号与引用的定理模板?

实现MediaWiki定理自动编号与引用的最佳方案

要实现类似LaTeX的theorem环境和\ref命令的功能,单纯依赖MediaWiki原生模板无法完成,需要结合扩展+自定义模板的方式,以下是两种最实用的方案:

方案一:轻量方案(ParserFunctions + Variables 扩展)

这两个扩展是MediaWiki的常用标配,无需额外重型依赖,适合大多数中小型站点。

1. 创建定理模板 Template:Theorem

{{#vardefine:theorem_num|{{#expr:{{#var:theorem_num|0}} + 1}}}}
{{#vardefine:thm_{{{id|}}}|{{#var:theorem_num}}}}
'''Theorem {{#var:theorem_num}}'''
<div style="padding-left: 1.5em; margin-top: 0.5em;">{{{content}}}</div>
  • {{{id}}}:必填参数,作为定理的唯一标识符,用于后续引用
  • {{{content}}}:定理的具体内容
  • 逻辑:通过#var维护页面内的定理计数器,每调用一次模板就递增编号,并将编号与标识符绑定存储

2. 创建引用模板 Template:RefTheorem

Theorem {{#var:thm_{{{id|}}}|Unknown Theorem}}
  • 传入目标定理的id参数,即可输出对应的定理编号;若标识符不存在,显示Unknown Theorem

使用示例

{{Theorem|id=thm-fundamental-arithmetic|content=大于1的自然数必可唯一分解为素数的乘积。}}

{{Theorem|id=thm-pythagoras|content=直角三角形中,两直角边的平方和等于斜边的平方。}}

<!-- 引用第一个定理 -->
根据{{RefTheorem|id=thm-fundamental-arithmetic}},我们可以推导以下结论:

当在两个定理之间插入新定理时,页面加载时会重新计算计数器,所有后续定理的编号自动更新,引用也会同步对应新编号。

方案二:重型方案(Semantic MediaWiki 扩展)

如果你的站点需要更强大的语义化管理(比如定理分类、跨页面查询、批量统计),可以使用Semantic MediaWiki(SMW),它能实现更体系化的定理管理。

1. 创建定理模板 Template:Theorem

{{#vardefine:theorem_count|{{#expr:{{#var:theorem_count|0}} + 1}}}}
{{#set:Has Theorem ID={{{id|}}}|Has Theorem Number={{#var:theorem_count}}}}
'''Theorem {{#var:theorem_count}}'''
<div style="padding-left: 1.5em; margin-top: 0.5em;">{{{content}}}</div>
  • 通过#set将定理的标识符和编号作为语义属性存储,支持后续跨页面查询

2. 创建引用模板 Template:RefTheorem

{{#ask:[[Has Theorem ID::{{{id|}}}]]
|?Has Theorem Number
|format=plain
|default=Unknown Theorem
}}
  • 通过语义查询获取对应标识符的定理编号,支持跨页面引用(只要定理的id全局唯一)

优势

除了自动编号和引用,还能实现:

  • 按主题分类定理
  • 生成所有定理的索引页面
  • 跨页面统计特定类型的定理数量

方案对比

  • 轻量方案:配置简单,依赖少,仅支持单页面内的编号与引用,适合小型数学站点
  • SMW方案:功能全面,支持语义化管理,适合大型知识库级别的数学站点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:13:14