Справка:Вычитка/Соединение страниц

Материал из Викитеки — свободной библиотеки

Соединение текста нескольких страниц при трансклюзии (включении) может иметь некоторые проблемы, даже если по отдельности эти страницы корректно отображаются в пространстве имен Страница.

Шаблоны на разрывах страниц[править]

Если у вас есть шаблон, который продолжается через разрыв страниц, вы не можете просто поместить начало шаблона или таблицы, например, {{fine center|> на первой странице, а закрывающие скобки }} на следующей странице. Причина в том, что вики-движок рендерит вики-код страницы до того как делает трансклюзию, поэтому закрытие шаблона на следующей странице будет им проигнорировано и обработано как обычный текст.

Чтобы обойти это, вам нужно использовать «разделенную» форму этого шаблона или таблицы, посредством полей верхнего и нижнего колонтитула в редакторе пространства имен Страница. (Эти колонтитулы игнорируются при трансклюзии, фактически представляя собой скрытые теги <noinclude></noinclude>.) В этом методе в трансклюзию подаются «начало» шаблона, его «конец», и содержащийся в нём текст с разных страниц, как отдельные фрагменты текста, которые затем вики-движок соберёт в единое целое как одну трансклюзию. Также, при подобном использованием полей верхнего и нижнего колонтитула страницы корректно отображаются в пространство имен Страница, поскольку начала и концы шаблонов скрыты в колонтитулах.

Метод[править]

Страница Раздел Содержимое
Первая страница Тело
{{block center/s}}
Текст первой страницы
Нижний колонтитул
{{block center/e}}
Средние страницы Верхний колонтитул
{{block center/s}}
Тело
Текст средней страницы
Нижний колонтитул
{{block center/e}}
Последняя страница Верхний колонтитул
{{block center/s}}
Тело
Текст последней страницы
{{block center/e}}

Таблицы через разрывы страниц[править]

Таблицы, продолжающиеся через несколько страниц, создаются так же, как и приведенные выше разделённые шаблоны, только с использованием синтаксиса таблиц {| и |}, вместо {{template/s}} и {{template/e}}.

Метод[править]

В этом методе надо учесть следующие пункты, поскольку расширение ProofreadPage объединяет страницы, не добавляя новую строку между ними:

  1. Размещайте маркеры новых строк таблицы (|-) в «начале» страниц, а не в конце предыдущей страницы. Это необходимо для корректного размещения нумерации страниц[1].
  2. Перед маркером новой строки таблицы (|-) в «начале» страниц ставьте пустую строку (или <!-- --> на пустой строке). Это необходимо, чтобы вики-движок не посчитал эту разметку простым текстом предыдущей ячейки таблицы.
Страница Раздел Содержимое
Первая страница Тело
{| class="class?" style="здесь стили таблицы"
|-
|Содержимое таблицы
Нижний колонтитул
<!-- -->
|}
<references/>

Примечание: пустая строка <!-- --> в нижнем колонтитуле важна, потому что без неё таблица закроется «после» остального содержимого нижнего колонтитула, из-за чего оно, включая, например, сноски будет отображаться в неправильном месте.[2]

Средние страницы Верхний колонтитул
{| class="class?" style="здесь стили таблицы" (то же, что в теле первой страницы, иначе эта страница будет неправильно отображаться в представлении страницы)
Тело
<!-- -->
|-
|Строки таблицы
Нижний колонтитул
<!-- -->
|}
<references/>
Последняя страница Верхний колонтитул
{| class="class?" style="здесь стили таблицы" (то же, что в теле первой страницы, иначе эта страница будет неправильно отображаться в представлении страницы)
|-<!-- Маркер конечной строки необходим, если используются строки заголовка  -->
Тело
<!-- -->
|-
|Строки таблицы
|}

Альтернативный метод: Вместо размещения скрываемых фрагментов таблицы в верхнем и нижнем колонтитулах, можно размещать их в тегах <noinclude></noinclude> в теле страницы. Это позволяет использовать в редакторе кнопку быстрого предпросмотра без перезагрузки страницы, хотя несколько засоряет тело страницы.

Стихотворения через разрывы страниц[править]

Если вместо тега <poem> вы используете форматирование посредством тега <br>, то вам не нужно делать ничего другого.

