Emacs 如何在组织模式下创建不间断空格(联系),以便正确导出到LaTeX

Emacs 如何在组织模式下创建不间断空格(联系),以便正确导出到LaTeX,emacs,latex,whitespace,org-mode,Emacs,Latex,Whitespace,Org Mode,在(La)TeX中,不间断空格称为ties,由~构成。例如,在缩略语之后使用连字,这样就不会在缩略语之后直接换行,也就不会将以缩写结尾的点视为结束句。后一种用法很重要,因为标准的乳胶在点后比单词之间留有更长的空间 从组织模式导出到LaTeX时,~被视为显式字符,而不是领带。忽略不间断空格的使用不是一种选择,因为它会导致错误的空格(参见上面示例中的第二句)。另一种方法是强制组织模式将~视为LaTeX with,但它是冗长的,并导出为其他格式。最后,如中所建议的,使用UTF-8非中断空间不起作用,因

在(La)TeX中,不间断空格称为ties,由
~
构成。例如,在缩略语之后使用连字,这样就不会在缩略语之后直接换行,也就不会将以缩写结尾的点视为结束句。后一种用法很重要,因为标准的乳胶在点后比单词之间留有更长的空间

从组织模式导出到LaTeX时,
~
被视为显式字符,而不是领带。忽略不间断空格的使用不是一种选择,因为它会导致错误的空格(参见上面示例中的第二句)。另一种方法是强制组织模式将
~
视为LaTeX with,但它是冗长的,并导出为其他格式。最后,如中所建议的,使用UTF-8非中断空间不起作用,因为LaTeX没有将其视为一个空间。那么,如何在组织模式下使用正确导出到LaTeX的非中断空格呢

下面是一个需要澄清的例子。第一个句子失败,因为
~
被视为显式字符。显然,第二个句子失败了,因为最后一个点被视为LaTeX结束了一个句子。第三句话正确地导出,但内容冗长,无法导出为其他格式。第四行(由C-x 8空格插入的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)导出为以下代码:

例如\~{}示例
e、 g.例子
e、 g.~例如
e、 g.例子
其呈现为:


我正在Emacs 23.3.1中运行组织模式7.6。

答案在您链接的gmane线程中暗示。特别是说要使用
\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的内容如下:

E.g.~a, b, c
\item例如\~{}示例
\项目,例如示例
\项目,例如~示例
\项目,例如示例
\项目,例如~example%\240不在~example和~example之间中断
这表现为:


编辑 我刚刚重新测试了我的结果,不知何故,我的非中断空格第一次没有正确导出,我的结果发生了变化(朝着应该预期的方向,而不是显示的方向)。下面是新的结果,以保留历史并使评论有意义

组织机构 乳胶
\item例如\~{}示例
\项目,例如示例
\项目,例如~示例
\项目,例如,示例%空间不中断
\项目,例如~example%的空间未中断
提供

这对应于规定的双间距(以及正确导出的非中断间距)

上,我找到了双间距问题的解决方案:

组织机构

乳胶


我在文档/模板/框架的标题中包括以下内容:

\#+LaTeX_HEADER: \DeclareUnicodeCharacter{00A0}{~}
我使用
C-x8spc
在文本中插入unicode不间断空格。这应该可以导出到LaTeX或HTML

说明: 宏
DeclareUnicodeCharacter
在文件
utf8.def
中定义(该文件由
inpuntec
用于定义utf8映射)以定义Unicode字符的含义。第一个参数是字符的十六进制代码,第二个参数是替换代码

非中断空间是
U+00A0
,因此第一个参数是00A0。在LaTeX中,非中断空间是用一个瓷砖生成的,因此第二个参数是一个瓷砖

  • 发件人:

所有其他答案都很好,但是为了完整起见,我想提及组织实体。更重要的是,您可以利用此机制进行更多的通用导出自定义,以及支持多个后端

将组织实体设置为类似以下内容:

(setq组织实体用户)
(((“空格”~“零”))
以下组织来源:

E.g.\space{}a, b, c
导出到LaTeX,作为:

E.g.~a, b, c
并将其导出为HTML:

<p>
E.g.&nbsp;a, b, c</p>

例如a、b、c


属于on。@larsmans我不同意。这主要不是关于LaTeX,而是关于组织模式,这是一种Emacs模式。这是一个关于如何使用组织模式的问题,可能涉及如何通过elisp代码正确配置它。当我导出
例如。\nbsp example
我得到了呈现的
例如~example
。我做错什么了吗?我知道了st从您处复制了该代码段。是否需要以特殊方式输入特殊空间?正如我试图提到的(我将进行编辑以使其更清晰)
\nbsp
示例之间的空间是
C-x 8空格
(非中断空格)。遗憾的是,它没有复制到堆栈溢出。我使用了正确的空间,文档进行了编译,输出是正确的,但有一个错误:
导出为PDF…完成,有一些错误:[未定义的控制序列]
。更具体地说:
!Package inpuntec错误:Unicode字符\u8:未设置为与LaTeX一起使用。
不确定为什么会出现这种情况。刚刚在我的上再次测试了它,我的状态是
导出为PDF…完成了
。这可能是LaTeX、Emacs版本的问题(在我的情况下是24个版本)或者Org-Mode。它似乎是LaTeX连接的。我使用今天更新的TeX Live 2011。不知何故,
C-x 8 SPC
可以与HTML和LaTeX导出器一起工作,即使不显式声明宏。我在Windows上使用TexLive 2013,使用的是
latexmk-shell escape-pdf-f
E.g.~a, b, c
<p>
E.g.&nbsp;a, b, c</p>