Asciidoc: Как создать кликабельные анкоры для анкоров

У меня есть сайт блога jekyll, использующий asciidoc. Теперь я хочу, чтобы при наведении курсора на заголовок отображался символ привязки, как на GitHub:

Наведение курсора на заголовок GitHub

При нажатии на символ браузер должен перейти к заголовку, поэтому вывод HTML должен выглядеть следующим образом:

<h2 id="whats-in-a-rainbow-table">
    <a href="#whats-in-a-rainbow-table"></a>
    What's in a Rainbow table?
</h2>

Эквивалентная разметка asciidoc:

== xref:whats-in-a-rainbow-table[ ]What's in a Rainbow table?

Это работает и выглядит хорошо с некоторым CSS, но я не хочу писать столько разметки для каждого заголовка. Есть ли способ автоматизировать это?


person Aloso    schedule 29.03.2021    source источник
comment
Честно говоря, я не очень уверен в asciidoc. Но насколько я знаю/помню можно как-то связать asciidoc с JS? Так что это может быть типичной задачей, которую вы можете решить с помощью JS... вы можете сделать это в JS?   -  person Brebber    schedule 29.03.2021
comment
@Brebber Я думаю, это работает только с JS-версией Asciidoc, я использую версию Ruby (потому что Jekyll использует Ruby). К сожалению, я не очень хорошо знаком с Ruby.   -  person Aloso    schedule 29.03.2021
comment
Я видел учебник по написанию макросов Asciidoc в Ruby. На самом деле я мог бы сделать это, чтобы уменьшить количество шаблонов на заголовок, но я надеялся, что есть лучшее решение.   -  person Aloso    schedule 29.03.2021


Ответы (1)


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

Вы можете добавить собственный JavaScript, используя файл docinfo. См. мой ответ на этот вопрос, чтобы узнать, как это сделать.

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

person eskwayrd    schedule 30.03.2021
comment
Я не знаю, почему я не подумал об этом, это гораздо более элегантное решение. Спасибо! - person Aloso; 31.03.2021