我正在尝试更改枚举项和子项的格式。不幸的是,在将枚举列表嵌套在逐项列表中时,我没有获得一致的行为——所有其他组合都可以
以下是 MWE:
\documentclass{beamer}
\setbeamertemplate{itemize item}{\color{green}\textbullet}
\setbeamertemplate{itemize subitem}{\color{red}\textbullet}
\setbeamertemplate{enumerate item}{\color{green}\insertenumlabel.}
\setbeamertemplate{enumerate subitem}{\color{red}\insertsubenumlabel.}
\begin{document}
\begin{frame}
Pure lists are fine:
\begin{itemize}
\item text
\begin{itemize}
\item text
\end{itemize}
\end{itemize}
\begin{enumerate}
\item text
\begin{enumerate}
\item text
\end{enumerate}
\end{enumerate}
Mixed lists are bad \emph{only} for enumerate:
\begin{enumerate}
\item text
\begin{itemize}
\item text
\end{itemize}
\end{enumerate}
\begin{itemize}
\item text
\begin{enumerate}
\item text
\end{enumerate}
\end{itemize}
\end{frame}
\end{document}
答案1
由于某种原因,在环境开始时beamer
增加计数器\@itemdepth
(控制环境嵌套的级别),但不增加环境开始时的计数器(控制环境嵌套的级别) 。itemize
enumerate
\@enumdepth
enumerate
itemize
此补丁将缺失的增量添加到itemize
环境中以产生所需的输出。将其添加到您的序言中的某个位置(即和之间\documentclass{beamer}
)\begin{document}
。
\usepackage{etoolbox}
\makeatletter
\expandafter\patchcmd\csname\string\itemize\endcsname{\advance\@itemdepth\@ne}{\advance\@itemdepth\@ne\advance\@enumdepth\@ne}{}{}
\makeatother