![什么被视为非标准输入编码的标记?](https://linux22.com/image/252610/%E4%BB%80%E4%B9%88%E8%A2%AB%E8%A7%86%E4%B8%BA%E9%9D%9E%E6%A0%87%E5%87%86%E8%BE%93%E5%85%A5%E7%BC%96%E7%A0%81%E7%9A%84%E6%A0%87%E8%AE%B0%EF%BC%9F.png)
当我使用 (La)TeX 的输入编码,允许我直接输入诸如 é 和 ä 之类的字符(例如通过声明\usepackage[utf8]{inputenc}
)时,如何定义标记?具体来说,
- 是否可以写类似的东西
\^ä
;对于这种情况,我是否表示这个字符对 (La)TeX 有影响吗?- 作为 U+00E4 或
- 使用组合序列 U+0061 U+0308 ,
- 或者我必须使用
\^{ä}
?
(这个问题的灵感来自用户 @doncherry 对关于重音字符的这个问题。
答案1
标准 (pdf)LaTeX 基于pdftex
8 位导向。
如果您使用 8 位编码ansinew
,例如 ,ä
则编码为11100100
。这意味着它的长度为 8 位,因此对于 来说,pdftex
它是一个输入“实体”。在这种情况下\^ä
可以工作(如果您使用inputenc
,ä
则是一个命令,并且发生的情况取决于设置 的实际定义的字体编码ä
)。
如果使用utf8
,ä
通常会被编码为1100001110100100
。因此它至少有 2x8 位长,并且pdftex
可以看到两个输入“实体”。由于inputenc
使第一位有效,因此ä
实际上是一个相当复杂的命令,像这样的组合\^ä
通常会中断。
引擎 XeTeX 和 LuaTeX 是面向 Unicode 的。
对于他们来说,UTF-8 编码U+00E4
ä
是单个实体。有了这些引擎,不再存在“普通” ASCII 字符和“特殊”非 ASCII 字符之间的区别:ä
将像 一样处理a
,并且\^ä
可以正常工作。如果ä
被编码为,U+0061 U+0308
那么对于这些引擎来说,也有两个输入实体。像这样的命令\^ä
通常不会在这种情况下中断,但输出可能与 不同\^{ä}
。同样,发生的情况取决于字体和 的实际定义(通常由这些引擎\^
设置)。xunicode