字符串解析宏在小页面环境中失败吗?

字符串解析宏在小页面环境中失败吗?

我正在尝试使用字符串解析宏,可以在以下答案中找到解析日期字符串时超出 TeX 容量 - TeX - LaTeX

基本上,我有字符串 num01、num02 ... num09 - 我想从这些字符串中提取最后一个字符;例如,此代码可以工作(使用pdflatex):

\documentclass{article}

\def\parseMyNumHelper num0#1\relax{\edef\MyNum{#1}}
\def\parseMyNum#1{\edef\temp{#1}%
  \expandafter\parseMyNumHelper\temp\relax}

\begin{document}

  \edef\myid{num01}

%   \begin{minipage}
    \parseMyNum{\myid}
    \typeout{ ======== \temp === \MyNum }
%   \end{minipage}

\end{document}

...日志输出结果如下:

...
 ======== num01=== 1
(./a.aux) )
...

 

但是,现在只需取消注释 begin/end{minipage}语句;代码就会立即崩溃:

...
(./a.aux
)
! Missing number, treated as zero.
<to be read again> 
                   \edef 
l.12     \parseMyNum
                    {\myid}
...

...即使我继续观察\parseMyNum,我也看不到任何奇怪的东西:

? i
insert>\show\parseMyNum
! Illegal unit of measure (pt inserted).
<to be read again> 
                   \show 
l.12     \parseMyNum
                    {\myid}
? i
insert>\typeout{ \meaning\parseMyNum }
 macro:#1->\edef \temp {#1}\expandafter \parseMyNumHelper \temp \relax 
> \parseMyNum=macro:
#1->\edef \temp {#1}\expandafter \parseMyNumHelper \temp \relax .
<insert>  \show\parseMyNum

l.12     \parseMyNum
                    {\myid}

有没有想过为什么解析宏\parseMyNum在 minipage 环境中会失败 - 以及如何拥有类似的字符串解析宏,在 minipage 和其他环境内外都能工作?

非常感谢您的任何回答,
干杯!

答案1

minipage寻找其论点:\begin{minipage}{width}...

相关内容