@ mb21 предлагает использовать #
для заголовков глав, т.е. сдвигать все на один уровень. При этом pandoc --top-level-division=chapter --toc
действительно работает правильно, но тогда те же файлы не работают так хорошо с бэкэндом HTML: если у меня нет заголовка %
, он жалуется
[WARNING] This document format requires a nonempty <title> element.
Please specify either 'title' or 'pagetitle' in the metadata,
e.g. by using --metadata pagetitle="..." on the command line.
Falling back to 'a'
Так что, похоже, у нас есть загадка, где вывод HTML правильный или PDF, но не оба одновременно.
Решение состоит в том, чтобы хранить файлы с %
для ( глава) название и #
для верхних разделов et c. (т.е. HTML -совместимый формат), а затем преобразовать их в PDF-совместимый формат на лету. Правило Makefile, которое я написал в итоге:
RetroClash.pdf: $(MARKDOWNS)
($(foreach MARKDOWN, $^, sed -e '$$a\\' -e 's/^#/##/' -e 's/^% /# /' $(MARKDOWN);)) | \
pandoc --top-level-division=chapter --toc --toc-depth=2 -o $@
Первая строка проходит через каждый входной файл .md
и преобразует его так:
Затем конкатенация всех преобразованных файлов Markdown передается в Pando c как один вход.