我遇到一种情况,我需要向辅助设备写入一个简单的字符串:
\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
被使用。