为什么 beamer 中的 \onslide 命令会重置维度 \hfuzz?

为什么 beamer 中的 \onslide 命令会重置维度 \hfuzz?

我需要为\hfuzz包含大量幻灯片的投影仪框架设置一个非常大的值。然后我发现(很困难)我必须\hfuzz\maxdimen 在每个\onslide命令之后发出。


(实际上,我不需要它们大。我输入了一些代码,这些代码即使在更改字体大小后也会显示不同数量的溢出水平框(10.0pt 到 50.0pt 或类似的)。但它们不会超出框架宽度。\hfuzz我没有为每种情况设置不同数量,而是决定盲目使用\maxdimen。我只是想摆脱警告信息,我似乎对这些信息过敏。)


以下是上述场景的一个非常简化的版本。

\documentclass{beamer}

\usepackage{verbatim}

\begin{document}

% 1
\hfuzz\maxdimen
\begin{frame}[fragile]
  % 2
  % \hfuzz\maxdimen
  \begin{overprint}
    % 3
    \showthe\hfuzz
    % \hfuzz\maxdimen
    \onslide<+>
    \showthe\hfuzz
    % 4
    % \hfuzz\maxdimen
    \verb@ A long long long long long long long long text to be displayed@
    \onslide<+>
    \showthe\hfuzz
    % 5
    % \hfuzz\maxdimen
    \verb@ Another long long long long long long long long text to be displayed@
  \end{overprint}
\end{frame}

\end{document}

实际上,在上面的代码中,只有 %4 和 %5\hfuzz在每个\onslide命令之后抑制了溢出的 hbox 消息。

经过进一步调查,\showthe\hfuzz在三个地方插入证据表明,在命令\hfuzz之后重置为默认的 0.5pt 值\onslide

> 16383.99998pt.
l.3     \showthe\hfuzz

? 
> 0.5pt.
l.6     \showthe\hfuzz
...............                      
? 
> 0.5pt.
l.11     \showthe\hfuzz
  • 为什么实施者决定\hfuzz每次之后都重置\onslide

  • 有什么方法可以设置 \hfuzz特定\maxdimen帧或包含覆盖的一组帧吗?

答案1

可能 beamer 的用途\sloppy是将其设置\hfuzz为 0.5pt。

很难想象为什么你需要这么满的盒子,但无论如何,对于任何文件,如果你把

\hfuzz=\maxdimen
\newdimen\hfuzz

在前导码中,原语\hfuzz将被设置为 maxdimen 并且不可访问,任何设置 dimen 的代码\hfuzz都只会设置 dimen 寄存器而不会影响日志输出。

相关内容