如何使用 \lastnamedcs?

如何使用 \lastnamedcs?

请看一下这个简短的 MWE:

% Plain LuaTeX
\ifcsname b@selineskip\endcsname
\else
\expandafter\newdimen\lastnamedcs
\lastnamedcs\normalbaselineskip
\fi

\expandafter\the\csname b@selineskip\endcsname

\bye

这里有什么问题?

答案1

\ifcsname没有为未定义的名称定义 csname(与 不同\csname),因此

\ifcsname foo\endcsname\else
\expandafter\show\lastnamedcs
\fi



\bye

生产

> \^^@=undefined.
<recently read> \IMPOSSIBLE.
            
l.2 \expandafter\show\lastnamedcs

它正在生成一个无法使用的内部不可访问令牌\newdimen(或任何东西)。

一个更容易理解的变体是

\ifcsname foo\endcsname\else
\expandafter\def\expandafter\z\expandafter{\lastnamedcs}
\show\z
\fi



\bye

具有终端输出

> \z=macro:
->\IMPOSSIBLE..
l.3 \show\z

相关内容