组织模式导出的html文档标题中的新行


26

我使用组织模式来记录内容,通常将其导出为pdf(通过乳胶)和html。

如果\\字符在行的末尾,则在导出到pdf和html时都会强制使用换行符。

但是我想知道在导出到html时如何在行之间强制换行符。拥有此解决方案将很有帮助,这样我也可以在html导出中使用多行标题。

例:

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

上面的内容在pdf导出中导出为2行,但\\字符保留在html导出中(因为它们不在行末)。

如何设置标题格式,以便多行标题在两种格式下都能正常输出?

Answers:


36

组织模式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定义可以放在文档的顶部,也可以放在组织文档中包含的通用“组织配置”文件中:

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

然后可以使用MACRO格式化标题,如下所示:

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

使用MACRO方法的优点是:

  • 组织模式文档更易于阅读
  • 如果需要更改其定义{{{NEWLINE}}}以支持新的导出格式,则只需在一个地方进行更改即可。

例:

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

注意:@@ascii:|@@不会在ascii导出中插入换行符;它将仅将竖线字符放置在组织文档中使用的|任何位置{{{NEWLINE}}}

最后,#+SUBTITLE关键字也可能会有所帮助。


一个相关的问题:您是否知道如何传送ASCII出口换行符?@@ascii:\n@@不起作用。
Kaushal Modi 2014年

似乎不起作用。我猜想需要一个功能请求来实现这一点。
mankoff 2014年

1
您是说ASCII中的换行符不起作用,对吗?否则,您的解决方案适用于html和pdf导出。当支持ascii的换行符时,我只需要更新NEWLINE宏。
Kaushal Modi 2014年

3

我不完全确定不会有任何不良副作用,但是以下方法可能有效

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

Kinda很幸运,特殊字符串扩展列表在HTML导出器中是可扩展的,因为它不在LaTeX导出器中...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.