Freemarker + LaTeX 中的换行符被忽略

Line breaks are ignored in Freemarker + LaTeX

我有一个这样的字符串:line1\nline2\n\nline3

我想以 PDF 格式显示此字符串。我使用 Java、Freemarker 和 LaTeX。

我有这样的 Freemarker 模板:${root.text},其中 root.text 是我的字符串。

在 PDF 中它看起来像这样:

line1 line2
line3

我想看的:

line1 
line2

line3

我怎样才能收到这个?

我尝试用 \newline 替换 \n,但这不起作用:

line1 ewlineline2
line3

这很可能是 LaTeX/TeX 工作原理的概念性问题。单个“块”中的文本被视为段落。 TeX 自己决定合适的换行符。要分隔段落,您可以使用多个换行符(即之间的空行)。

不管有多少换行符,都是“新段落”的意思。

如果编译字符串

line1

line2




line3

只有三个段落(可能是缩进的,除非你改变了)。

为了获得额外的垂直 space,您可以尝试以下输入:

line1

line2

\vspace{\baselineskip}

line3

有时你想要的是一个实际的换行指令,它是一个双反斜杠(因此,如果在 Java 字符串表示中转义则为四倍):

line1\
line2\
\
line3

不过,我想您可能想努力学习 LaTeX(也许还有排版)。

我决定用 split:

为 LaTeX 创建单独的段落
<#assign lines = root.text?split("\n") />
<#list lines as line>
   ${line} <#if line?has_next>\</#if>
</#list>

这符合我的预期。


此外,转义规则可以添加到 CommonTemplateMarkupOutputModel#output

例如\n可以替换为\\