Расширение Крамдауна

У Kramdown есть классная генерация оглавления с

{: .toc}

Это создает хороший TOC, например, в списке порядка/непорядка в html как:

<ul id="markdown-toc">
   <li></li>
   ...
</ul>

Но иногда я хочу больше контролировать это, например, использовать Bootstrap List Group или даже использовать разметку <div>, а не <ul><li></li></ul>.

Есть ли способ унаследовать/переопределить этот модуль toc для создания моей собственной разметки?

Примечание. Я использовал страницы github с jekyll.


person Zeta    schedule 25.11.2016    source источник


Ответы (1)


К сожалению, синтаксис {: toc} не допускает никаких изменений, кроме toc_levels (что позволяет указать глубину toc; см. документацию по параметрам для получения подробной информации). По сути, вы можете указать, будет ли список неупорядоченным или упорядоченным. в зависимости от того, используете ли вы

* Table of contents
{: toc}

or

1. Table of contents
{: toc}

Вы также можете исключить заголовки, используя параметр {: .no_toc} (по крайней мере, если вы используете auto-ids, поскольку добавляются только заголовки с идентификаторами, если вы не используете этот параметр, вы также можете просто не указывать идентификатор):

# Header
{: .no_toc}

Все остальное, что вам нужно сделать с помощью CSS, Javascript или постобработки. Тем не менее, это часто относительно просто, так как вы можете обернуть весь toc в <div>, если хотите, или добавить любой класс, который вы хотите, к <ul>/<ol>, включающему toc. Если у вас возникли проблемы с созданием toc в вашем div, убедитесь, что вы разрешаете парсинг на уровне блоков либо с parse_block_html глобально, либо с markdown="block" опциями в самом оглавлении. Например,

# Header

<div markdown="block" id="xyzzy">
* TOC
{: toc .class}
</div>

должен генерировать

<h1 id="header">Header</h1>

<div id="xyzzy">
<ul class="class" id="markdown-toc">
  <li><a href="#header" id="markdown-toc-header">Header</a></li>
</ul>

</div>
person Kyle Barbour    schedule 27.12.2017