Сейчас 127 заметки.

Таблица содержаний

Материал из ЗАметки

Любая страница может содержать несколько разделов, также называемых секциями. Страница может быть разделена на несколько секций. Для их разметки существует специальный синтаксис.

Создание секций

Разделение документа на секции происходит при добавлении в него заголовков. Например:

== Первый раздел ==
Текст.
=== Подраздел ===
Ещё текст.
==== Под-подраздел ====
Еще какой-то текст.
== Второй раздел ==

Таблица содержания

(«Table of contents», «TOC»)

Таблица содержания автоматически добавляется на каждую страницу, имеющую больше трёх заголовков, исключая следующие случаи:

  • пользователь отключил показ таблицы содержания в своих настройках;
  • в коде страницы содержится специальный тег __NOTOC__ (либо же __БЕЗСОДЕРЖАНИЯ__, при использовании LanguageRu.php).

При помощи тегов __FORCETOC__ или __TOC__ (в проектах, использующих последнюю версию LanguageRu.php также применимо __СОДЕРЖАНИЕ__) можно принудительно создавать таблицу содержания, даже если число заголовков меньше четырёх.

Содержание отображается перед первым из заголовков, либо же в том месте текста, где размещён тег __TOC__. Обычно перед содержанием помещается некоторый дополнительный текст с кратким обзором статьи. Хотя вариант по умолчанию является наиболее удобным, иногда имеет смысл передвинуть таблицу содержания, например, зафиксировать её в самом начале статьи, либо же добавить её копию в конце. (В текущей версии МедиаВики есть небольшая недоработка: при использовании нескольких таблиц содержания свернуть можно только первую из них, учитывайте это).

Если вы хотите, чтобы Шаблон:Nobr «Содержание» появлялось сдвинутым Шаблон:Nobr краю страницы, Шаблон:Nobr слева обтекал содержание, Шаблон:Nobr шаблон Шаблон:Tl вместо ключевого слова __TOC__.

В настройках пользования можно включить автоматическую нумерацию заголовков разделов в тексте страницы. Это никак не влияет на исходный код, однако может оказаться удобным при чтении объёмных статей.

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

Краткое содержание

Когда страница содержит большое количество заголовков с короткими именами (например, буквы алфавита), таблица содержания имеет очень неприглядный вид. В таких случаях применяют так называемое сжатое содержание. Получают его путём добавления в код страницы следующего тега:

Шаблон:Tl

В результате получается нечто вроде этого:

Шаблон:АБВ

Также это может быть применено к временным промежуткам:

1900-е1910-е1920-е1930-е1940-е1950-е1960-е1970-е1980-е1990-е2000-е

Учтите, что данный шаблон не поставляется в комплекте с MediaWiki.

Ссылки на разделы

Если просмотреть HTML-код любой страницы, содержащей несколько разделов, можно заметить, что в начале каждого раздела присутствует тег «<a>» с двумя параметрами «name» и «id», значение которых совпадает с его заголовком. Это позволяет ссылаться на разделы внутри страницы. Эти же элементы используются для внутренних ссылок на разделы в таблице содержания.

Например, вот HTML-код ссылки на данный раздел:

<p><a name="Ссылки_на_разделы" id="Ссылки_на_разделы"></a></p>
<h2>Ссылки на разделы</h2>

