Возможны ли пронумерованные заголовки в Markdown / Rdiscount?

Я пытаюсь создать HTML с заголовками разделов / подразделов, напоминающих следующее:

  1. Моя тема верхнего уровня
    1.1 Моя первая подтема
    1.2 Еще одна подтема
    1.2.1 Под-подтема
  2. Еще одна тема высшего уровня

Существуют ли какие-либо реализации 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. Экономит время, поскольку вам не нужно постоянно настраивать панель инструментов, и обеспечивает быстрый доступ ко всем командам, а не только к подмножеству команд на панели инструментов.

Другие вопросы по тегам