18
%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? Редактирование файла конфигурации было бы приемлемым решением, но если синтаксис основан на латексе, я был бы признателен за его объяснение (значение того, что находится в файле конфигурации, а не исчерпывающее объяснение латекса!).

Опция --chapters у --chapters похоже, должна делать то, что я хочу ... но это

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

Глава 1

пролог

Если есть возможность приручить опцию --chapters , это будет подходящий ответ.

3 ответа3

22

См. 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
9

То, что я закончил, было этим:

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

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

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

1

Также более двух лет спустя, и я продолжал сталкиваться с этой проблемой; так что для всех, кто сталкивается с этой проблемой, кто находит это ...

Благодаря ответам Джона и другой включенной ссылке, я использую следующее в файле с параметром pandoc -H и, кажется, работает нормально:

% https://superuser.com/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 также дало желаемый результат, без явления «пропуска страниц» и «new-chapter-on-odd-page-number», создаваемого классом book документов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .