2013-06-29 3 views
2

Мой сайт использует Jekyll с парсером уценки Redcarpet. Я хотел бы сделать это так, мои заголовки автоматически генерируются с идентификаторами:Сгенерировать идентификаторы в заголовках

# My heading 

становится:

<h1 id="my-heading">My heading</h1> 

Но я не нашел способ.

Я хотел бы придерживаться redcarpet в качестве анализатора разметки, но это не обязательно. Если есть еще один, который поддерживает все те же функции, я бы с радостью подумал об этом. Мне особенно нравится, что redcarpet генерирует кодовые блоки в формате pygments.

+0

Я не совсем уверен, как вы это сделаете, но, возможно, [создание собственного средства визуализации - это путь] (https://github.com/vmg/redcarpet#and-you-can-even-cook- твой собственный). Удачи! – agarie

ответ

2

Мои предпочтительные решения является @maul-esel's Github Issues answer:

redcarpet README упоминает вариант конфигурации with_toc_data. Это создает идентификаторы для заголовков, которые выглядят как id="toc_0" и т.д.

Вы можете включить его, добавив это в свою _config.yml Джекил конфигурации:

markdown: redcarpet 
redcarpet: 
    extensions: [with_toc_data] 

Это не идеальный - я бы предпочел более семантические идентификаторы как id="my-heading" - но это достаточно хорошо, и это очень просто - это означает, что мне не нужно настраивать и учиться другому парсеру разметки (или проработать, как продлить красную дорожку).

1

Если это помогает, это делает работу с Kramdown

$ kramdown <<< '# My heading' 
<h1 id="my-heading">My heading</h1> 
+0

Я посмотрел на крампада. Это потенциальное решение, но я предпочитаю, чтобы redcarpet генерировал кодовые блоки. –

+0

Может быть, я просто не знаю, как это сделать. С redcarpet я заключу свой код в '\' \ '\' css \ ... \ \ '' '' '' 'и он ставит pygments' 's вокруг всех соответствующих битов кода для выделения. Если я делаю эквивалентный '~~~ css \ ... \ ~~~' для kramdown, он просто окружает мой код '

...
', но не имеет разметки pygments. –

+0

Да, меня это не волнует. Я на самом деле не парень из Ruby, и я предпочитаю языковые агностики. Я просто хочу, чтобы эта работа работала с минимальными усилиями. –