.aux 往返改变编码?

.aux 往返改变编码?

我遇到一种情况,我需要向辅助设备写入一个简单的字符串:

\ifinlist{#1}\list
  {}
  {\listgadd\list{#1}%
   write to aux "\macro{#1}"}

\def\macro#1{\listgadd\list{#1}}

\ifinlist测试第二次运行时,通过和\list填充,测试总是失败,尽管我可以看到测试应该成功。这只发生在通过 的元素上。这里可能存在一些编码问题吗?.aux\macro\typeout.aux

例如,以下是在测试块之前和之后放入一些来自 .aux 的 typeouts 的输出#1。如您所见,它已在列表中并再次被添加。

BEFORE:#1=sigfridsson,list=sigfridsson|companion|
AFTER:list=sigfridsson|companion|sigfridsson|

答案1

我可以在日志文件中看到宏出错的地方。很明显sigfridsson不等于sigfridsson

我能想到的出现这种情况的唯一原因是,通过辅助文件存储的字符串的 catcode 与您正在与之比较的字符串的 catcode 不同。一个可能的原因是其中一个字符串\detokenize被使用。

相关内容