Beamer 有缺陷?beamerarticle 中项目宽度和覆盖的描述

Beamer 有缺陷?beamerarticle 中项目宽度和覆盖的描述

这个 MWE 真的很小。我们利用了带有两个可选参数{description}的环境beamer:覆盖规范和项目宽度。

\documentclass{beamer}
%\documentclass{article}
%\usepackage{beamerarticle}
\begin{document}
    \begin{frame}{The Animal Kingdom}
        \begin{description}[<+->][Guans of America]
            \item[Gnus] these are large cow-like animals
            \item[Gnats] much smaller than gnus
            \item[Guans of America] mid sized, I think
        \end{description}
    \end{frame}
\end{document}

现在,这在 beamer 模式下运行良好,但在 beamerarticle 中却不行,它会生成以下消息:

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.7         \item[Gnus] t
             hese are large cow-like animals
? 

在我看来,这似乎是一个错误。我想知道是否有一个可扩展的解决方法。我在一个大型演示文稿中遇到了几十个此类问题。


可以找到 Joseph Wright 对 beamer 源代码中此错误的修复这里

 {
    \AtBeginDocument{
      \let\beamer@origdescription=\description
 -    \renewcommand{\description}[1][]{\beamer@origdescription}
 +    % The description environment doesn't use either optional
 +    % arg in article mode, so simply gobble them
 +    \def\description{%
 +      \@ifnextchar[%]
 +        {\beamer@description@}
 +        {\beamer@origdescription}%
 +    }
 +    \def\beamer@description@[#1]{%
 +      \@ifnextchar[%]
 +        {\beamer@description@@}
 +        {\beamer@origdescription}%
 +    }
 +    \def\beamer@description@@[#1]{\beamer@origdescription}
    }
  }

我尝试在\mode<article>守卫中使用这个想法,但失败了。在下一个版本发布之前,如果能找到临时解决方法,我将不胜感激。

答案1

这里有一个简单的解决方法:将覆盖规范移至frame环境中。在 MWE 示例中,写入:

\documentclass{beamer}
%\documentclass{article}
%\usepackage{beamerarticle}
\begin{document}
    \begin{frame}[<+->]{The Animal Kingdom}
        \begin{description}[Guans of America]
            \item[Gnus] these are large cow-like animals
            \item[Gnats] much smaller than gnus
            \item[Guans of America] mid sized, I think
        \end{description}
    \end{frame}
\end{document}

在具有更丰富覆盖规范的框架中,您必须解决默认覆盖规范的问题。

相关内容