Wikitext换行机制
阅读
2025-10-18更新
最新编辑:Lu_23333
阅读:
更新日期:2025-10-18
最新编辑:Lu_23333
不熟悉Wikitext特性的用户在编写模板时,经常会遇到意外的换行、分段或间距。这是代码非预期分段增加的P标签导致的。
利用好浏览器开发者工具,和特殊:展开模板页面,可以有效的分析并规避非预期的分段。
解析器中划分段落的逻辑,即添加<p>标签的核心规则如下:
- 两个换行视为新段落
- 块级HTML标签强制结束上一段落
这意味着:
| Wikitext | Wikitext | 展开结果 | 效果 | 
|---|---|---|---|
| 块级元素 | 1<div>2</div>3 | <p>1</p><div>2</div><p>3</p> | 1 23 | 
| 两次调用 带换行的模板 | <includeonly>模板内容</includeonly>
<noinclude>
...
</noinclude>
<includeonly>模板内容</includeonly>
<noinclude>
...
</noinclude>
 | <p>模板内容</p><p>模板内容</p>
 | 模板内容 模板内容 | 
分段机制
分段,指解析器自动在文本内容周围添加<p>和</p>标签的过程。
比如对于Wikitext
这是第一行文本
这是第二行文本
这是新段落的文本
会被解析为:
<p>这是第一行文本
这是第二行文本</p>
<p>这是新段落的文本
</p>
效果:
这是第一行文本 这是第二行文本
这是新段落的文本
块级元素
块级HTML标签出现时(无论是开始还是结束标签),会强制结束当前段落,如表1中"块级元素"的示例。
比如:div、center、blockquote、figure、aside、hr。
部分元素内部关闭主动分段:h1-h6、pre、p、ul、ol、dl、table、tr、caption、dt、dd、li。
部分元素内部始终允许分段:td、th。
例如:
| 代码 | HTML | 
|---|---|
| 2<div>3</div>4
 | <p>2</p><div>3</div><p>4</p>
 | 
| <h1>1
2<div>3</div>4
5</h1>
 | <h1><span id="..."></span><span class="mw-headline" id="...">1
2<div>3</div>4
5</span></h1>
 | 
实际上,解析器底层行为更为复杂,它会逐行扫描Wiktext,利用状态机维护解析状态,对HTML标签分为多种情况处理。
BWiki当前的MediaWiki版本是1.37,详情请参阅源码:https://github.com/wikimedia/mediawiki/blob/REL1_37/includes/parser/BlockLevelPass.php#L310
 
                
 沪公网安备 31011002002714 号
                    沪公网安备 31011002002714 号