В Freemarker + LaTeX разрывы строк игнорируются - PullRequest
0 голосов
/ 03 марта 2020

У меня есть такая строка: line1\nline2\n\nline3

Я хочу показать эту строку в PDF. Я использую Java, Freemarker и LaTeX.

У меня есть такой шаблон Freemarker: ${root.text}, где root.text - моя строка.

В PDF это выглядит так:

line1 line2
line3

Что я хочу увидеть:

line1 
line2

line3

Как я могу получить это?

Я пытался заменить \n на \newline, но это не работает:

line1 ewlineline2
line3

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Скорее всего, это концептуальная проблема с работой LaTeX / TeX. Текст, который находится в одном «блоке», рассматривается как абзац. TeX сам определяет подходящие разрывы строк. Чтобы разделить абзацы, вы используете более одной новой строки (то есть пустые строки между ними). ​​

Неважно, сколько есть новых строк, это означает «новый абзац».

Если вы скомпилируйте строку

line1

line2




line3

, будет всего три абзаца (вероятно, с отступом, если вы не изменили это).

Чтобы получить дополнительное вертикальное пространство, вы можете попробовать ввести следующее:

line1

line2

\vspace{\baselineskip}

line3

Иногда вам нужна текущая инструкция новой строки, которая представляет собой двойную обратную косую черту sh (так, если в строковом представлении Java она является четырехкратной):

line1\\
line2\\
\\
line3

I хотя, возможно, вы захотите научиться LaTeX (и, возможно, набирать текст).

0 голосов
/ 03 марта 2020

Я решил создать отдельные абзацы для LaTeX с split:

<#assign lines = root.text?split("\n") />
<#list lines as line>
   ${line} <#if line?has_next>\\</#if>
</#list>

. Это работает, как я и ожидал.


Кроме того, в eaping правила могут быть добавлены CommonTemplateMarkupOutputModel#output.

Например, \n можно заменить на \\\\.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...