在Pandoc Markdown中保留换行符 - > LaTeX转换

时间:2014-09-26 19:04:48

标签: pandoc

我想将以下*.md转换为适当的LaTeX *.tex

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

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

Pandoc的预期行为/产生的LaTeX

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

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

Pandoc中观察到的行为/产生的LaTeX

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

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

为什么关心?  1.我正在将一个更大的git repo从markdown过渡到LaTeX,我想要一个干净的差异和历史。  2.我实际上喜欢我的LaTeX,每行一句,即使它与排版无关。

我怎样才能让潘多克做到这一点?

Ps。:我知道选项hard_line_breaks,但这只会在两个第一行之间添加\\,并且实际上不会保留我的换行符。

3 个答案:

答案 0 :(得分:7)

更新

自pandoc 1.16起,这是可能的:

pandoc --wrap=preserve

旧答案

由于Pandoc将Markdown转换为类似AST的内部表示,因此您的非语义换行符将丢失。因此,如果没有一些自定义脚本(例如使用--no-wrap,然后通过在有点后跟空格的地方插入换行符来处理输出),则无法实现所需的内容。

但是,您可以使用--columns NUMBER选项指定每行的字符数。因此,每行不会有一个句子,而是每行有NUMBER个字符。

答案 1 :(得分:2)

我找到了解决此问题的另一种方法 - 即更改原始*.md(在版本控制下),但只是读取它们并拥有它们& #34; pandoced"在构建PDF时。

以下是:

项目根目录中的一些markdown.md

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

项目根目录中的一些latexify.tex

\documentclass{article}
\begin{document}

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

\end{document}

如果你在乳胶项目中有一些降价组件,那么就可以使用,例如, github READMEs或某事。

不需要特殊包,但需要启用shell-escape进行编译。

答案 2 :(得分:2)

更简单的解决方案是在" ...之后添加两个空格。"。这将添加手动换行符(Pandoc手册中提到了该方法)。