Вики-код ссылки на данный раздел (Ссылки на разделы) выглядит следующим образом: [[:Таблица содержаний#Ссылки_на_разделы|Ссылки на разделы]]

Общий синтаксис таков:

[[Имя_страницы#id|текст ссылки]].

Если ссылка делается на раздел этой же страницы, можно использовать упрощённый синтаксис:

[[#id|текст ссылки]]

Если на странице присутствует несколько одинаково озаглавленных разделов, то ссылки на них образуются путём добавления к имени символа подчёркивания и порядкового номера. Например, если в статье три раздела с заголовком «Пример», то ссылки на них используют «#Пример», «#Пример_2» и «#Пример_3».

Обратите внимание, что использование дат в заголовках секций может усложнить создание ссылок на них.

Внутренняя ссылка, размещённая внутри заголовка раздела, не создаёт никаких сложностей:

В старых версиях MediaWiki возникали проблемы, если в названии секции была внешняя ссылка, содержащая "http://» (Шаблон:Bug). Чтобы обойти данную ошибку, нужно заменить в ссылке двоеточие на «%3A» (например, [[#Пример_http%3A//a]]). При этом в ссылке нельзя использовать пробелы, только знак подчёркивания. В настоящее время ошибка устранена не до конца, поэтому могут возникать неверные ссылки. Будьте внимательны при редактировании. Примеры (правильные — последние три варианта):

Исходный текст Результат
[[#Пример http://a]] #Пример http://a
[[#Пример http%3A//a]] #Пример http://a
[[#Пример_http://a]] #Пример_http://a
[[#Пример_http%3A//a]] #Пример_http://a
[[#Пример_http%3A%2F%2Fa]] #Пример_http://a

При создании внешнего URL также следует заменять «://» на «%3A%2F%2F»

http://wikiency.org/wiki/:Таблица содержаний#Пример_http%3A%2F%2Fa

Ссылки на разделы и перенаправления

Допускается перенаправление на определённый раздел внутри целевой статьи.

Также допускается указывать определённый раздел в ссылке, указывающей на страницу-перенаправление. Если раздел присутствует в целевой статье перенаправления, то на него и будет осуществлён переход. Подобная ситуация часто возникает при переименовании страницы.

Однако при переименовании раздела не происходит автоматического создания перенаправления со старого варианта на новый. Также невозможно просмотреть ссылки на каждый отдельный раздел. Возможные варианты решения:

  • Использовать якорь и ссылаться на него.
  • В начале раздела поместить комментарий, перечисляющий статьи, которые на него ссылаются. Комментарий невидим при просмотре статьи. Например:
    == История ==<!--Заголовок используется для перенаправления [[История Петербурга]]-->
  • Самый кардинальный вариант: вынести раздел на отдельную страницу.

Редактирование разделов

Каждый раздел может редактироваться отдельно, это экономит трафик и даёт возможность избежать конфликтов правок при одновременной правке разными участниками разных разделов страницы (После перехода на Mediawiki 1.5 была обнаружена ошибка (Шаблон:Bug), вследствие которой при одновременной правке разных разделов статьи получается так, что последняя правка стирает правки всех других разделов, причём даже не выдаётся предупреждение о конфликте правок). Вход в режим редактирования осуществляется посредством специальных ссылок редактирования, размещающихся рядом с заголовком (точное положение задаётся в настройках) или же по правому щелчку на заголовке секции (используется JavaScript), данная возможность активируется в настройках пользователя. Также можно самостоятельно сконструировать URL наподобие этого:

http://wikiency.org/w/index.php?title=:Таблица содержаний&action=edit&section=3

Добавление новой секции происходит при создании нового заголовка, соответственно, при его удалении секции сливаются в одну.

Тег __NOEDITSECTION__ (__БЕЗРЕДАКТИРОВАНИЯРАЗДЕЛА__ при использовании LanguageRu.php), добавленный в любом месте исходного кода страницы, запрещает отображение ссылок редактирования разделов. Однако правка текста секций по правому щелчку по заголовку или посредством URL остаётся возможной.

В настоящий момент на странице не создаётся ссылки для редактирования части текста, идущей перед первым из заголовков (Шаблон:Bug), однако нужный URL может быть создан вручную, например, для данной страницы:

http://wikiency.org/w/index.php?title=:Таблица содержаний&action=edit&section=0

Наиболее простой способ получить подобный адрес — скопировать ссылку для редактирования любой из секций и сменить в нём номер секции на 0.

Редактирование разделов шаблонов

Разделы, принадлежащие использованным на странице шаблонам, также могут редактироваться отдельно.

Разделение на секции происходит после слияния текста шаблонов и вызывающей их страницы. Поэтому секция, расположенная до тега шаблона, может включать в себя его текст, аналогично и текст, расположенный после тега шаблона, включается в последнюю из секций шаблона. В связи с этим возникает путаница, когда текст раздела, отображаемый при просмотре страницы, не совпадает с текстом, видимым при редактировании этого же раздела. Поэтому рекомендуется соблюдать следующие правила:

  • не помещать никакого текста до первого из заголовков шаблона (в случае их существования)
  • если страница использует шаблоны, имеющие несколько разделов, сразу же после тега шаблона начинать новый раздел

В некоторых случаях может оказаться удобным начать шаблон с заголовка новой секции, даже если его содержимое не нуждается в разделении и данная секция окажется единственной. При использовании такого шаблона будет автоматически создана ссылка редактирования секции, проследовав по которой можно будет изменить сам шаблон. Это избавляет от необходимости добавлять в текст шаблона подобную ссылку вручную.

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

Редактирование раздела в новом окне

Если пользователь включил в своих настройках возможность редактирования статей по правому щелчку на заголовке раздела, то становится невозможным вызвать всплывающее меню и открыть ссылку в новом окне. Однако большинство браузеров предоставляют для этого и другие способы (Mozilla/Firefox: щелчок по ссылке колёсиком, ctrl+щелчок, всплывающее меню для найденного выделенного текста; IE: shift+щелчок).

Горизонтальная разделительная линия

Горизонтальная разделительная линия (для её создания нужно написать «----» в начале строки) используется только для визуального разделения текста и не создаёт новых разделов.

Раздел «См. также»

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

В противовес данной практике, иногда текст «см. также» выносят в самое начало статьи.

Каждый отдельный раздел также может включать в себя подраздел (или же просто отдельный абзац) «см. также», содержащий ссылки на более узкую тему.

Заголовки, не создающие новых разделов

Внимание! Информация в этом разделе не актуальна. 

Имеется возможность создания заголовков, не образующих новых разделов. Соответственно, на них также нельзя ссылаться. Делается это следующим образом:

<h2>Не заголовок</h2>

Выглядит это так:

Не заголовок

Также можно использовать теги <h3><h6> для создания заголовков следующих уровней.

Применяется и другая конструкция:

<b><font style="font-size:120%">Другой пример</font></b>

что выглядит как

Другой пример

Однако выделенный таким образом текст может отличаться от прочих заголовков. Данный вариант используется обычно для смыслового выделения.

Начиная с версии 1.5, тег <h2> тоже создает разделы.

Пробел в заголовке

Если заголовок любого уровня состоит только из пробела, это вызывает проблемы: в этом месте в HTML-код страницы добавляется тег вида

<a name=""></a>

соответственно, ссылки на этот раздел невозможны, не работает даже ссылка в таблице содержания.

Разделы, страницы и слияние страниц

Преимущества отдельных страниц:

  • возможность получения информации о ссылках на страницу;
  • автоматическое перенаправление со старых ссылок при переименовании страницы;
  • загрузка небольшой страницы происходит быстрее.

Преимущества объёмной страницы, разделённой на несколько секций:

  • загрузка одной большой страницы происходит быстрее, чем загрузка нескольких маленьких страниц;
  • по одной большой странице гораздо проще осуществлять поиск (средствами браузера пользователя), во многих случаях это гораздо удобнее поиска по всему проекту (и снижает нагрузку на сервер);
  • таблица содержания предоставляет удобные возможности навигации.

Ещё один путь — это составлять одну страницу из нескольких, используя их как шаблоны. В результате образуется так называемый составной документ. Этот вариант даёт возможность поиска по отрисованной странице, но не по её вики-коду.

Раздел для примеров

Пример а

Пример http://a

См. также

Mediawiki разметка



документация по контролируемым сделкам