Заголовкам должна предшествовать пустая строка.Отсутствующая пустая строка приводит к тому, что анализатор Markdown не распознает их как заголовки.Поэтому отредактируйте документ следующим образом:
# H1
<a name=toc-anchor-h2 />
## H2
<a name=toc-anchor-h3 />
### H3
<a name=toc-anchor-h4 />
#### H4
Если, если вас беспокоит то, что якоря перемещаются слишком далеко от намеченной цели, включите их в строку:
# H1
## <a name=toc-anchor-h2 />H2
### <a name=toc-anchor-h3 />H3
#### <a name=toc-anchor-h4 />H4
Или, так как вы используете Pandoc, вы можете использовать одно из многих расширений Pandoc, которое назначает идентификаторы непосредственно каждому заголовку.
Как выясняется, gfm
вариант Markdown (который вы используете) Пандока уже включает расширение auto_identifiers .Как следует из названия, расширение auto_identifiers будет вызывать автоматическое создание атрибутов id
для каждого заголовка.Напоминаем, что присвоение атрибута id
элементу HTML имеет тот же эффект, что и определение якоря;Вы можете связать с любым фрагментом хеша.Поэтому вы можете просто удалить свои якоря и использовать автоматически сгенерированные id
s, которые уже были назначены самим заголовкам.
Однако, если вы хотите определить свои собственные пользовательские атрибуты id
длякаждый заголовок, затем вы можете включить расширение header_attributes и изменить значение Markdown следующим образом:
# H1
## H2 {#toc-anchor-h2}
### H3 {#toc-anchor-h3}
#### H4 {#toc-anchor-h4}
, что приведет к созданию следующего HTML:
<h1 id="h1">H1</h1>
<h2 id="toc-anchor-h2">H2</h2>
<h3 id="toc-anchor-h3">H3</h3>
<h4 id="toc-anchor-h4">H4</h4>
Обратите внимание, что заголовку «H1» назначен автоматический идентификатор (на основе текстового содержимого элемента), а остальным заголовкам назначены пользовательские идентификаторы.
Одно слово предостережения относительно расширения header_attributes:Синтаксис для определения пользовательских идентификаторов нестандартен и не поддерживается большинством реализаций Markdown.Если вы хотите переносить Markdown, вам, вероятно, следует придерживаться автоматически сгенерированных идентификаторов, поскольку это не требует нестандартной разметки в ваших документах.
Обновление: Обратите внимание, что в соответствии сдокументы, расширение header_attributes не совместимо с gfm
.Следовательно, вы не сможете использовать это расширение.Тем не менее, вы получаете auto_identifiers по умолчанию.Если вам нужны пользовательские идентификаторы, вам нужно будет использовать пользовательские необработанные HTML-привязки.Конечно, это дает вам дополнительное преимущество переносимого документа Markdown.