Help:Wiki:Labeled Section Transclusion

From Myth-Wiki
Jump to: navigation, search

This extension allows selective transclusion of marked-off sections of text. Its functionality is similar to an enhanced version of the <onlyinclude> tag with normal wiki transclusion, which selects sections for inclusion. It is currently enabled on *.wikisource.org, test.wikipedia.org, and en.wiktionary.org.

While normal transclusion is primarily intended to transclude large portions of small templates, labeled section transclusion is intended for small portions of large pages.

However, there are some differences. In the native template transclusion, sections are marked by behavior; thus you can have only one (possibly non-contiguous) section to be included or skipped.

Here, sections are marked by name, and behavior is chosen by the caller, which can include or skip sections as needed. Different pages can include or exclude selected sections; there can be arbitrary numbers of sections, which can also overlap arbitrarily.

Marking sections by name rather than behavior allows edit section links to be rendered more appropriately for getting excerpts from larger texts, since the extension can now account for sections that are skipped in the beginning of the page, allowing transcluded sections to be offset appropriately.

Contents

How it works

Mark off sections

First, mark off sections in the text using <section> tags like this:

<section begin=chapter1 />this is a chapter<section end=chapter1 />

Note that this uses two individual markers, rather than normal XML open/close tags, which simplifies nested or overlapping sections. This allows you to insert section tags without worrying about interfering with other sections.

Transclude with a parser function

Then, call the parser function to transclude it, i.e. to transclude a section called chapter1 from a page called article:

 {{#lst:article|chapter1}}

The target article defines the location of the section; its behavior is determined by the parser function. To transclude a document, but exclude a specified section, use the #lstx function. Optionally, replacement text can be specified.

{{#lstx:article|chapter1}} or {{#lstx:article|chapter1|see chapter 1 in [[article]]}}

Other functions

Discontiguous sections

It is possible to have multiple sections with the same name; in this case, every section with that name will be included/excluded. This is especially useful to mark various discussions.

Section ranges

These functions have an additional, optional argument to specify a section range; i.e. {{#lst:article|chapter1|chapter3}}, to include everything from the beginning of chapter 1 to the end of chapter 3. This allows using empty marker pairs to mark one end of the section, possibly in a template. A similar mechanism is currently used at the French Wikisource.

Substitution

This also works with substitution; it's even possible for an article to substitute a section of itself. One use of this provides a neat way to archive talk pages: Mark the text to be archived using <section begin=archive />, etc. Then create an archive page with the text, using {{subst:#lst:talk_page|archive}}, which copies archived sections. Lastly, replace the contents of talk_page with {{subst:#lstx:talk_page|archive}} to remove those sections.

Transcluding visual headings

There is optional support for transcluding sections of text marked with the normal headings, i.e. ==this section==. If installed, this is done with the lsth function. This is not currently enabled on wikisource.

To transclude the introduction (up to the first heading) of a page, use

{{#lsth:pagename}}

You can also transclude from the first occurrence of heading until the next heading of the same or lower level. Note that this comparison is case insensitive, to prevent links from breaking due to case changes.

{{#lsth:pagename|heading}}

You can also transclude from the first occurrence of heading to the next occurrence of other heading (regardless of level) with

{{#lsth:pagename|heading|other heading}}

Skipped headings

Since the traditional transclusion in MediaWiki isn't intented to transclude sections, it doesn't account for skipped headings. As a result, if you were to transclude a template with multiple headings, and skip the first heading, then all of the edit sections links would point to the wrong section in the template.

When this extension is used with MediaWiki 1.9, the #lst and #lsth functions count headings in the "skipped" beginning part, and offset transcluded headings appropriately. This will allow these links to point to the correct section in the simple case. Note that #lstx does not count skipped headings, and that skipped headings within discontiguous sections are not offset.