使用 xstring 的 IfStrEq 时遇到问题

使用 xstring 的 IfStrEq 时遇到问题

前提条件:文件名是lab00.tex

\def\fn{\jobname}

\StrLeft{\fn}{1}[\firstChar]

\IfStrEq{\firstChar}{l}{true}{false}

答案1

结果为“错误”,因为虽然该包声称比较“字符串”,但它实际上考虑了类别代码。

您的 中的第一个字符\jobnamel类别代码 12 ,这是 TeX 关于生成字符串的一般规则。但是,您正在将其与标准类别代码 11 进行比较l

你可以做

\def\fn{\jobname}
\StrLeft{\fn}{1}[\firstChar]
\IfStrEq{\firstChar}{\detokenize{l}}{true}{false}

因为\detokenize使用相同的内部机制来输出类别代码为 12 的字符。

相关内容