有没有什么技巧可以检测“\csname..\endcsname”是否出错,如果是,则提供额外消息来解释该问题?

有没有什么技巧可以检测“\csname..\endcsname”是否出错,如果是,则提供额外消息来解释该问题?

为了在字符串化之前扩展可扩展标记,我有时会将\csname..\endcsname-expansion 与\stringas结合起来

\chardef\stopromannumeral=`\^^00
\edef\gobbleToPrefix{%
  \def\noexpand\gobbleToPrefix##1\string X\string Y{\stopromannumeral}%
}%
\gobbleToPrefix
...
\def\macroA#1{%
   ...
   \expandafter\macroB\expandafter{%
     \romannumeral
     \expandafter\expandafter
     \expandafter           \gobbleToPrefix
     \expandafter\string
     \csname XY#1\endcsname
   }%
   ...
}%
% A macro where the argument must be a string of catcode-12-characters
% and catcode-10-spaces:
\def\macroB#1{%
  <replacement text where #1 occurs as placeholder for a string>
}%

如果\macroA#1 包含不应该发生的事情,那么\csname..\endcsname您会收到错误消息,这对于不熟悉 TeX 的人来说很难理解。

有没有什么技巧可以检测出\csname..\endcsname东西是否出错了,如果是的话,是否提供额外的消息来解释这个问题?

相关内容