缺少数字,视为零。尝试定义特殊字符时

缺少数字,视为零。尝试定义特殊字符时

查看了多个线程,我似乎仍然无法解决我的错误。因此,我希望你们中的一些人能帮助我?

当尝试使用以下代码定义三个斯堪的纳维亚字母 å æ ø Å Æ Ø 时:

\catcode`æ=\active\catcode`ø=\active\catcode`å=\active
\catcode`Æ=\active\catcode`Ø=\active\catcode`Å=\active
\defæ{\ae}\defø{\o}\defå{\aa}
\defÆ{\AE}\defØ{\O}\defÅ{\AA}

当我排版文档时出现以下错误消息:

./main.tex:63: Missing number, treated as zero.
<to be read again> 

我正在使用“Classicthesis”,输入定义为 latin9

希望你们中有人能帮助我!

谨致问候,亨利克

答案1

我可以重现该问题,但前提是输入文件是 UTF-8。如果我将其保存为 Latin-9,则定义会毫无问题地执行。

为什么文件编码为 UTF-8 时会出现错误?因为在这种情况下,您看到的æ实际上是字符,就 TeX 而言(它不理解多字节编码)。准确地说,æ被视为字节对<C3><A6>,因此 TeX 真正看到的是

\catcode`<C3><A6>=\active

(请注意,<xy>仅用于表示单个字符),这是一个错误的分配,确实会触发您看到的错误消息。这不能如果文件采用单字节编码(例如 Latin-9)进行编码,就会发生这种情况。

无论如何你不应该做类似的事情。检查文件编码,仔细查看文本编辑程序告诉你的内容,然后添加到文档序言中

\usepackage[latin9]{inputenc}

如果编码确实是 Latin-9,或者

\usepackage[utf8]{inputenc}

如果是 UTF-8 的话。这两个声明(当选项与文件的编码一致时)都会自动执行您想要手动执行的操作。

我感觉你正在使用从网上或朋友那里得到的模板。不要相信它们,尤其是如果它们包含你一无所知的东西。

相关内容