96

I am creating a pdf of markdown text file using doxygen (1.8.6). Now I want to get page break at specific stage in markdown file, I used this link.

In the given link they have mentioned to use '>' for line break. But they haven't mentioned about page break. Yes I can use '>' for page break as well but I have to write this symbol 5 or more times on markdown text file and that makes markdown file in weird look. Is there any other ways to get page breaks in markdown files?

Jens
  • 61,963
  • 14
  • 104
  • 160
user2760375
  • 1,758
  • 1
  • 19
  • 28
  • 1
    Did you have a go at code like: My Main Page {#mainpage} ============ This is the text on the first page \latexonly \newpage \endlatexonly This is the text on the second page – albert Mar 24 '14 at 17:32
  • @albert I didn't find any mainpage keyword in latex folder – user2760375 Mar 25 '14 at 03:56
  • 1
    The example I gave generates a mainpage consisting of 2 pages. The important part for you would be \latexonly ....\endlatexonly. When you place my example in a file (e.g. aa.md) you can see the 2 pages when you generated the latex output. – albert Mar 25 '14 at 17:31
  • @albert yeah now I got it earlier I didn't use the latexonly command in text file .Now I got it thanks – user2760375 Mar 26 '14 at 03:57

7 Answers7

230

Since Markdown accepts plain HTML and CSS, simply add this line wherever you want to force page break.

<div style="page-break-after: always;"></div>

If your Markdown editor have trouble exporting PDF correctly, first try to export as HTML, then open with your browser and print as PDF.

tomodian
  • 5,208
  • 4
  • 22
  • 27
70

I encountered the same and solve it by inserting

\pagebreak

It's actually a LaTeX command, rather than a Markdown one.

ronencozen
  • 1,633
  • 1
  • 10
  • 16
  • 1
    this works well with pandoc. inserts a page break in the latex pdf without interfering with the html rendering. – joelostblom Apr 20 '15 at 19:36
  • 2
    thx, I was just looking for that :) It works in R's knit tool too. – Tetlanesh Sep 20 '15 at 14:58
  • 3
    Markdown does not natively support Latex, whereas it does natively support HTML and CSS. This is why @tomodian's answer below has more up votes. This solution works in some cases (notably in R Markdown, as Tetlanesh mentions), but not in all. Choose tomodian's answer below... it is more portable. – Mike Williamson Sep 21 '18 at 02:13
  • Since the OP question is about general markdown I feel like this answer won't work/be useful for most folks. @tomodian's answer is the best IMO. – Briford Wylie Dec 31 '18 at 23:32
20

I Know that this is a dead question, but I've found a way that I think can be useful for other than me.

You can use the command \pagebreak inside an invisible element. In this way it works with latex and with html.

<div style="page-break-after: always; visibility: hidden"> 
\pagebreak 
</div>
Noè Murr
  • 364
  • 2
  • 9
  • Why not use doxygen commands like `\htmlonly` with the `
    `etc. and `\latexonly´ with `\pagebrak`,instead of this trick.
    – albert Jun 19 '19 at 17:52
  • 3
    because this trick is portable outside doxygen and you can use it even with pandoc. – Noè Murr Jun 20 '19 at 12:54
10

Blockquotes vs. line breaks

> is not used for line breaks in Markdown. It's used for blockquotes. For example, the following Markdown code

> A man provided with paper, pencil, and rubber, and
> subject to strict discipline, is in effect a universal machine.

becomes

A man provided with paper, pencil, and rubber, and subject to strict discipline, is in effect a universal machine.

(This is a quote from Alan Turing.)

Note how it is rendered with a yellow background by Stack Overflow. If you examine the generated markup you will find <blockquote> tags being used.

Line breaks can usually be inserted by ending a line with two or more spaces (Markdown syntax) or by using raw <br> tags (most Markdown processors allow inline HTML). For example (using to represent a space), this Markdown

123 Fake Street␣␣
Springfield, USA

becomes

123 Fake Street
Springfield, USA

Page breaks

Since the original specification Markdown was designed for HTML output (which doesn't have the concept of pages) there is no support for page breaks.

Doxygen uses LaTeX to generate its PDFs. It doesn't seem to support inline LaTeX¹, but you should be able to modify the intermediate .tex file and then use pdflatex to generate your PDF:

  1. Use Doxygen to generate a .tex file
  2. Edit the .tex file manually add \newpage wherever you want page breaks
  3. Run pdflatex documentation.tex
  4. Examine documentation.pdf

This question may be a useful reference for step 3 above.

¹Doxygen does support inline LaTeX formulas, but I wasn't able to find any mention of arbitrary inline LaTeX commands like \newpage that operate in the text environment.

albert
  • 5,966
  • 3
  • 13
  • 29
Chris
  • 93,263
  • 50
  • 204
  • 189
  • Hey Initially I went through .tex file approach , though I wanted to use pure markdown approach for pdf generation anyway and yes I also tried \newpage but that didn't work . – user2760375 Mar 24 '14 at 12:46
  • 1
    There is no pure Markdown approach since Markdown doesn't include syntax for page breaks. Although there are many Markdown extensions, I am not aware of any that add support for page breaks. You could try something like Pandoc which [supports inline LaTeX](http://johnmacfarlane.net/pandoc/README.html#raw-tex), but I imagine you're using Doxygen for its ability to extract documentation blocks from source code, which Pandoc doesn't do. Maybe I'm wrong about that... – Chris Mar 24 '14 at 12:50
6

Though these answers work - they kind of break one of the goals of Markdown (MD), which is to be very readable as a straight text document as well as being able to be formatted into more rich presentations.

As soon as you start embedding a bunch of HTML/CSS in the text you lose the first aspect of MD. You might as well use Word, Libre, HTML/CSS, etc.

I think MD would do well to add a page break sequence. Something like: <<<<>>>> or similar to the formatting operators. I use that in my MD text. It doesn't cause a page break in the PDF or HTML converters, but it's recognizable in both those and the plain-text forms.

Ed S
  • 63
  • 1
  • 4
3

A last resort workaround is to manually edit the HTML output to render to PDF as you want.

iconoclast
  • 17,897
  • 10
  • 91
  • 122
Tomas Romero
  • 7,746
  • 10
  • 45
  • 68
0

In my Markdown document, page-break-after sometimes left a heading or two still on the same page. In those cases page-break-before worked to properly put everything after the <div> on the next page:

<div style="page-break-before:always"></div>

Daniel T
  • 61
  • 2
  • 6