我查看了fancyvrb
代码。其中某一处定义了一个键,hfuzz
如下所示:
\define@key{FV}{hfuzz}{%
\@tempdima=#1\relax
\edef\fv_hfuzz{\number\@tempdima sp}}}
\fvset{hfuzz=2pt}
将其转换为sp的原因是什么?
答案1
假设你这样做
\fvset{1em}
在序言中。
如果代码刚刚执行,那么使用点\def\fv_hfuzz{#1}
的当前值em
将被使用(可能受到某些\footnotesize
或类似声明的影响)。
相反,中的代码fancyvrb.sty
在定义点冻结了值。
如果输入如下内容,也会收到错误\fvset{hfuzz=2}
。
另一方面,
\edef\fv_hfuzz{\the\@tempdima}
就一样好了。