![在 Beamer 中重复编号项目](https://linux22.com/image/403058/%E5%9C%A8%20Beamer%20%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%BC%96%E5%8F%B7%E9%A1%B9%E7%9B%AE.png)
我希望能够重复上一张幻灯片中同一编号下的编号项目。我知道如果我想重复的项目来自紧接在前面的幻灯片,我可以执行以下操作:
\documentclass[pdf]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usecolortheme{beaver}
\setbeamercovered{highly dynamic}
\mode<presentation>{}
\newcounter{saveenumi}
\newcommand{\seti}{\setcounter{saveenumi}{\value{enumi}}}
\newcommand{\conti}{\setcounter{enumi}{\value{saveenumi}}}
\resetcounteronoverlays{saveenumi}
\AtBeginSection[]
{
\begin{frame}<beamer>
\frametitle{}
\tableofcontents[currentsection]
\end{frame}
}
\begin{document}
\begin{frame}
\begin{enumerate}
\item First.
\seti
\end{enumerate}
\end{frame}
\begin{frame}
\begin{enumerate}
\conti
\item Second.
\end{enumerate}
\end{frame}
\begin{frame}
\begin{enumerate}
\conti
\item Second again.
\seti
\end{enumerate}
\end{frame} \end{document}
但我希望能够重复任意幻灯片中的任意项目。我也知道我可以这样做:
\documentclass[pdf]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usecolortheme{beaver}
\setbeamercovered{highly dynamic}
\mode<presentation>{}
\begin{document}
\begin{frame}
\begin{enumerate}
\item First.\label{1}
\end{enumerate}
\end{frame}
\begin{frame}
\begin{itemize}
\item[\ref{1}] First again.
\end{itemize}
\end{frame}
\end{document}
但这很笨重并且通常很丑陋,因为\item[\ref{1}]
它不会自动保留前一张幻灯片的编号标签的样式和对齐方式。
答案1
你可以使用该refcount
包获得一个可扩展的参考编号,以供使用。这样你就可以在最后一个代码中使用第一个代码的技巧。
\documentclass[pdf]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usepackage{refcount}
\usecolortheme{beaver}
\setbeamercovered{highly dynamic}
\mode<presentation>{}
\begin{document}
\begin{frame}
\begin{enumerate}
\item First.\label{1}
\item Second.\label{2}
\item Third.\label{3}
\end{enumerate}
\end{frame}
\begin{frame}
\begin{enumerate}\setcounter{enumi}{\the\numexpr\getrefnumber{1}-1}
\item First again.\setcounter{enumi}{\the\numexpr\getrefnumber{3}-1}
\item Third again.
\end{enumerate}
\end{frame}
\end{document}
显然,您可以将其转换为宏。
\documentclass[pdf]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tipa}
\usepackage{refcount}
\usecolortheme{beaver}
\setbeamercovered{highly dynamic}
\mode<presentation>{}
\newcommand{\repeateditem}[1]{%
\setcounter{enumi}{\the\numexpr\getrefnumber{#1}-1}%
\item}
\begin{document}
\begin{frame}
\begin{enumerate}
\item First.\label{1}
\item Second.\label{2}
\item Third.\label{3}
\end{enumerate}
\end{frame}
\begin{frame}
\begin{enumerate}
\repeateditem{1} First again.
\repeateditem{3} Third again.
\end{enumerate}
\end{frame}
\end{document}
答案2
也许我理解错了,但是为什么另一个框架中还有另一个列表?
\documentclass{beamer}
\geometry{paperheight=1.5in,paperwidth=2in}
\begin{document}
\begin{frame}
\begin{enumerate}
\item \only<1>{First}\only<2>{First again}\label{1}
\item<1> Second\label{2}
\item \only<1>{Third}\only<2>{Third again}\label{3}
\end{enumerate}
\end{frame}
\end{document}
对于不连续的幻灯片并且没有丢失物品的空间:
\documentclass{beamer}
\geometry{paperheight=1.5in,paperwidth=2in}
\begin{document}
\begin{frame}<1>[label=xxx]
\begin{enumerate}
\item \only<1>{First}\only<2>{First again}\label{1}
\only<1>{\item Second\label{2}}\only<2>{\stepcounter{enumi}}
\item \only<1>{Third}\only<2>{Third again}\label{3}
\end{enumerate}
\end{frame}
\begin{frame}
Another frame
\end{frame}
\againframe<2>{xxx}
\end{document}