我正在为 beamer 演示文稿编写 TeX 文件,但在 -command\pause
和列表计数器方面存在问题:
列表计数器会随着每个\pause
命令增加其计数 - 尽管我没有在代码中更改框架或任何东西。这看起来非常丑陋。所以我需要停止计数器随着每个\pause
命令增加其计数,或者完全关闭计数器 - 我甚至不知道这是如何工作的。
有人可以帮帮我吗?
这里是我的一些列表设置:
\definecolor{kit-gray}{RGB}{224,224,224}
\definecolor{kit-green}{RGB}{32,149,128}
\usepackage{listings}
\usepackage{courier}
\lstset{
basicstyle=\scriptsize\ttfamily,
numbers=left,
numberstyle=\tiny,
%stepnumber=2,
numbersep=5pt,
tabsize=2,
extendedchars=true,
breaklines=true,
%keywordstyle=\color{red},
frame=t,
%frameround=tftf,
keywordstyle=[1]\textbf,
stringstyle=\color{blue}\ttfamily,
showspaces=false,
showtabs=false,
xleftmargin=17pt,
framexleftmargin=17pt,
framexrightmargin=6pt,
framexbottommargin=4pt,
backgroundcolor=\color{kit-gray},
commentstyle=\color{kit-green},
showstringspaces=true
%numberbychapter=false
}
答案1
如您所知,Beamer 将为每个覆盖层创建一个新页面。每次创建包含 lstlisting 环境的页面时,计数器lstlisting
都会递增。对于任何计数器(表格、图形等),Beamer 支持重置覆盖层上的计数器。放置
\resetcounteronoverlays{lstlisting}
在序言中,您的问题就应该得到解决。
答案2
lstlisting
如果在带有标题的框架上排版常规内容,则此标题会在每个\pause
命令之后呈现,并增加列表编号(计数器lstnumber
)。
这里最好的选择是给计数器设置一个标签,然后将其引用为手动标题,使其看起来与使用传统键值时类似caption={...}
。最好使用title={...}
键值。这是使用文档类的 MWE 形式的想法article
(因为没有提供 MWE):
\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listings
\begin{document}
\setcounter{lstnumber}{0}\refstepcounter{lstnumber}\label{mylisting}% Correct listing reference
\begin{lstlisting}[title={Listing~\ref{mylisting}:\ This is a caption},language=C]
#include <stdio.h>
int main(int argc, char ** argv)
{
printf("Hello world!\n");
return 0;
}
\end{lstlisting}
\end{document}
listings
将 的起始值设置lstnumber
为1
(与使用计数器(初始化为 )的其他环境相反0
)。因此,我们首先0
使用将其设置为\setcounter{lstnumber}{0}
,然后使用 用正确的引用增加它\refstepcounter{lstnumber}
。这会将其设置为1
,然后我们将其标记为 使用\label{mylisting}
(或类似的东西)。随后用作Listing~\ref{mylisting}: ...
来title
提供正确的引用。
如果您在演示的后面使用更多列表,则可能必须在列表之后手动增加计数器beamer
。如果需要,请使用\stepcounter{lstnumber}
。还请注意,计数器设置/增加应在环境之外(之前)完成,frame
以避免多次引用。