投影机中的计数器和帧分割命令和环境存在问题

投影机中的计数器和帧分割命令和环境存在问题

gb4e在环境中使用语言学家包beamer与框架分割命令\pause或环境结合时overprint,我面临以下问题:数字奇怪地“跳跃”。

beispiel当我将环境(见下文)与命令或拆分环境结合使用时,也会发生同样的情况\pause。因此,我相信,这是这些命令和环境中某些计数器的普遍问题。我的问题是:如何避免这种奇怪的跳跃行为?(对于gb4e基于环境,答案更重要。我只是提供了另一个答案来展示这个问题的普遍性质。但是,我也想在这里看到一个可能的解决方案,以便更深入地了解 LaTeX。)

\documentclass{beamer}
%\usetheme{Bergen}

\usepackage[ngerman]{babel} %dt. Silbentrennung
\usepackage[applemac]{inputenc}

  \usepackage{gb4e}

  \newcounter{beispz} %Beispiele mit durchgehender Nummerierung und  in italics
\newenvironment{beispiel}
    {\stepcounter{beispz}
    \begin{enumerate}\item[(\arabic{beispz})]\linespread{1}\em}
    {\end{enumerate}} %\label{\stepcounter{beispz}}

\begin{document}

\begin{frame}
\begin{exe}
\ex Du bist mir ein feiner Freund!\pause
\ex A: Wie viele Einwohner hat New York?
\end{exe}
\end{frame}

\begin{frame}
\begin{beispiel} asdfas\end{beispiel} \pause

\begin{beispiel} hand\end{beispiel}
\end{frame}

\end{document}

\addtocounter{}{+previous no}备注:Werner 给出了一个可能的解决方案。它涉及通过在计数环境前面添加并\addtocounter{}{-last no}在环境末尾使用来手动设置计数器数字(见下文)。例如:

\begin{beispiel}a\end{beispiel}\pause \begin{beispiel}b\end{beispiel}\addtocounter{beispz}{-2}\pause.

它确实有效。但是

可以想象,如果要准备较大的文档,需要大量的手动工作。因此,我想问一下,有没有人知道一个可以大大减少工作量的解决方案。

答案1

我在一篇文章中找到了解决方案回复:Ling-TeX:Beamer、gb4e 示例编号和 \pause 命令作者:Alan Munn。通过添加\resetcounteronoverlays{exx}到序言中,即可实现。

答案2

beamer当你使用该命令时,它会在后台完成大量工作\pause。事实上,为了保持正确的垂直/水平对齐,它仍然必须处理所呈现的内容 \pause,即使它没有打印在该特定幻灯片上。因此,它还会解析内容,并在解析过程中增加计数器。以下内容夸大了这个问题,但却是一个典型的例子:

使用 \pause 解决 beamer 中的问题

\documentclass{beamer}% http://ctan.org/pkg/beamer
\begin{document}
\newcounter{beispz} %Beispiele mit durchgehender Nummerierung und  in italics
\newenvironment{beispiel}
  {\stepcounter{beispz}
   \begin{enumerate}\item[(\arabic{beispz})]\linespread{1}\em}
  {\end{enumerate}} %\label{\stepcounter{beispz}}

\begin{document}
\begin{frame}
\begin{beispiel} abc\end{beispiel} \pause
\begin{beispiel} def\end{beispiel}
\begin{beispiel} ghi\end{beispiel}
\begin{beispiel} jkl\end{beispiel}
\end{frame}

\结束{文档}​

幻灯片 1 仅设置了正确的计数器。但是,它还会处理幻灯片 1 上的(1) abc剩余环境,将计数器留在 幻灯片 1 的末尾。然后,它重新处理以生成第二张幻灯片,这次以 开头,正如预期的那样。beispielbeispz4frame(5) abc

为了避免这种情况,您必须知道哪些计数器正在被操纵并通过 对其进行补偿\addtocounter{<cntr>}{<num>}。这是您的示例,经过修改以匹配正确的布局:

使用 \pause 显示正确的计数器

\documentclass{beamer}% http://ctan.org/pkg/beamer
\usepackage{gb4e}% http://ctan.org/pkg/gb4e

\newcounter{beispz} %Beispiele mit durchgehender Nummerierung und  in italics
\newenvironment{beispiel}
  {\stepcounter{beispz}
   \begin{enumerate}\item[(\arabic{beispz})]\linespread{1}\em}
  {\end{enumerate}} %\label{\stepcounter{beispz}}

\begin{document}

\begin{frame}
\begin{exe}
  \ex Du bist mir ein feiner Freund!\pause
  \ex A: Wie viele Einwohner hat New York? \addtocounter{xnumi}{-2}
\end{exe}
\end{frame}

\begin{frame}
\begin{beispiel} abc\end{beispiel} \pause
\begin{beispiel} def\end{beispiel} 
\begin{beispiel} ghi\end{beispiel}
\begin{beispiel} jkl\end{beispiel} \addtocounter{beispz}{-4}
\end{frame}
\end{document}​

与第一个环境相关的计数器exexnumi(从查看源代码gb4e),而第二个的beispiel当然是beispz

相关内容