Kapitel dazu bringen, auf einer neuen Seite in einer von Pandoc generierten PDF zu beginnen

9752
evilsoup
%Title %Author  #Header 1  Lots of words.  #Header 2  More words.  ##Level 2 header 

Der obige Text kann in eine EPUB-Datei für E-Reader pandoc -o output.epub input.mkdumgewandelt und mit in PDF konvertiert werden pandoc -o output.pdf input.mkd. Letzteres erfordert die Installation einer Latex-Engine, die für die Beantwortung der Frage relevant sein kann.

Mit dem EPUB wird jeder Kopf der Ebene 1 automatisch am Anfang einer neuen Seite gesetzt (kleinere Kopfzeilen nicht). Beim PDF ist dies nicht der Fall - und ich würde nicht erwarten, dass dies standardmäßig der Fall ist, da dies den Hauptzielen des Markdown widerspricht. Ich habe jedoch Probleme, eine Pandoc-Option zu finden, um dieses Verhalten zu aktivieren.

Kennt jemand eine Möglichkeit, dieses Verhalten mit Pandoc zu aktivieren? Das Bearbeiten einer Konfigurationsdatei wäre eine akzeptable Lösung, aber wenn die Syntax auf Latex basiert, würde ich mich über eine Erklärung freuen (über die Bedeutung der in der Konfigurationsdatei enthaltenen Informationen, nicht über eine umfassende Erklärung von Latex!).

Die --chaptersOption von Pandoc scheint zu tun, was ich will ... aber es

  • Die Kapitel erscheinen nur auf ungeraden Seiten und fügen nach Bedarf leere Seiten ein (interessant, aber nicht das, was ich will - ich versuche, das auf A4-Papier auszudrucken, und es wird nicht so gestaltet, dass es wie ein Buch aussieht.) Ästhetisches Positives wird hier durch Papierverschwendung ausgeglichen)
  • Fügt Chapter xvor dem eigentlichen Header ein, was zu einigen lächerlichen Sachen führt:

Kapitel 1

Prolog

Wenn die --chaptersOption gezähmt werden kann, wäre dies eine geeignete Antwort.

17

3 Antworten auf die Frage

22
John MacFarlane

Siehe https://tex.stackexchange.com/questions/9497/start-new-page-with-each-section .

Damit dies mit Pandoc funktioniert, müssen Sie Folgendes in die Präambel des LaTeX-Dokuments einfügen, das Pandoc auf dem Weg zu PDF generiert:

\usepackage \newcommand{\sectionbreak}{\clearpage} 

Dafür gibt es mehrere Möglichkeiten. Zum einen erstellen Sie eine benutzerdefinierte LaTeX-Vorlage mit diesen Zeilen in der Präambel. Sie können dann die Option verwenden --template mytemplate.latex, um pandoc die Verwendung dieser Vorlage mitzuteilen. Um die Standard-LaTeX-Vorlage zu erhalten, die Sie ändern können, tun Sie pandoc -D latex > mytemplate.latex.

Eine andere Möglichkeit ist, eine kleine Datei titlesec.texmit nur diesen beiden Zeilen zu erstellen . Dann rufen Sie pandoc mit der Option --include-in-header titlesec.texauf, es in die Kopfzeile aufzunehmen.

pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd 
Danke, das ist großartig. Dies hat den Nachteil, dass die Links innerhalb der PDF-Datei abgebrochen werden und alle Lesezeichen (nicht sicher, ob dies das richtige Wort ist) auf Seite 1 gesetzt werden. Da ich dies jedoch hauptsächlich für das Drucken verwende, ist das keine große Sache. Das einzige, was es nicht tut, ist, das Inhaltsverzeichnis auf der gleichen Seite wie den Titel zu platzieren, aber das ist überhaupt nicht wichtig. evilsoup vor 11 Jahren 0
Übrigens, wenn Sie der gleiche John MacFarlane sind, der pandoc gemacht hat, möchte ich diese Gelegenheit nutzen, um Ihnen zu danken - seit ich das entdeckt habe, ist Ihr Programm ein wesentlicher Bestandteil meines Schreibworkflows geworden. Gibt es auch Ressourcen, die Sie für das Erlernen von LaTeX empfehlen würden? evilsoup vor 11 Jahren 2
Bitte. Ich habe mit Lamport's Buch LaTeX: Ein Dokumentenvorbereitungssystem begonnen, was gut ist. John MacFarlane vor 11 Jahren 4
Titelsec scheint mit der aktuellen Pandoc-Latexvorlage nicht kompatibel zu sein, die vorgeschlagene Antwort erzeugt einen Latexfehler. Sie können sectsty verwenden: `\ usepackage \ sectionfont {\ clearpage}`. galgalesh vor 6 Jahren 1
9
evilsoup

Was ich am Ende tat, war folgendes:

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

Dies führt dazu, dass die LaTeX-Dokumentenklasse 'report' verwendet wird (standardmäßig verwendet --chapterspandoc scheinbar die Klasse 'book' oder 'memoir'), die für Bücher vorgesehen sind, Kapitel, die nur auf ungeraden Seiten beginnen usw.), wodurch die Kopfzeilen der Ebene 1 ganz oben auf den Seiten platziert werden, jedoch nicht nur auf den ungeraden Seiten.

Dies fügt immer noch Kapitel X vor jedem Kapitel ein, was immer noch ärgerlich ist. Ich möchte auch gerne, dass das Inhaltsverzeichnis auf der gleichen Seite wie der Titel beginnt (dies geschieht mit der Dokumentenklasse "Artikel", aber die Kapitel werden nicht an den Anfang einer neuen Seite verschoben - sie fangen einfach überall an). Ich denke jedoch, dass das Erlernen dieser Informationen mehr LaTeX-Kenntnisse erfordert als ich: Ich werde dies nicht als akzeptierte Antwort bezeichnen, da die ideale Antwort darauf erklären würde, wie man diese beiden Probleme umgehen kann.

Zwei Jahre später. Immer noch nützlich. Vielen Dank. TheMightyLlama vor 9 Jahren 0
1
Eugéne

Auch mehr als zwei Jahre später, und ich traf mich auch weiterhin mit diesem Thema. also für alle anderen, die in diese Ausgabe geraten, die dies finden ...

Dank der Antworten von John und dem anderen enthaltenen Link verwende ich Folgendes in einer Datei mit der pandoc -HOption und es scheint gut zu funktionieren:

% 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 \usepackage  \newcommand{\sectionbreak}{\clearpage} \titleformat{\chapter}[display]{\normalfont\bfseries}{}{\Large} \pagestyle \fancyhf{} \fancyhead[RE]{\leftmark} \fancyhead[LO]{\rightmark} \fancyhead[LE,RO]{\thepage} \renewcommand\headrulewidth \renewcommand\chaptermark[1]{\markboth{#1}{}}  \renewcommand\sectionmark[1]{\markright{\thesection.\ #1}} 

Mit dieser --chaptersOption habe ich die Option verwendet, pandocund es werden auf neuen Seiten PDF-Kapitel ohne Chapter XX:Seitenüberschriften generiert . Die Verwendung -V documentclass=reporterzeugte auch das gewünschte Ergebnis, ohne das von der bookDokumentenklasse erzeugte Phänomen "Seitenspringen und neues Kapitel auf ungerader Seite" .