Возможны ли пронумерованные заголовки в Markdown / Rdiscount?
Я пытаюсь создать HTML с заголовками разделов / подразделов, напоминающих следующее:
- Моя тема верхнего уровня
1.1 Моя первая подтема
1.2 Еще одна подтема
1.2.1 Под-подтема- Еще одна тема высшего уровня
Существуют ли какие-либо реализации Markdown, способные создавать такие пронумерованные заголовки разделов?
Заранее спасибо.
4 ответа
Да, попробуйте Pandoc. Это работает для меня:
pandoc --number-sections < test.md > out.html
( Источник)
Уценка для создания пронумерованного контура, который вы упоминаете в оригинальном сообщении, выглядит следующим образом:
# My top-level topic
## My first subtopic
## Another subtopic
### A sub-subtopic
## Another top-level topic
Если вам требуется более глубокий отступ для подразделов, вы можете достичь этого с помощью встроенного CSS. Например, поместив это в верхнюю часть вышеупомянутого источника Markdown, делайте отступы заголовков:
<style type="text/css">
h2 { margin-left: 10px; }
h3 { margin-left: 20px; }
</style>
Но скажем, у вас есть параграфы текста под вашими заголовками... Я не знаю, как сделать отступ на том же уровне, что и вышеупомянутый заголовок.
Обновление 2015-10-18: у Markdeep есть пронумерованные заголовки (любые другие необычные функции). Проверьте это тоже!
Если ваш инструмент уценки поддерживает настраиваемую тему с помощью CSS, добавьте приведенный ниже фрагмент в CSS, чтобы включить номер заголовка:
body {
counter-reset: h1
}
h1 {
counter-reset: h2
}
h2 {
counter-reset: h3
}
h3 {
counter-reset: h4
}
h1:before {
counter-increment: h1;
content: counter(h1) ". "
}
h2:before {
counter-increment: h2;
content: counter(h1) "." counter(h2) ". "
}
h3:before {
counter-increment: h3;
content: counter(h1) "." counter(h2) "." counter(h3) ". "
}
h4:before {
counter-increment: h4;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}
Я использую Typora, которая поддерживает автоматическую нумерацию для заголовков в этом подходе.
Если вы хотите отредактировать сам файл уценки, а не только полученный HTML-файл, попробуйте enumerate-markdown с python 3
pip install enumerate-markdown
markdown-enum filename.md filename.md
Пример - ввод
# header 1
text
## header 2
text
# header 3
text
Выход
# 1. header 1
text
## 1.1 header 2
text
# 2. header 3
text
если вы позже отредактируете файл и снова запустите скрипт, он обновит старое перечисление.
Как отмечает @adam-monsen, "pandoc --number-section" делает свое дело. Вы также можете просто добавить numbersections: true
в YAML-заголовок, чтобы активировать пронумерованные заголовки для вашего файла.
Markdown призван быть быстрым, легким и простым в использовании, и он идеально подходит для этого счета. Для более сложного форматирования хорошо рассмотреть вариант, отличный от уценки. Не отговорка. Часто, например, с языками и инструментами Microsoft, я хотел бы сделать "xyz", а затем понять, что в этом мире вы, по замыслу, уводите от "xyz" к предпочтительным / поддерживаемым средствам достижения ваших целей..
В качестве конкретного примера рассмотрим vscode. Люди спрашивают о панели инструментов / настройке. Vscode не ориентирован на панель инструментов. Это сделано намеренно. По замыслу разработчиков, используется палитра команд Ctrl+Shift+P. Экономит время, поскольку вам не нужно постоянно настраивать панель инструментов, и обеспечивает быстрый доступ ко всем командам, а не только к подмножеству команд на панели инструментов.