Новая строка в заголовке экспортированного HTML-документа в режиме орг.

26

Я использую режим org для документирования вещей и обычно экспортирую их в pdf (через латекс) и html.

Если \\символы находятся в конце строки, при экспорте в pdf и html принудительно вводится символ новой строки.

Но я хотел бы знать, как сделать символ перевода строки между строкой при экспорте в HTML. Было бы полезно иметь это решение, чтобы я также мог иметь многострочные заголовки и в экспорте html.

Пример:

#+TITLE: First Line of Title \\ Second Line of Title

Вышеуказанные данные экспортируются в 2 строки при экспорте в pdf, но \\символы сохраняются в html-экспорте (поскольку они не находятся в конце строки).

Как я могу отформатировать заголовок, чтобы многострочные заголовки экспортировались нормально в обоих форматах?

Каушал Моди
источник

Ответы:

36

Режим Org 8 больше не принимает подобные символы LaTeX. Правильный способ сделать это - вставить фрагменты экспорта в заголовок:

#+TITLE: Foo @@latex:\\@@ Bar

Поэтому я предполагаю, что если вы хотите экспортировать переводы строк как в LaTeX, так и в HTML, код может выглядеть следующим образом:

#+TITLE: Foo @@latex:\\@@ @@html:<br>@@ Bar

Источник: https://lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00466.html

Если такие символы новой строки необходимо добавить в нескольких местах в документе, лучше подойдет замена этой подробной @@latex:\\@@ @@html:<br>@@строки режимом org MACRO.

Определение MACRO, подобное приведенному ниже, может быть помещено в верхней части документа или в общем файле «org config», который включен в ваши документы org:

#+MACRO: NEWLINE @@latex:\\@@ @@html:<br>@@

Затем MACRO можно использовать для форматирования заголовка, как показано ниже:

#+TITLE: Foo {{{NEWLINE}}} Bar

Преимущества использования подхода MACRO:

  • Документ в режиме org легче читать
  • Если возникает необходимость изменить определение {{{NEWLINE}}}для поддержки нового формата экспорта, то это изменение должно быть сделано только в одном месте.

Пример:

#+MACRO: NEWLINE @@latex:\\@@ @@html:<br>@@ @@ascii:|@@

ПРИМЕЧАНИЕ: @@ascii:|@@не будет вставлять новую строку в экспорт ascii; он просто поместит символ канала |везде, где {{{NEWLINE}}}он использовался в org doc.

Наконец, #+SUBTITLEключевое слово также может помочь.

Манкоф
источник
Смежный вопрос: знаете ли вы, как передать новую строку для экспорта ascii? @@ascii:\n@@не работает
Каушал Моди
Не похоже на работу. Я предполагаю, что для реализации этого необходим запрос функции.
Манкофф
1
Вы имеете в виду, что переводы строки в ascii не работают, верно? В противном случае ваше решение работает для экспорта html и pdf. Когда поддерживается перевод строки для ascii, мне просто нужно обновить макрос NEWLINE.
Каушал Моди
3

Я не совсем уверен, что не будет никаких нежелательных побочных эффектов, но может сработать следующее

(push (cons "\\\\\\\\" "<br />") org-html-special-string-regexps)

К счастью, список специальных расширений строк можно расширить в экспортере HTML, потому что его нет в экспортере LaTeX ...

Сигма
источник