Получение глав для запуска на новой странице в pandoc-сгенерированном PDF-файле

%Title
%Author

#Header 1

Lots of words.

#Header 2

More words.

##Level 2 header

Вышеприведенный текст может быть превращен в файл EPUB для электронных книг с кодом pandoc -o output.epub input.mkd, и его можно преобразовать в PDF с помощью ---- +: = 2 =: + ----. Последнее требует установки латексного двигателя, который может иметь отношение к ответу на вопрос.

В EPUB каждый заголовок уровня 1 автоматически устанавливается в верхней части новой страницы (меньших заголовков нет). В PDF это не так - и я бы не ожидал, что это будет по умолчанию, так как это будет противоречить основным целям уценки. Однако мне не удается найти параметр pandoc, чтобы включить это поведение.

Кто-нибудь знает, как включить это поведение с pandoc? Редактирование конфигурационного файла было бы приемлемым решением, но если синтаксис основан на латексе, я был бы признателен за его объяснение (смысл того, что находится в файле конфигурации, а не полное объяснение латекса!).

Параметр pandoc -o output.pdf input.mkd pandoc кажется, что он должен делать то, что я хочу ... но он

  • Делает главы только на нечетных страницах, вставляя пустые страницы по мере необходимости (интересно, но не то, что я хочу - я хочу распечатать это на бумаге формата А4, и это не будет выложено из книги, стиль, поэтому любой эстетический позитив здесь компенсируется пустой бумагой).
  • Вставляет --chapters перед фактическим заголовком, что приводит к некоторым смешным вещам вроде:
  

Глава 1

     

Пролог

Если возможно приручить параметр Chapter x, это будет подходящий ответ.

16 голосов | спросил evilsoup 30 Mayam13 2013, 03:45:33

2 ответа


21

См. https://tex.stackexchange.com/questions/9497/запуск нового-страницы-с-каждым сечением .

Чтобы сделать эту работу с 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
ответил John MacFarlane 3 J0000006Europe/Moscow 2013, 22:13:15
8

То, что я закончил, было следующим:

pandoc --toc -V documentclass=report -o output.pdf inputs*.mkd

Это приводит к использованию класса документа LaTeX 'report' (по умолчанию, --chapters, pandoc, похоже, использует книгу «или« мемуары », которые предназначены для книг - по разным размерам по одной стороне, чтобы облегчить привязку к книге, главы, начинающиеся только с нечетных страниц и т. д.), которая помещает заголовки уровня 1 в начало страницы, но не делает 't only помещает их в начало нечетных страниц.

Это все еще вставляет «Глава X» перед каждой главой, которая все еще раздражает. Мне также очень хотелось бы, чтобы оглавление начиналось на той же странице, что и заголовок (это происходит с классом документа «статья», но затем главы не обходятся в начале новых страниц - они только начинаются с того места). Тем не менее, я думаю , что получение этих данных потребует большего знания LaTeX, чем я: я не буду отмечать это как принятый ответ, так как идеальный ответ для этого объясняет, как обойти эти два вопроса.

ответил evilsoup 2 J0000006Europe/Moscow 2013, 19:40:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132