扩展:标记式章节嵌入
![]() 發布狀態: 穩定版本 |
|
---|---|
实现 | 标签 , 解析器函数 |
描述 | 允许将标记的章节文本嵌入 |
作者 | Steve Sanbeg |
兼容性政策 | 快照跟随MediaWiki发布。 master分支不向後兼容。 |
MediaWiki | >= 1.35.0 |
数据庫更改 | 否 |
许可协议 | GNU通用公眾授權條款2.0或更新版本 |
下載 | |
翻譯Labeled Section Transclusion扩展,若在translatewiki.net可用 | |
問題 | 尚未完成的工作 · 报告錯誤 |
标记式章节嵌入扩展允许选择性地嵌入已标记的章节文本并正常解析Wiki格式。它的功能类似普通维基中<onlyinclude>
标签的增强版本,可选择要包含的部分。这已在所有维基媒体的wiki上启用。
普通嵌入主要用来将小模板的大部分内容传入,而标记式章节嵌入主要用于将大型页面的一小部分嵌入。
两者也存在一些差异。在原生的模板嵌入中,章节是以结果标记,因此只能完全包含或跳过一个可能是不连续的章节。
而在这里,章节以名称标记,且由调用者选择行为,可以按需要包含或跳过章节。不同的页面可以包括或排除自己选择的章节,不限数量且可任意重叠。
通过名称而非行为标记章节将允许“编辑章节”链接对从较大文本中摘录的内容更适当体现,因为扩展现在可以考虑在页面开头跳过的部分,从而允许适当地偏移包含的部分。
工作原理
第1步:标记章节
使用<section>
标签标记章节中的文本,如下所示:
<section begin="chapter1" />this is a chapter 1<section end="chapter1" />
请注意,这些标记不是HTML/XML,并且不使用通常的属性语法。
出于此原因,且因为begin
和end
标记是独立的而非普通的XML打开/关闭标签,这允许嵌套或重叠的章节。这允许您插入章节标记而不必担心干扰其他章节。
步骤2a:嵌入章节
调用解析器函数#lst来嵌入,即从名为articleX的页面嵌入(转换)一个名为chapter1的章节:
{{#lst:articleX|chapter1}}
目标条目定义了该章节的位置;它的行为由解析器函数决定。
步骤2b:嵌入页面但排除章节
要嵌入一个页面但排除指定章节,使用#lstx函数:
{{#lstx:articleX|chapter1}}
(可选)您可以将需替换的文本添加到排除部分。
{{#lstx:articleX|chapter1|replacement_text}}
例如:
{{#lstx:articleX|chapter1|See chapter 1 in [[articleX]].}}
替换文本将出现在章节跳过(排除)的区域。
其他功能
不连续的章节
可以有多个具有相同名称的章节,在这种情况下,将包含/排除具有该名称的每个部分。这对标记各种讨论尤为实用。
章节范围
这些函数有一个额外的可选参数来指定一个章节范围,即{{#lst:articleX|chapter1|chapter3}},包含从第1章开头到第3章结尾的所有内容。这允许使用空标记对来标记章节的一端,这可能在一个模板中。目前法语维基文库使用了类似的机制。
替换引用
这也适用于替代,甚至可以用一篇文章替换它自己的一部分。这样做的一个用途是提供一种简洁的方式来存档讨论页:使用<section begin=archive />
等标记要存档的文本,然后使用{{subst:#lst:talk_page|archive}}创建一个包含文本的存档页面,该页面复制存档的部分。最后用{{subst:#lstx:talk_page|archive}}替换讨论页的内容以删除这些部分。
按标题嵌入章节
可选支持转换标有正常标题的文本部分,即==this section==
。如果已安装,则使用lsth功能完成。
嵌入序言
要嵌入一个页面的序言(即第一个标题之前的内容),使用
{{#lsth:pagename}}
嵌入特定章节
您还可以嵌入sectionX的整个内容(包括其所有子章节,但不包括sectionX本身的标题)。
{{#lsth:pagename|sectionX}}
注意以下几点:
- 如果您有多个相同名称的章节,则仅嵌入sectionX的第一个匹配项。
- 确保输入的sectionX标题是它在源码中的内容,不是它显示的内容。例如,如果章节的标题是
==List of [[Extension]]==
,则应输入“List of [[Extension]]
”而非“List of Extension
”。 - 当嵌入一个标记为已使用“翻译扩展”的页面的章节时,会嵌入特定语言版本的内容。 例如,会使用页面名称/en而非页面名称。
- 匹配不区分大小写,以免链接因大小写改变而中断。
转换多个章节
您还可以从sectionX第一次出现(不包括sectionX本身的标题)开始嵌入,直到它在sectionY的下一次出现。请注意,sectionY充当停止点,因此嵌入不包含sectionY的内容。
{{#lsth:pagename|sectionX|sectionY}}
关于跳过标题的说明
由于MediaWiki中的传统转换不是为了嵌入章节,因此不会考虑跳过标题。因此,如果您要转换(嵌入)包含多个标题的模板,并跳过第一个标题,则所有编辑章节的链接都将指向模板中的错误章节。
当使用此扩展时(使用MediaWiki 1.9或更高版本),#lst和#lsth函数会计算“跳过”开头部分中的标题,并相应地偏移已转换的标题。这将允许这些链接指向简单情况下的正确章节。
请注意,#lstx不计算跳过的标题,并且不连续章节中跳过的标题不会抵消。 但它现在似乎已得到修复(可能在移植到MediaWiki的新预处理器时)。嵌入的标题可以链接到正确的章节.
本地化
在内部,解析器函数都使用lst前缀,以与扩展名称保持一致。由于这个首字母缩略词可能会让非开发人员感到困惑,因此引入了可读的英语变体,因此目前可以从任一名称调用这些函数。
函数 | 英语 | 德语 | 希伯来语 (RTL) | 葡萄牙语 |
---|---|---|---|---|
#lst | #section | #Abschnitt | #קטע |
#trecho |
#lstx | #section-x | #Abschnitt-x | #בלי קטע |
#trecho-x |
#lsth | #section-h |
此外,标签(tag)现在可以本地化,即: 英语, 德语, 希伯来语, 葡萄牙语; 即:
- 英语
<section begin=x/> ... <section end=x/>
- 德语
<Abschnitt Anfang=x/> ... <Abschnitt Ende=x/>
- 希伯来语 (RTL)
<קטע התחלה=א> ... <קטע סוף=א>
(“启动”代码到右边,“结束”代码在左边)- 葡萄牙语
<trecho começo=x/> ... <trecho fim=x/>
限制
下载
此扩展可直接从Git检索到 [?]:
- 浏览代码
- 部分扩展有稳定版本标签。
- 浏览标签
- 选择标签
- 点击“快照”
- 每个分支与过去的MediaWiki发布版本相关联。 这里也有一个“主线”分支,包含最新alpha版本(可能需要MediaWiki的alpha版本)。
- 浏览分支
- 选择一个分支名称
- 点击“继续”
提取快照,并将它放置在您的MediaWiki安装副本的extensions/LabeledSectionTransclusion/目录中。
如果您对git熟悉,并且拥有您服务器的shell访问权,您也可以通过以下方法获得扩展:
cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LabeledSectionTransclusion.git
安裝
- 下载文件,并将其放置在您
extensions/
文件夹中的LabeledSectionTransclusion
目录内。 - 将下列代码放置在您的
LocalSettings.php
的底部:wfLoadExtension( 'LabeledSectionTransclusion' );
- 完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。
在各种维基文库上还有一个Gadget,可以使用简化的## label ##
语法定义部分。
它的代码可以在Wikisource:MediaWiki:Gadget-Easy_LST.js找到。
例子
- wikisource:user:sanbeg/Includer是一个早期的演示,展示了几个基本功能。
参见
- 动态页面列表(第三方)包括略微修改的标记式章节嵌入的内置版本
此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
This extension is included in the following packages and/or wiki farms: |