Сохранение строк в заголовке с использованием 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.
Ответы
Ответ 1
% Higgelty Pigglety Pop! \
or \
There Must Be More to Life
% Maurice Sendak
Pandoc Markdown позволяет по умолчанию расширение escaped_line_breaks
:
Обратная косая черта, сопровождаемая новой строкой, также является жестким разрывом строки. Примечание: в многострочных ячейках сетки и сетке это единственный способ создать жесткий разрыв строки, так как игнорируются пробелы в ячейках.
Ответ 2
При использовании блоков метаданных YAML также работает следующее:
---
title: |
| First line
| Second line
---
Нашел идею в этой теме.
Ответ 3
Очень общий, но менее простой метод заключается в использовании необработанного HTML для обозначения разрывов строк и преобразования их в правильные разрывы строк с использованием фильтра pandoc. Ниже приведен фильтр Lua, который переводит любую <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
Приведенный выше скрипт должен быть передан в pandoc с помощью --lua-filter
:
$ pandoc -o test.pdf --lua-filter ./linebreaks.lua test.md
Преимущество этого метода заключается в том, что он более универсален и работает в других местах, где можно добавить разрывы строк. Например, разрыв строки в заголовке может быть добавлен с использованием того же синтаксиса: # first line<br>second line
.