Тег <poem> должен открываться и закрываться в теле страницы.

Если вы используете шаблон {{block center}}, вы должны разделить этот шаблон между страницами:

Страница Раздел Содержимое
Первая страница Тело
{{block center/s}}<poem>
Строфа 1, Строка 1
Строфа 1, Строка 2
<br/><!-- начало новой строфы -->
</poem>
Нижний колонтитул
{{block center/e}}
Средние страницы Верхний колонтитул
{{block center/s}}
Тело
<poem>
Строфа 2, Строка 1
Строфа 2, Строка 2
</poem><!-- нет новых строф -->
Нижний колонтитул
{{block center/e}}
Последняя страница Верхний колонтитул
{{block center/s}}
Тело
<poem>
Строфа 2, Строка 3
Строфа 2, Строка 4
</poem>
{{block center/e}}

Сноски через разрывы страниц[править]

Сноски, продолжающиеся на следующих страницах должны использоваться с аргументами <ref name=> и <ref follow=>, подробнее см. Справка:Вычитка#Примечания. Приведенный ниже метод будет правильно отображаться как в пространстве имен Страница, так и при трансклюзии в основное пространство имен.

Метод[править]

Первая страница[править]

Тело
Lorem ipsum dolor sit amet,<ref name="p76">dolorem ipsum, quia dolor sit amet,</ref>
Нижний колонтитул
<references/>

Последующие страницы[править]

Тело
…est laborum.<ref follow="p76">consectetur, adipisci velit…</ref>
Нижний колонтитул
<references/>

Потенциальные проблемы[править]

  • Значение name в теге <ref name=…> должно начинаться буквы и быть отлично от значений в других несвязанных сносках, которые транскюзятся с этой же страницы. Желательно использовать номер страницы.
  • Обычно тег <ref follow=…> располагается в конце страницы. Однако, если есть изменение раздела — для трансклюзии в другую главу — тогда продолжение сноски следует переместить в начало страницы, иначе оно не попадёт в трансклюзию.
  • Длинные сноски могут состоять из нескольких абзацев; использование двойного перевода строк для начала нового абзаца не работает в трансклюзиях сносок — это необходимо принудительно, поместив шаблон {{абзац}} (или его синоним {{pb}}) между двумя абзацами. Следует избегать использования <br/> или <p></p> для разделения абзацев, так как они не всегда хорошо работают при экспорте в форматы PDF или электронных книг.[3]

Списки через разрывы страниц[править]

Списки через разрывы страниц ломаются, когда часть элемента родительского списка и «продолжение» используются на второй странице.

Подпункты на второй странице[править]

Вместо размещения продолжающегося содержимого в верхнем колонтитуле второй страницы его следует поместить в тело страницы внутри парных тегов <noinclude></noinclude>, за которой следует перевод строки[4]. После этого продолжается как обычно следующие элементы списка (или подсписка).

Тело первой страницы
* Родительский элемент списка
** Первый элемент подсписка.
Тело второй страницы
<noinclude>* Родительский элемент списка (продолжение)</noinclude><!-- Перевод строки здесь важен. -->
* Второй элемент списка.

Продолжение первого пункта списка[править]

Тело первой страницы
* Родительский элемент списка. Содержание элемента ...
Тело второй страницы
<noinclude>* Родительский элемент списка (продолжение)<br></noinclude>.. продолжение через разделение страницы.<!-- -->
** Элемент подсписка.

Новый абзац в начале страницы[править]

При трансклюзии викидвижок вставляет пробел между текстом двух страниц (за исключением случаев, когда страница заканчивается дефисом), при этом абзац не создаётся. Для создания нового абзаца:

  • Поместите {{nop}} в самом начале страницы на отдельной строке. Это создаст отступ абзаца и предотвратит слияние слияние абзацев при трансклюзии, новый абзац появится в основном пространстве. Или вместо {{nop}} используйте тег <nowiki></nowiki> (кнопка Ignore wiki formatting в панели редактирования).
  • Можно просто поставить две пустые строки без пробелов в них, но они могут быть удалены викификатором или ботом.
{{nop}} пустые строки
<!-- верх страницы -->
_____________________
{{nop}}
Начало нового абзаца.
<!-- верх страницы -->
_____________________


