【问题标题】:Preserve Line Breaks in Pandoc Markdown -> LaTeX Conversion在 Pandoc Markdown -> LaTeX 转换中保留换行符
【发布时间】:2014-09-26 19:04:48
【问题描述】:

我想将以下*.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,我想要一个干净的 diff 和历史记录。 2. 我其实很喜欢我的 LaTeX,每行一个句子,尽管这对排版没有影响。

我怎样才能让 Pandoc 做到这一点?

Ps.:我知道hard_line_breaks 选项,但这只会在前两行之间添加\\,实际上并没有保留我的换行符。

【问题讨论】:

    标签: pandoc


    【解决方案1】:

    更新

    从 pandoc 1.16 开始,这是可能的:

    pandoc --wrap=preserve
    

    旧答案

    由于 Pandoc 将 Markdown 转换为类似 AST 的内部表示,因此您的非语义换行符会丢失。因此,如果没有一些自定义脚本(例如使用--no-wrap,然后通过在点后跟空格处插入换行符来处理输出),您正在寻找的内容是不可能的。

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

    【讨论】:

    • 非常感谢——我认为这对于 Pandoc 应该做的事情是有道理的。我最终不得不手动重新格式化它;上次我在项目中更改标记:)
    • 出于某种原因,这对我不起作用。有什么想法吗?
    • 谢谢,这正是我正在寻找的!
    【解决方案2】:

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

    【讨论】:

    • 谢谢@René 我理解这种可能性。这里的重点是想办法将*.md 转换为*.tex*,同时将差异污染降至最低。我想添加两个空格可能会添加这种虚假的差异。无论如何,我理解@mb21 之前写的内容——tex 中的换行符是非语义的,所以它们在 Pandoc 转换时必须丢失。我只是用错了
    • 这应该被标记为正确答案,因为它提供了一个解决方案,而且它是开销最小的一个。
    【解决方案3】:

    我想出了另一种解决这个问题的方法——改变原来的*.mds(在版本控制下),而是简单地读入它们并让它们“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 2016-06-11
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      相关资源
      最近更新 更多