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
,即使它没有打印在该特定幻灯片上。因此,它还会解析内容,并在解析过程中增加计数器。以下内容夸大了这个问题,但却是一个典型的例子:
\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 的末尾。然后,它重新处理以生成第二张幻灯片,这次以 开头,正如预期的那样。beispiel
beispz
4
frame
(5) abc
为了避免这种情况,您必须知道哪些计数器正在被操纵并通过 对其进行补偿\addtocounter{<cntr>}{<num>}
。这是您的示例,经过修改以匹配正确的布局:
\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}
与第一个环境相关的计数器exe
是xnumi
(从查看源代码gb4e
),而第二个的beispiel
当然是beispz
。