Preserve Line Breaks in Pandoc Markdown -> LaTeX Conversion

别说谁变了你拦得住时间么 提交于 2019-12-21 07:56:23

问题


I want to convert the following *.md converted into proper LaTeX *.tex.

Lorem *ipsum* something.
Does anyone know lorem by heart?

That would *sad* because there's always Google.

Expected Behavior / Resulting LaTeX from Pandoc

Lorem \emph{ipsum} something.
Does anyone know lorem by heart?

That would \emph{sad} because there's always Google.

Observed Behavior / Resulting LaTeX from Pandoc

Lorem \emph{ipsum} something. Does anyone know lorem by heart?

That would \emph{sad} because there's always Google.

Why do I care? 1. I'm transitioning a bigger git repo from markdown to LaTeX, and I want a clean diff and history. 2. I actually like my LaTeX with one sentence-per-line even though it does not matter for the typesetting.

How can I get Pandoc to do this?

Ps.: I am aware of the option hard_line_breaks, but that only adds \\ between the two first lines, and does not actually preserve my line breaks.


回答1:


Update

Since pandoc 1.16, this is possible:

pandoc --wrap=preserve

Old answer

Since Pandoc converts the Markdown to an AST-like internal representation, your non-semantic linebreaks are lost. So what you're looking for is not possible without some custom scripting (like using --no-wrap and then processing the output by inserting a line-break wherever there is a dot followed by a space).

However, you can use the --columns NUMBER options to specify the number of characters on each line. So you won't have a sentence per line, but NUMBER of characters per line.




回答2:


A much simpler solution would be to add two spaces after "...something.". This will add a manual line break (the method is mentioned in the Pandoc Manual).




回答3:


I figured out another way to address this problem – which is to not change the original *.mds (under version control), but to simply read them in and to have them "pandoced" when building the PDF.

Here's how:

Some markdown.md in project root:

Happy one-sentence-per-line **markdown** stuff.
And another line – makes for clear git diffs!

And some latexify.tex in project root:

\documentclass{article}
\begin{document}

\immediate\write18{pandoc markdown.md -t latex -o tmp.tex}
\input{tmp.tex}

\end{document}

Works just dandy if you have some markdown components in a latex project, e.g. github READMEs or sth.

Requires no special package, but compilation with shell-escape enabled.



来源:https://stackoverflow.com/questions/26066621/preserve-line-breaks-in-pandoc-markdown-latex-conversion

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!