Начало нового абзаца.

Примечание: Для отображения абзацев в пространстве имён Страница, в поле верхнего колонтитула вставляют тег <div class="text"> или <div class="indent">. Автоматическое добавление этого тега для всего произведения можно настроить в редакторе индексной страницы.

Ошибки при лишних переводах строк в начале страниц[править]

Лишние переводы строк в начале страницы сломают абзац и вёрстку в основном пространстве при трансклюзии, что является грубой ошибкой.

Размещайте нумерацию страниц и подобные элементы в полях верхнего и нижнего колонтитулов, чтобы при трансклюзии они не попали внутрь текста в основном пространстве. Альтернативно, их можно размещать в тегах <noinclude></noinclude>, но это несколько засоряет вики-код, и необходимо будет следить за тем чтобы не создавать лишних переводов строк.

Пример ошибочных правок
Место поломки первого абзаца Низ первой страницы Верх второй страницы Результат в основном пространстве Должно быть
В тексте
Это один
<noinclude>14</noinclude>

абзац.

<!-- 
Здесь содержимое тегов noinclude игнорируется вики-движком. 
Но в трансклюзию попадают переводы строки после этих тегов, которые разрывают абзац.

Правильно будет переместить номер страницы (в этом примере: «14») в поле колонтитула без тегов noinclude.
Или убрать перевод строки в тексте: <noinclude>14</noinclude>абзац.
-->

Это один

абзац.

Это один абзац.
В списке
* Это пункт списка
* Это другой
<noinclude>14</noinclude>
пункт списка.

<!-- аналогично случаю выше -->
  • Это пункт списка
  • Это другой

пункт списка.

<!-- перевод строки сломал список -->
  • Это пункт списка
  • Это другой пункт списка.
Утерян перевод строки
— Я иду направо! — сказал Вася.
— Я налево.

<!-- 
Утеряно начало абзаца.
Правильно:
_____________________
{{nop}}
— Я налево.


Или:
_____________________


— Я налево.
-->

— Я иду направо! — сказал Вася. — Я налево.

<!-- 
Два абзаца слились в один, 
как абсурдные реплики одного персонажа.
 -->

— Я иду направо! — сказал Вася.

— Я налево.

Нижний абзац[править]

На страницах может отсутствовать отступ в нижнем абзаце. Эта особенность не затрагивает основное пространство. Для добавления отступа надо добавить пустую строку в поле нижнего колонтитула. Для наглядности её оформляют с тегом <!-- -->.

<!-- -->
<references />

Примечание: Автоматическое добавление колонтитулов для всего произведения можно настроить в редакторе индексной страницы.

Переносы слов на следующую страницу и дефисы[править]

При трансклюзии, если страница оканчивается дефисом, то последняя лексема с дефисом объединится с первой лексемой следующей страницы в одно слово.

В некоторых случаях это не работает, тогда надо использовать шаблон {{перенос}}:

  • Если перенос не находится в конце страницы, например, когда текст обвёрнут в шаблон {{ВАР}} или теги (<section>, <ref> и др.).
  • Если в последнем слове есть дефис и перенос пришёлся как раз на него. Пример переноса слова, которое не содержит дефиса.


Первая страница Вторая страница Результат
Страница оканчивается дефисом сло- во слово
Перенос не в конце страницы {{Перенос|сло-|во}} {{Перенос2|сло|во}} слово
Перенос пришёлся на дефис {{Перенос|кое-|как|дефис=}} {{Перенос2|кое-|как}} кое-как

Примечания[править]

  1. Если вы поместите их в конец страниц, маркеры номеров страниц будут помещены между строками таблицы. Это будет ошибкой HTML, что приведёт к ошибке линтера «Ошибки статического анализатора: Присвоенное содержимое». См. также phab:T232477.
  2. В частности, они могут быть fostered, как указано в предыдущей сноске, и оказаться в «верхней части» таблицы и вызвать ошибку линтера, или они могут появиться в последней ячейке таблицы.
  3. См. также phab:T49544.
  4. Тут нельзя использовать поле верхнего колонтитула из-за принудительного двойного перевода строк в бэкенде. Подробности см. в phab:T275388.