使用pandoc保留标题中的换行符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pandoc保留标题中的换行符相关的知识,希望对你有一定的参考价值。

在pandoc风格的Markdown中考虑以下标题栏:

% Higgelty Pigglety Pop!
  or
  There Must Be More to Life
% Maurice Sendak

在这里,换行符是标题的一部分。可以重新格式化标题以便将其插入常规文本流中,例如, “Higgelty Pigglety Pop!或者,必须有更多生命”,但如果没有谈到但是在文档的标题页上使用,保留换行符是至关重要的。根据样式,它可能如下所示:

          Higgelty Pigglety Pop!
                   or
        There Must Be More to Life
             Maurice Sendak

我的问题:如何在pandoc的输出中实现正确的多行标题显示?

便携版本是首选,但我也满足于仅限LaTeX的黑客攻击。

答案
% Higgelty Pigglety Pop! 
  or 
  There Must Be More to Life
% Maurice Sendak

Pandoc Markdown默认启用escaped_line_breaks extension

反斜杠后跟换行也是一个强硬的突破。注意:在多行和网格表单元格中,这是创建硬换行符的唯一方法,因为单元格中的尾随空格将被忽略。

另一答案

使用YAML元数据块时,以下也可以使用:

---
title: |
    | First line
    | Second line
---

this thread找到了这个想法。

另一答案

一个非常通用但不太简单的方法是使用原始html来指示换行符,并使用pandoc filter将它们转换为正确的换行符。下面是一个Lua filter,它将源中的任何<br>(或<br />)翻译成硬线断裂。

--- Transform a raw HTML element which contains only a `<br>`
-- into a format-indepentent line break.
function RawInline (el)
  if el.format:match '^html' and el.text:match '%<br ?/?%>' then
    return pandoc.LineBreak()
  end
end

将文件另存为linebreaks.lua

然后可以将标题写成

% Higgelty Pigglety Pop!<br>or<br>There Must Be More to Life
% Maurice Sendak

必须通过--lua-filter选项将上述脚本传递给pandoc:

$ pandoc -o test.pdf --lua-filter ./linebreaks.lua test.md

这种方法的优点是它更通用,也适用于其他可能想要添加换行符的位置。例如,可以使用相同的语法添加标题中的换行符:# first line<br>second line

以上是关于使用pandoc保留标题中的换行符的主要内容,如果未能解决你的问题,请参考以下文章

.txt 文件中的 textarea 内容,但保留换行符

在方向更改时保留列表片段中的列表

保留 TextArea 中的换行符

动态 Rstudio 代码片段

PHP SimpleXML 不保留 XML 属性中的换行符

如何从 Kindle PC 复制代码并保留格式