如何检查完全扩展任意标记序列的标记的尝试是否会产生错误?
如何检查尝试完全扩展任意标记序列的标记是否会导致 catcode-1/2-braces 不平衡?
(对我来说,这些问题是检查任意标记序列是否适合形成数字或形成长度的问题的一部分。
例如,到目前为止我发现的所有数字检查都会因扩展所讨论的标记序列而产生错误消息或带有不平衡括号的内容,并出现错误消息。
例如,棘手的事情
\documentclass{article}
\makeatletter
\newcommand\Switch[2]{#2#1}%
\newcommand\InsertBraceAndCheckForEmptiness{%
\romannumeral0%
\Switch{ }{\expandafter\expandafter\expandafter}%
\expandafter\expandafter\expandafter\CheckIfEmpty
\expandafter\expandafter\expandafter{%
\expandafter\@gobble\string}%
}%
\newcount\tempcount
\newcommand\CheckWhetherInteger[1]{%
\afterassignment\InsertBraceAndCheckForEmptiness
\expandafter\@gobble\string{%
\tempcount=0#1}%
}%
\newcommand\CheckIfEmpty[1]{%
\if\relax\detokenize{#1}\relax
\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}%
\makeatother
\begin{document}
\CheckWhetherInteger{4}{Integer}{No Integer}
\CheckWhetherInteger{Text}{Integer}{No Integer}
\end{document}
不适用于类似的东西
\CheckWhetherInteger{\csname}{Integer}{No Integer}
或者
\CheckWhetherInteger{\@gobble}{Integer}{No Integer}
或者
\CheckWhetherInteger{\iffalse{\fi}}{Integer}{No Integer}
或者
\def\gobbletoclosebrace{%
\expandafter\expandafter\expandafter\@gobble
\expandafter\expandafter\expandafter{\expandafter\@gobble\string}%
}%
\CheckWhetherInteger{\gobbletoclosebrace}{Integer}{No Integer}
)