TeX 中非 ASCII 字符的字符数字的奇怪行为

TeX 中非 ASCII 字符的字符数字的奇怪行为

我正在尝试使用纯 TeX,并且我认为,因为我知道它使用 ASCII 读取输入文件(对吗?),如果我要求输入非 ASCII 字符的数字,它肯定会给我一个错误。我尝试了这个:

\number `ا

ا是阿拉伯字母 Aliph。奇怪的是它返回了 216。我尝试了其他阿拉伯字母,屏幕上显示的是相同的数字。我有两个问题:首先,为什么 TeX 没有给我一个错误(就像 pdfLaTeX 那样);其次,为什么所有阿拉伯字符都有相同的字符编号?更奇怪的是希腊字母的行为不同,其中一些字母有相似的数字,但其他字母有唯一的数字。我正在使用 pdfTeX。

刚刚用 XeTeX 测试了同样的东西,输出的数字完全不同,每个数字都不同且唯一。

有人能解释一下发生了什么事吗?

答案1

您的字符在 utf8 中编码为 0xD8 0xA7,纯 tex 会看到第一个字节,并且由于 D8(十六进制)= 216(十进制),您会得到这个数字。

在 pdflatex 中,字节是活动字符(用于处理 utf8 输入)。第二个字节(A7)单独使用时会出现错误,因此当 \number 抓取第一个字节时会出现错误。通过重新定义第二个字节,您可以看到第一个字节也给出了 216:

\documentclass{article}
\begin{document} 

\def^^a7{blub}
\number `ا 
\end{document}

在此处输入图片描述

xetex 将报告字符的 unicode 编号

相关内容