inputenc 和 UTF-8 不间断空格错误

inputenc 和 UTF-8 不间断空格错误

这是如何在 Org-mode 中创建不间断空格(连接符),以便正确导出到 LaTeX。该问题的一个答案是使用 UTF-8 不间断空格的解决方案,但即使文档编译完成,这些空格也会导致包错误。

我将其归结为以下内容。UTF-8 不间断空格可能无法从示例中复制。因此,可能必须手动输入。在 Emacs 中,可以使用 来输入C-x 8 Space

\documentclass{article}
\usepackage[utf8]{inputenc}

\begin{document}

e.g.~ example% non-breaking \240 space between ~ and example

\end{document}

此示例给出以下错误:

! 包 inputenc 错误:Unicode 字符 \u8:未设置为用于 LaTeX。

请注意,该错误消息中的冒号后有一个 UTF-8 不间断空格。

如何修复这个错误?

我使用 TeX Live 2011 更新版(今天更新)。

答案1

您可以使用

\usepackage{newunicodechar}
\newunicodechar{ }{~}

(第一个参数中有一个不间断空格)。这样做的好处是,它无需任何修改就可以与 XeLaTeX 和 LuaLaTeX 一起使用,其中不间断空格将提供一个不会随着同一行中的其他空格而拉伸或收缩的空格。

也可以看看将 Unicode 不可拆分空格替换为普通空格

答案2

写在序言中

\DeclareUnicodeCharacter{00A0}{~}

解释:

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

不间断空格是 U+00A0,因此第一个参数是00A0

在 LaTeX 中,不间断空格由波浪号生成,因此第二个参数是一个波浪号。

如果你将命令更改为

\DeclareUnicodeCharacter{00A0}{\emph{-- non-breaking space --}}

现在,在不间断空格的位置插入文本“− 非间断空格 −”。

相关内容