我怎样才能获得 utf8 字符

我怎样才能获得 utf8 字符

我想对部分进行交叉引用以使其成为符号,但使用给出的描述后,我收到错误报告,称使用的键盘字符在输入编码“utf8”中未定义。有什么办法可以解决?

答案1

如果您尝试使用该包在 LaTeX(下面带有标准 TeX 引擎)中排版 utf8 编码的测试,inputenc则会发生以下情况:

  • LaTeX 将通过读取正确数量的 8 位字符来解析 utf8 字符,该数量可能是一个或多个,具体取决于文档中的字符。
  • 这将为 LaTeX 提供一个具有特定 Unicode 编号的 Unicode 字符(经过一些计算),例如00A1
  • 现在 LaTeX 将尝试排版此字符,但要做到这一点,需要有一个字体(已加载)实际上包含代表 unicode 字符的字形和...
  • LaTeX 需要知道这个事实。
  • LaTeX 通过大量以下形式的声明来了解这一点:\DeclareUnicodeCharacter{00A1}{\textexclamdown}
  • 这会将 Unicode 数字转换为 LaTeX 内部字符表示 (LICR)。
  • 但如果没有字形可用于打印此字符,这将没有什么帮助。因此,该inputenc包仅设置已加载包含这些字符的字体的 unicode 字符。
  • 例如,如果你T1通过 加载编码字体,\usepackage[T1]{fontenc}那么 LaTeX 会在内部加载文件中定义的所有声明t1enc.dfu。(每个已建立的 LaTeX 字体编码都有一个对应的.dfu文件。)
  • 但是 unicode 涵盖了大量的字符,所以如果你碰巧在文档中放入了一个不属于 LaTeX 使用的任何字体编码的字符,那么你最终会收到错误消息,告诉你这个 unicode 字符没有设置。

那么针对特定的文档可以做什么来解决此问题呢?

  • 第一步是确定 LaTeX 不认识的字符的 Unicode 编号(这应该出现在错误消息中)
  • 第二步稍微复杂一些,就是确定是否有任何 TeX 字体实际包含此字符以及此字体的编码是什么。这里没有好的建议,但有一些文档描述了标准的 LaTeX 字体编码。
  • 或者,可以尝试至少向文档添加T1和编码,因为这可能会解决问题(如果它是一种相当常见的“西方”字符)。TS1
  • 还可能出现您可以“伪造”字符的情况,比如说,如果您有某种连字符(在unicode中有几种不同的连字符),而您的编辑器添加了一个LaTeX无法识别的连字符,您可以添加一个\DeclareUnicodeCharacter声明,其中第二个参数包含一个确实存在的替换字符。

否则,我担心唯一的答案是使用不同的字符或使用完全支持 Unicode 并可以本地访问具有大型字符集的 Unicode 字体的基于 TeX 的引擎。

在文档源代码中可以找到关于此内容的更详细的文档:utf8ienc.pdf它位于 LaTeX 分发中,也可以从.dtx文件生成。

答案2

我遇到了同样的问题,当时一个朋友想排版一本关于拉丁诗歌的书,并想直接使用带长度标记的元音,如ō和ŏ(隆加短肌)。

我发现的诀窍已经被包裹起来了,newunicodechar

\usepackage{newunicodechar}
\newunicodechar{ō}{\={o}}
\newunicodechar{ŏ}{\u{o}}

和以下操作完全相同

\DeclareUnicodeCharacter{014D}{\={o}}
\DeclareUnicodeCharacter{014F}{\u{o}}

但免除了通过 Unicode 表进行搜索的负担。

当然,必须确保替换文本中的内容确实可以由我们正在加载的字体生成,这可能是“章节标记”的情况。

也可以看看宏以字符作为参数,使其处于活动状态,然后 \def 它。

使用这个包还有另一个好处;假设你想切换到 XeLaTeX 或 LuaLaTeX 来处理文档;然后像

相关内容