Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandoc Markdown: ignore text in PDF (but include in HTML) Updated?

This question of how to include text that will appear in html but not pdf has been answered twice (LaTeX multicolumn block in Pandoc markdown and Pandoc markdown: Omit text in PDF version but include in HTML version) and I applied the solution recommended:

Here is the source:

My text.

<div>
This will be ignored in non-HTML output
</div>

Other text

The command I used was: pandoc essai.md --from=markdown-markdown_in_html_blocks -o essai.pdf

Yet the text between the <div>tags is still displayed in the pdf file.

Am I missing something obvious? Or has the behaviour of pandoc changed since 2013/2014 (my version is 1.19 of 2016)? If yes, what would the solution be?

like image 265
fralau Avatar asked Jan 03 '18 19:01

fralau


2 Answers

I know you asked for a solution that works with pandoc 1.19, but for completeness, here is one which is a bit cleaner but only works with pandoc 2.0 and later:

There is a new raw_attribute extension, which allows to do the following:

`text in html`{=html}
`text in pdf`{=latex}

It is enabled in pandoc markdown per default.

like image 183
tarleb Avatar answered Oct 08 '22 11:10

tarleb


I found an answer: add the -native_divs extension.

This way:

$ pandoc essai.md --from=markdown-markdown_in_html_blocks-native_divs -t latex
My text.

other text

My understanding is that pandoc has started interpreting <div> items as "native" elements, i.e. represented in the AST, which causes the interesting side effect that a <p> is added in html. This behaviour needs to be deactivated in order to obtain the desired effect.

If someone has a better solution or a better explanation, please let me know.

like image 4
fralau Avatar answered Oct 08 '22 12:10

fralau