Плагин TableOfContents. Создание оглавления для страницы | jenyay.net

Плагин TableOfContents. Создание оглавления для страницы

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

TableOfContents 1.0.4 (Требуемая версия OutWiker: 1.8 - 2.1.0.834)

TableOfContents 1.3.1 (Требуемая версия OutWiker: 3.2.0.922 и выше)

Использование

Плагин TableOfContents предоставляет два способа создания оглавления. Первый - это вставить команду (:toc:) на страницу, где должно быть оглавление. В этом случае при каждом рендеринге страницы оглавление будет пересоздаваться заново.

Если же вас не устраивает оглавление, создаваемое автоматически, то вы можете воспользоваться пунктом меню "Вики - Оглавление - Создать", и на страницу будет вставлено оглавление в виде викинотации, которое можно подправить под ваши нужды.

Рассмотрим несколько примеров.

Оглавление без ссылок

Пусть у нас есть следующая структура страницы.

!! Введение
...
!! Глава 1
...
!!! Раздел 1.1
...
!!! Раздел 1.2
...
!! Глава 2
...
!! Заключение

Если мы где-нибудь на этой странице выберем тункт меню "Вики - Оглавление - Создать", то на страницу будет добавлен следующий текст:

* Введение
* Глава 1
** Раздел 1.1
** Раздел 1.2
* Глава 2
* Заключение

В результате оглавление будет выглядеть следующим образом:

Аналогичного результата можно добиться, добавив на страницу команду (:toc:).

Ссылки в оглавлении

Если в заголовках проставлены якоря, то плагин TableOfContents создаст ссылки на эти якоря в оглавлении. Якоря могут находиться в трех позициях относительно заголовка:

  • Непосредственно перед тегами !!...
  • Сразу после тегов !!...
  • В конце заголовка.

Все три случая показаны в следующем примере:

!! [[#intro]] Введение
...
!! [[#chapter1]] Глава 1
...
[[#section1_1]]
!!! Раздел 1.1
...
[[#section1_2]]
!!! Раздел 1.2
...
!! [[#chapter1]] Глава 2
...
!! Заключение [[#resume]]

Для такой структуры страницы оглавление будет выглядеть следующим образом:

* [[Введение -> #intro]]
* [[Глава 1 -> #chapter1]]
** [[Раздел 1.1 -> #section1_1]]
** [[Раздел 1.2 -> #section1_2]]
* [[Глава 2 -> #chapter1]]
* [[Заключение -> #resume]]

Все заголовки будут представлять собой ссылки:

Точно так же будет выглядеть результат, полученный с помощью команды (:toc:).

Совместное использование плагинов TableOfContents и Counter

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

Для начала посмотрим, в чем проблема. В качестве примера возьмем главы из "Золотого теленка". Если бы Ильф с Петровым писали свое произведение в OutWiker с использованием плагина Counter, у них была бы примерно структура глав:

!!! Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
...
!!! Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
...
!!! Глава (:counter name="chapter":). Бензин ваш — идеи наши
...
!!! Глава (:counter name="chapter":). Обыкновенный чемоданишко

Результат будет выглядеть следующим образом:

Все замечательно. Если мы теперь в начале страницы создадим оглавление, то текст страницы будет выглядеть следующим образом:

* Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
* Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
* Глава (:counter name="chapter":). Бензин ваш — идеи наши
* Глава (:counter name="chapter":). Обыкновенный чемоданишко


!!! Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
...
!!! Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
...
!!! Глава (:counter name="chapter":). Бензин ваш — идеи наши
...
!!! Глава (:counter name="chapter":). Обыкновенный чемоданишко

Счетчик, как и положено, попал в оглавление, но после оглавления он продолжает наращивать свое значение, в результате чего "настоящие" главы начнут свою нумерацию с 5 в данном случае. Чтобы исправить такое поведение достаточно "сбросить" счетчик после оглавления, добавив всего одну строку:

* Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
* Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
* Глава (:counter name="chapter":). Бензин ваш — идеи наши
* Глава (:counter name="chapter":). Обыкновенный чемоданишко

(:counter name="chapter" start=0 hide:)

!!! Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
...
!!! Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
...
!!! Глава (:counter name="chapter":). Бензин ваш — идеи наши
...
!!! Глава (:counter name="chapter":). Обыкновенный чемоданишко

Теперь главы будут нумероваться так же, как и в оглавлении. Можно даже заменить все оглавление одной командой (:toc:):

(:toc:)
(:counter name="chapter" start=0 hide:)

!!! Глава (:counter name="chapter":). О том, как Паниковский нарушил конвенцию
...
!!! Глава (:counter name="chapter":). Тридцать сыновей лейтенанта Шмидта
...
!!! Глава (:counter name="chapter":). Бензин ваш — идеи наши
...
!!! Глава (:counter name="chapter":). Обыкновенный чемоданишко

Результат будет выглядеть следующим образом:

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

История изменений

1.3.1 (03.05.2023)

  • Переход на новый API.

1.3 (19.10.2019)

  • Переход на новый API.

1.2 (26.08.2018)

  • Добавлена немецкая локализация.

1.1.1 (16.06.2018)

  • Исправление ошибок.

1.1 (15.02.2018)

  • Добавлена поддержка OutWiker 2.1. Переход на Python 3.

1.0.4 (17.10.2016)

  • Добавлена поддержка OutWiker 2.0.

1.0.3 (20.08.2016)

  • Добавлена поддержка шведского языка.

1.0.2 (20.01.2015)

  • Исправление ошибок.

1.0.1 (11.09.2014)

  • Обновление итальянской локализации.

1.0 (30.08.2014)

  • Первая версия.

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4.5 stars

Рейтинг 4.3/5. Всего 6 голос(а, ов)