! 定义内部定义的控制序列未定义

! 定义内部定义的控制序列未定义

在下面的代码中

\documentclass[border=3mm]{standalone}

\begin{document}

%\def\pocz#1--#2.{#1 do #2} 
\def\zakres#1{\def\poko##1{#1.} #1 and \poko{} }

%\poko

\zakres{11--34}
\end{document}

我想.在 的参数之后添加\zakres,然后用和\pocz分隔的两个参数来定义 makro 。--.

令我惊讶的是,即使\zakres没有{}after也\poko不起作用。此外,取消注释\poko会出现! Undefined control sequence错误。

为什么我的错误?

编辑:\poko过去\zakres会导致更糟糕的结果。

答案1

在此处输入图片描述

\documentclass[border=3mm]{standalone}

\begin{document}

%\def\pocz#1--#2.{#1 do #2} 
\def\zakres#1{\def\poko##1{#1.} #1 and \poko{} }

此时\poko尚未定义。

%\poko

\zakres{11--34}

现在你已经完成\def\poko#1{11--34.} 11--34 and \poko{}

因此,它\poko被定义为忽略其参数并键入 11-34。并且您已键入 11-34 和 11-34。

\poko{wibble}

现在\poko再次调用因此wibble被丢弃并且再次排版11-34。

\end{document}

第三个 11-34 通常位于新段落中,但本示例使用standalone将所有内容设置在水平框中。

相关内容