Help:Page breaks

From Wikisource
Jump to navigation Jump to search
Page breaks
This page explains solutions to common problems relating to text being broken across pages in the Page: namespace.

Page breaks can cause several problems when transcluding texts, even if the individual pages render well in the Page: namespace.

Templates across page breaks[edit]

If you have a template that spans a page break, you cannot just put the opening of the template (eg {{fine block| on the first page and the closing }} on the next page. This is because the Wikimedia software first renders the wikicode on each page, before transclusion, so the software never notices that a template is closed in a later page: it treats it as normal text.

To get around this you need to use a "split" form of this template, along with the header and footer fields in the Page: namespace edit view (if you don't have these visible, click the [+] button in the toolbar). This means that only a single "start" and "end" template appear in the transclusion, but the contained text is not actually inside a template. Each page is also wrapped in the Page: namespace, using the header and footer fields, so it appears correctly both before and after transclusion.

Method[edit]

First page[edit]

Body
{{fine block/s}}
First page text
Footer
{{fine block/e}}

Middle pages[edit]

Header
{{fine block/s}}
Body
Middle page text
Footer
{{fine block/e}}

Last page[edit]

Header
{{fine block/s}}
Body
Last page text
{{fine block/e}}

Templates that use this system[edit]

This method is used by many templates. These are "block" level templates like {{fine block}}, as "span" level templates like {{smaller}} don't cause a line break when they are ended. If you need to run a span template across page, simply terminate the first template on the first page, and start a new one on the second.

Examples of templates that use this method include:

If the block template you would like to use across a page break doesn't have a split variant, create it using one of the templates above as a reference. Remember to transclude the documentation from the unsplit template page.

Tables across page breaks[edit]

Tables split over pages are done the same way as the split templates above, using the table syntax of {| and |} instead of {{template/s}} and {{template/e}}. For some commonly used table formatting, split templates such as {{block center/s}} and {{TOC begin}} already exist, and are used as described above.

For a one-off split-table, you don't need to make a template.

Method[edit]

This method has two parts, both due to the way that the ProofreadPage extension concatenates pages without newlines between them:

  1. Use {{nopt}} to force the table markup (either |- or |}) to start on a new line in the final text (this is required for it to be seen as table markup).
  2. Place new row markers (|-) at the start of pages, not the end of the previous page. This is required for the page numbers to be placed correctly[1].
Page Section Content
First page Body
{| class="class?" style="table styling here"
|-
|Table contents
Footer
{{nopt}}
|}
<references/> <!--if any-->

Note: the {{nopt}} is important in the footer, because without it, the table will close after the rest of the footer content, like references, and therefore they will render in the wrong place.[2]

Middle pages Header
{| class="class?" style="table styling here" (same as first page, or this page will render wrongly in the page view)
|-<!-- Trailing row marker needed if using header/ribbon rows  -->
Body
{{nopt}}
|-
|More table rows
Footer
{{nopt}}
|}
<references/> <!--if any-->
Last page Header
{| class="class?" style="table styling here" (same as first page, or this page will render wrongly in the page view)
|-<!-- Trailing row marker needed if using header/ribbon rows  -->
Body
{{nopt}}
|-
|More table rows
|}

Poems across page breaks[edit]

The <poem> tag must always be opened and closed in the body of the page.

If you use "direct formatting" (i.e. <br/>), then you don't need to do anything different.

If you use {{block center}}, you have to split that template as usual over the pages:

Page Section Content
First page Body
{{block center/s}}<poem>
Stanza 1, Line 1
Stanza 1, Line 2
<br/><!-- start a new stanza -->
</poem>
Footer
{{block center/e}}
Middle pages Header
{{block center/s}}
Body
<poem>
Stanza 2, Line 1
Stanza 2, Line 2
</poem><!-- no new stanza -->
Footer
{{block center/e}}
Last page Header
{{block center/s}}
Body
<poem>
Stanza 2, Line 3
Stanza 2, Line 4
</poem>
{{block center/e}}

Footnotes across page breaks[edit]

Footnotes that span more than one page are handled in a similar way to normal. The method below will display correctly both in the Page namespace and when transcluded into the Main namespace.

Method[edit]

First page[edit]

Body
Lorem ipsum dolor sit amet,<ref name="p76">dolorem ipsum, quia dolor sit amet,</ref>
Footer
{{smallrefs}}

Subsequent pages[edit]

Body
…est laborum.<ref follow="p76">consectetur, adipisci velit…</ref>
Footer
{{smallrefs}}

Potential problems[edit]

  • The <ref name=…> can be anything as long as it's not shared with unrelated footnotes that are transcluded onto the same page. Using the page number is preferred.
  • Normally the <ref follow=…> is at the end of the page. However, if there is a change of section – for transcluding in a different chapter – then continued footnote should be moved to the top of the page, or else it will not be transcluded.
  • Long footnotes may have multiple paragraphs; the use of double carriage returns to start a new paragraph will not work in the transcluded footnotes – it has to be forced by wrapping the second and subsequent paragraphs with the HTML paragraph tags <p>…</p>.[3]

Lists across page breaks[edit]

Lists across page breaks create complications where typically, a portion of parent list item and a 'continued' wording is used on the second page.

Sub listed item on second page[edit]

Rather than placing the continuation content in the header of the second page it should be placed in the body inside a <noinclude></noinclude> pair, followed by a line feed.[4] The next list item, (or sub list item) is then continued as normal.

Body of first page
*Parent item of list.
**First item of sub list.
Body of second page
<noinclude>*Parent item list (cont.)</noinclude><!-- The line feed here is significant. -->
*Second item of list.

Continuation of first list item[edit]

Body of first page
*Parent item of list. Content of item ...
Body of second page
<noinclude>*Parent item of list. (cont.)<br></noinclude>.. continues across a page divide.<!-- -->
** Sub list item.

Note that any Section tag's should be placed after the list item on the first page, but immediately before the noincluded portion on the second. There is NO line-feed placed between the section tags and the noincluded portion on the second page.

Newlines across pagebreaks[edit]

The default behavior for transclusion is to just add a space between the text of two pages (except when the page ends in a hyphen, when it is removed and no space is inserted), even when there should be a paragraph break, or when there should be no space at all. There are a some templates to assist in such cases.

  • Use {{page end hyphen}} or {{peh}} when the hyphen at the end of the page should be retained. See H:HYPHEN for more details.
  • Place {{nop}} on a new line when the end of a page is also end of a paragraph.

Notes[edit]

  1. If you put them at the end of pages, the page number location markers are placed between table rows, and this is invalid HTML, resulting in "fostered content" linter errors. See also phab:T232477.
  2. Specifically, they may be fostered as above and end up at the top of the table and cause a lint error, or they may appear in the last cell of the table.
  3. See also phab:T49544.
  4. This can't go in the header field for now, due to a forced double-newline in the back-end. See phab:T275388 for details.