Jump to content

Extension:Labeled Section Transclusion(标记式章节嵌入)

本頁使用了標題或全文手工轉換
From mediawiki.org
This page is a translated version of the page Extension:Labeled Section Transclusion and the translation is 100% complete.
MediaWiki扩展手册
Labeled Section Transclusion
发行状态: 稳定版
实现 标签 , 解析器函数
描述 允许将标记的章节文本嵌入
作者 Steve Sanbeg
兼容性政策 快照跟随MediaWiki发布。 master分支不向后兼容。
MediaWiki 1.45+
数据库更改
许可证 GNU General Public License 2.0 or later
下載
前往translatewiki.net翻譯Labeled Section Transclusion扩展
問題 开启的任务 · 报告错误

Labeled Section Transclusion扩展讓有选择性地嵌入已标记的文本章节、如平常一樣解析Wiki文本。它的功能类似一個具有普通维基嵌入功能(可选择要包含的部份)的‎<onlyinclude>标签的增强版本。此功能已在所有维基媒体的wiki上启用。

儘管普通嵌入主要用来嵌入小型模板的大部份内容,但标记式章节嵌入主要用于嵌入大型页面的一小部份内容。

然而,两者也存在一些差异。在原生的模板嵌入中,章节是以行為來标记,因此你只能有一个(有可能是不连续的)章节來包含或是跳过。

而在这里,章节是以名称标记,且行为是由调用者來选择,可以按需要包含或跳过章节。不同的页面可以包括或排除所选择的章节;章节不限数量且可任意重叠。

标记章节是以名称而非行为,可讓"编辑章节"的链接对擷取長篇文本摘录的内容更适当地呈现,因为扩展现在可處理页面开头跳过的章节,使得嵌入的章节能獲得適當的偏移調整。

安装

  • 下载文件,并解压LabeledSectionTransclusion文件夹到extensions/目录中。
    开发者和代码贡献人员应改从Git安装此扩展,输入:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/LabeledSectionTransclusion
    
  • 請新增下列代码到您的LocalSettings.php 文件的底部:
    wfLoadExtension( 'LabeledSectionTransclusion' );
    
  • Yes 完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。

在Wikisource.orgwiki上还有使用一个小工具,可以使用简化的## label ##语法定义章节。 它的程式碼可以在Wikisource:MediaWiki:Gadget-Easy_LST.js找到。

函数

嵌入任一個被标记的部份

步骤1:标记出各個章节

使用‎<section>标签來标记出章节中的文本,如下所示:

<section begin="chapter1" />this is chapter 1<section end="chapter1" />

请注意,这些标签並不是HTML/XML,因此請勿使用一般的属性语法。 基於此原因,且由於beginend标记是独立的而非普通的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}}替换talk_page的内容以删除这些段落。

有可選的支援,可嵌入標記為標準標題的文字段落,即==this section==。如果已安装,可使用lsth功能來完成。

在第一个标题之前嵌入

要嵌入某个页面的序言(即第一个标题之前的内容),請使用

{{#lsth:pagename}}

嵌入特定的章节

您还可以嵌入整个sectionX章节(包括其所有子章节,但不包括sectionX本身的标题)的内容。

{{#lsth:pagename|sectionX}}

有幾件事需注意:

  1. 仅有第一个匹配sectionX的內容會被嵌入,如果您有多个章节的名称相同。
  2. 請确保您所输入的sectionX标题是以wiki文本的形式,而不是它所显示出的内容。例如,如果章节的标题是==List of [[Extension]]==,则应输入“List of [[Extension]]”而非“List of Extension”。
  3. 当嵌入一个已被翻译扩展标记為"待翻譯"页面裏的某個章节时,則嵌入的是來自某個指定的语言版本的内容。 例如,是來自pagename/en,而不是來自pagename
  4. 匹配「不」区分大小写,以免链接因大小写改变而中断。

嵌入多个章节

您还可以从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/>

仅当页面与相应的内容的语言相匹配时,每一個本地化才会被启用。

限制

  • 若多個章节名稱皆為sectionX,{{#lsth:pagename|sectionX}}僅作用於首個章节。當某個條目中存在多個同名章节時,僅會嵌入首次出現的sectionX
  • 雖然跨命名空間使用此擴充功能是可行的,但跨維基的連結不會被解析。 例如,目前尚無法將維基文庫頁面的一部份嵌入遠端的MediaWiki系統中。
  • 章节標籤的本身無法被嵌入至其他的頁面來運作。{{#lst:}} and {{#lstx:}}仅在章节標籤直接出现在已嵌入页面的wiki文本中时才會起作用。这意味着,例如不能将这些标签嵌入到某個有使用模板参数解析函数的模板之中。魔术字#tag不适用于章节标签。
  • 截至2014年,章节标籤在模板的参数中使用时不會有任何效果。如果页面A包含文本{{B|X}},则{{#lst:A|...}}无法存取X。

示例

参见