Obtendo capítulos para iniciar em uma nova página em um PDF gerado por pandoc

17
%Title
%Author

#Header 1

Lots of words.

#Header 2

More words.

##Level 2 header

O texto acima pode ser transformado em um arquivo EPUB para e-readers com pandoc -o output.epub input.mkd e pode ser convertido em PDF com pandoc -o output.pdf input.mkd . O último requer a instalação de um mecanismo de látex, o que pode ser relevante para responder a pergunta.

Com o EPUB, cada cabeçalho de nível 1 é automaticamente definido no topo de uma nova página (cabeçalhos menores não são). Com o PDF, esse não é o caso - e eu não esperaria que fosse por padrão, já que isso seria contrário aos principais objetivos do markdown. No entanto, estou com dificuldades para encontrar uma opção pandoc para ativar esse comportamento.

Alguém sabe de uma maneira de ativar esse comportamento com o pandoc? Editar um arquivo de configuração seria uma solução aceitável, mas se a sintaxe for baseada em látex, eu apreciaria uma explicação (do significado do que está no arquivo de configuração, não uma explicação abrangente do latex!).

A opção --chapters do pandoc parece que deveria fazer o que eu quero ... mas

  • Os capítulos só aparecem em páginas ímpares, inserindo páginas em branco conforme necessário (interessante, mas não o que eu quero - estou procurando imprimir isso em papel A4, e não será colocado em livro). estilo, então qualquer estética positiva aqui é compensada por um desperdício de papel)
  • Insere Chapter x antes do cabeçalho real, o que leva a coisas ridículas como:

Chapter 1

Prologue

Se for possível domar a opção --chapters , essa seria uma resposta adequada.

    
por evilsoup 30.05.2013 / 01:45

3 respostas

21

Veja link .

Para fazer isso funcionar com o pandoc, você precisará inserir o seguinte no preâmbulo do documento LaTeX que o pandoc gera no caminho para o PDF:

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

Existem várias maneiras de fazer isso. Uma delas é criar um modelo personalizado do LaTeX com estas linhas no preâmbulo. Você pode então usar a opção --template mytemplate.latex para dizer ao pandoc para usar este modelo. Para obter o modelo padrão do LaTeX, que você pode modificar, faça pandoc -D latex > mytemplate.latex .

Outra opção é criar um arquivo pequeno titlesec.tex com apenas essas duas linhas. Em seguida, chame pandoc com a opção --include-in-header titlesec.tex para incluí-lo no cabeçalho, assim:

pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd
    
por 03.06.2013 / 20:13
9

O que acabei fazendo foi isso:

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

Isso faz com que a classe de documento LaTeX 'report' seja usada (por padrão, com --chapters , pandoc parece usar a classe 'book' ou 'memoir', que são projetadas para livros - margens de tamanhos diferentes lado para facilitar a encadernação de livros, capítulos que só começam em páginas ímpares, etc.), o que coloca cabeçalhos de nível 1 no topo das páginas, mas não os coloca apenas no topo da numeração ímpar páginas.

Isso ainda insere o 'Capítulo X' antes de cada capítulo, o que ainda é irritante. Eu também gostaria de ter o Índice iniciado na mesma página do título (isso acontece com a classe de documento 'artigo', mas os capítulos não são desviados para o início de novas páginas - eles apenas começam onde quer que estejam). No entanto, eu acho que obtê-los exigiria mais conhecimento do LaTeX do que eu: não vou marcar isso como a resposta aceita, já que a resposta ideal para isso explicaria como contornar esses problemas. duas questões.

    
por 02.06.2013 / 17:40
1

Também mais de dois anos depois, e continuei correndo para essa questão também; Então, para qualquer outra pessoa que se depara com essa questão, que encontra isso ...

Graças às respostas de John e do outro link incluído, eu uso o seguinte em um arquivo com o pandoc -H opção e parece funcionar bem:

% 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}}

Com isso, usei a opção --chapters para pandoc e ela gera capítulos PDF em novas páginas sem cabeçalhos de Chapter XX: . O uso de -V documentclass=report também produziu o resultado desejado, sem o fenômeno de page-skipping-and-new-chapter-on-odd-page-number produzido pela classe de documento book .

    
por 26.07.2015 / 15:52