使用 beamer 的自定义枚举添加 EnumerateCounter

使用 beamer 的自定义枚举添加 EnumerateCounter

我正在使用该enumitem包来通过为enumerate item labels 设置一组自定义字符来定制枚举。

我平时制作文章类型的文档的时候,都是使用下面的代码。

\usepackage{enumitem}
\makeatletter
\newcommand{\xslalph}[1]{\expandafter\@xslalph\csname c@#1\endcsname}
\newcommand{\@xslalph}[1]{%
    \ifcase#1\or a\or b\or c\or \v{c}\or d\or e\or f\or g\or h\or i%
    \or j\or k\or l\or m\or n\or o\or p\or r\or s\or \v{s}%
    \or t\or u\or v\or z\or \v{z}%
    \else\@ctrerr\fi%
}
\AddEnumerateCounter{\xslalph}{\@xslalph}{m}
\makeatother

(我从之前的问题中得到了这个代码---使用自定义字母表枚举项目

我正在准备一个beamer演示文稿。beamer使用特殊的内部脚本来处理与不兼容的枚举enumitem,因此enumitem无法use在中使用beamer documentclass

如何在投影仪幻灯片中使用AddEnumerateCounter?我想用斯洛文尼亚字母 (abcčdefghijklmnoprsštuvzž)item按字母顺序排列。label

答案1

解决方案 1

使用beamerenumerate包并根据该包的文档,您可以提供自定义的计数器样式。请参阅文档第 2 节有关的内容\@enhook

pgffor这里muticol仅仅是为了举例子。

如果您只想在本地进行这样的编号,则可以这样做。

\documentclass{beamer}
\usepackage{multicol}
\usepackage{pgffor}
\makeatletter
% Same definition of \xsalph than what you provided
\newcommand{\xslalph}[1]{\expandafter\@xslalph\csname c@#1\endcsname}
\newcommand{\@xslalph}[1]{%
    \ifcase#1\or a\or b\or c\or \v{c}\or d\or e\or f\or g\or h\or i%
    \or j\or k\or l\or m\or n\or o\or p\or r\or s\or \v{s}%
    \or t\or u\or v\or z\or \v{z}%
    \else\@ctrerr\fi%
}
% Extention of enumerate package according to documentation section 2. about "\@enhook"
% Makes * trigger \xslalph enumeration style
\providecommand\@enhook{}
\g@addto@macro\@enhook{%
\ifx *\@entemp\def\@tempa{\@enLabel\xslalph}%
\fi}
\makeatother


\begin{document}

\begin{frame}
\begin{multicols}{2}
\begin{enumerate}[*]
    \foreach \nitem in {1,...,25}{
\item \nitem.
    }
\end{enumerate}
\end{multicols}
\end{frame}

\end{document}

在此处输入图片描述

解决方案 2

您可以enumerate item使用以下方式全局修改样式

\setbeamertemplate{enumerate item}{\xslalph{enumi}.}

输出相同但不需要环境选项enumerate

\documentclass{beamer}
\usepackage{multicol}
\usepackage{pgffor}
\makeatletter
% Same definition of \xsalph than what you provided
\newcommand{\xslalph}[1]{\expandafter\@xslalph\csname c@#1\endcsname}
\newcommand{\@xslalph}[1]{%
    \ifcase#1\or a\or b\or c\or \v{c}\or d\or e\or f\or g\or h\or i%
    \or j\or k\or l\or m\or n\or o\or p\or r\or s\or \v{s}%
    \or t\or u\or v\or z\or \v{z}%
    \else\@ctrerr\fi%
}
\makeatother
\setbeamertemplate{enumerate item}{\xslalph{enumi}.}

\begin{document}

\begin{frame}
\begin{multicols}{2}
\begin{enumerate}
    \foreach \nitem in {1,...,25}{
    \item \nitem.
    }
\end{enumerate}
\end{multicols}
\end{frame}

\end{document}

相关内容