我想利用enumerate
环境做两件事beamer
。
我想重新格式化它,以便它显示为
(1) An item a. A subitem b. Another subitem
我希望能够使用常用
\ref
标签引用这些项目。不幸的是,我发现唯一能正确显示环境内项目的方法无法提供正确的引用结果。
这是一个最小的工作示例。
\documentclass{beamer}
\setbeamertemplate{enumerate item}{(\insertenumlabel)}
\setbeamertemplate{enumerate subitem}{\alph{enumii}.}
\begin{document}
\begin{enumerate}
\item Foo\label{item:1}
\begin{enumerate}
\item Bar\label{item:2}
\item Zip\label{item:3}
\end{enumerate}
\end{enumerate}
Reference to ``Foo'': (\ref{item:1}).
Reference to ``bar'': (\ref{item:2}).
Reference to ``zip'': (\ref{item:3}).
\end{document}
不幸的是,这导致所有三个引用都采用阿拉伯数字,即,,(1)
和(1)
三个(2)
' \ref
,按此顺序。
所需的输出将(\ref{item:3})
呈现为(1b)
。
答案1
重新定义枚举的开始
\documentclass{beamer}
\setbeamertemplate{itemize/enumerate body begin}
{\renewcommand\theenumii{\theenumi\alph{enumii}}}
\setbeamertemplate{enumerate item}{(\insertenumlabel)}
\setbeamertemplate{enumerate subitem}{\alph{enumii}.}
\begin{document}
\begin{frame}{}
\begin{enumerate}
\item Foo\label{item:1}
\begin{enumerate}
\item Bar\label{item:2}
\item Zip\label{item:3}
\end{enumerate}
\end{enumerate}
Reference to ``Foo'': (\ref{item:1}).
Reference to ``bar'': (\ref{item:2}).
Reference to ``zip'': (\ref{item:3}).
\end{frame}
\end{document}
答案2
以下是部分解决方案:
\documentclass{beamer}
\setbeamertemplate{enumerate item}{(\insertenumlabel)}
\begin{document}
\begin{frame}
\begin{enumerate}
\item Foo\label{item:1}
\begin{enumerate}[a.]
\item Bar\label{item:2}
\item Zip\label{item:3}
\end{enumerate}
\end{enumerate}
Reference to ``Foo'': \ref{item:1}
Reference to ``bar'': \ref{item:2}
Reference to ``zip'': \ref{item:3}
\end{frame}
\end{document}
这将嵌套环境中的标签固定为a.
和b.
。但\ref
s 最终相同。
article
使用包中的类中的相同代码enumerate
,您也会看到第二个效果:bar 和 zip 的标签设置为1a
和1b
。但要让 beamer 做同样的事情需要一点挖掘。我会尝试进行挖掘,看看我能找到什么。