在(La)TeX中,非破坏空间称为tie,它们由~
生成。例如,在缩写之后使用关系,以便在它们之后不直接断行,并且使得结束缩写的点不被视为结束语句。后者的使用很重要,因为标准的LaTeX在点之后比在单词之间留出更长的空间。
从组织模式导出到LaTeX时,~
被视为显式字符,而不是平局字符。忽略使用不间断空格不是一种替代方法,因为它会导致错误的间距(参见上例中的第二句)。一种替代方法是强制组织模式将~
视为具有#+BEGIN_LaTeX ~ #+END_LaTeX
的LaTeX,但它是详细的并导出到其他格式中断。最后,如http://comments.gmane.org/gmane.emacs.orgmode/24716中所述,使用UTF-8不间断空格不起作用,因为LaTeX不会将其视为空格。那么,如何在Org-mode中使用正确导出到LaTeX的非中断空格?
这是一个澄清的例子。第一句失败是因为~
被视为显式字符。显然,第二句失败了,因为最后一个点被视为LaTeX的一个句子。第三句出口得当,但是很冗长,并且会导致出口到其他格式。第四行(由 C-x 8 Space 插入的UTF-8非破坏空格分隔)失败,因为LaTeX不将其视为空格:
#+title:Title
e.g.~example
e.g. example
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
e.g. example
将( C-x C-e L )导出到以下LaTeX代码:
e.g.\~{}example
e.g. example
e.g.~example
e.g. example
呈现为:
我在Emacs 23.3.1中运行Org-mode 7.6。
答案 0 :(得分:17)
在http://orgmode.org/manual/Special-symbols.html上我找到了双倍间距问题的解决方案:
单位
e.g.\nbsp{}example
乳胶
e.g.~example
答案 1 :(得分:7)
答案在您链接的gmane线程中暗示。特别是last reply表示使用\nbsp
作为不间断的空间。这本身不起作用,因为你需要\nbsp
之后的空格才能将它识别为命令,而不仅仅是文本的一部分。
但是以下工作(添加到您的尝试列表中:
#+title:Title
* Test
1) e.g.~example
2) e.g. example
3)
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
4) e.g. example
5) e.g.\nbsp example
(non-breaking \240 space between \nbsp and example)
哪些输出到LaTeX:
\item e.g.\~{}example
\item e.g. example
\item e.g.~example
\item e.g. example
\item e.g.~ example %\240 non-breaking between ~ and example
这就是:
我只是重新测试了我的结果,不知怎的,我的非破坏空间第一次没有正确导出,我的结果发生了变化(朝向应该预期的而不是显示的内容)。下面的新结果可以保留历史记录并使评论有意义。
组织#+title:Title
* Test
1) e.g.~example
2) e.g. example
3)
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
4) e.g. example %Space is non-breaking
5) e.g.\nbsp example %Space is non-breaking
胶乳
\item e.g.\~{}example
\item e.g. example
\item e.g.~example
\item e.g. example %Space is non-breaking
\item e.g.~ example %Space is non-breaking
渲染
这对应于规定的双倍间距(以及正确导出的非破坏空间)
答案 2 :(得分:7)
所有其他答案都运作良好,但为了完整起见,我想提及org-entities
。更重要的是,因为您可以利用此机制执行更多通用的导出自定义,以及支持多个后端。
将org-entities
设置为以下内容:
(setq org-entities-user
'(("space" "~" nil " " " " " " " ")))
以下组织来源:
E.g.\space{}a, b, c
导出到LaTeX:
E.g.~a, b, c
并将HTML导出为:
<p>
E.g. a, b, c</p>
答案 3 :(得分:5)
我在文档/模板/骨架的标题中包含以下内容:
\#+LaTeX_HEADER: \DeclareUnicodeCharacter{00A0}{~}
我使用C-x 8 SPC
在文本中插入unicode不间断空格。这应该可以导出到LaTeX或HTML。
宏DeclareUnicodeCharacter
在文件utf8.def
(inputenc
用来定义utf8映射的文件)中定义,以定义Unicode字符的含义。第一个参数是字符的十六进制代码,第二个参数是替换的LaTeX代码。
非中断空格为U+00A0
,因此第一个参数为00A0。在LaTeX中,使用波浪号生成不间断空格,因此第二个参数是单个波形符。