XeTeX 中出现意外的“未定义控制序列”,但 TeX 中没有出现

XeTeX 中出现意外的“未定义控制序列”,但 TeX 中没有出现

当尝试做纯 TeX 中的网格排版我偶然发现了老上传,看起来很有希望(另见本介绍)所以我打开了upages-20001214.tar.gz并将所有内容放入 uplain/upages/ 目录中。

为了测试包,我创建了一个最小文件,内容如下

\input upages
bla bla bla
\bye

并尝试编译它。但是,XeTeX 在某行代码上卡住了:

This is XeTeX, Version 3.14159265-2.6-0.99991 (TeX Live 2014/Arch Linux) (preloaded format=xetex)
 restricted \write18 enabled.
entering extended mode
(./gridtest.tex (./upages.tex (./umaster.tex
! Undefined control sequence.
l.519 \def\@innernewread
                        {\alloc@6\read\chardef\fift@@n}
? 
! Emergency stop.
l.519 \def\@innernewread
                        {\alloc@6\read\chardef\fift@@n}
No pages of output.
Transcript written on gridtest.log.

如果该宏只是被插入,为什么会显示“未定义的控制序列” \def?奇怪的是:我记得几年前使用过 upages,编译得很好。即使是现在,当尝试时tex gridtest,它编译得很好,但使用 pdfTeX 或 XeTeX,它会吐出这个错误。

答案1

确切的错误是相当随意的,只是扩展走了错误的路径,因此在第一次尝试一些真正非法的事情时会产生错误。

tex在激活 etex 扩展的格式中,通过将 更改为,您会看到错误etex(奇怪的是,latex 除外),寄存器分配宏会更新,因为有 32768 个寄存器,而不是 256 个。这些宏旨在修补这些分配,基本上不期望新格式。

使用 xetex 时,还存在其他问题,因为某些文件使用非 utf8 编码的非 ascii 字符。日志显示了几个实例

Invalid UTF-8 byte or sequence at line 2 replaced by U+FFFD.
Invalid UTF-8 byte or sequence at line 3 replaced by U+FFFD.
Invalid UTF-8 byte or sequence at line 3 replaced by U+FFFD.

相关内容