边界不一致,枚举不标准

边界不一致,枚举不标准

在 Latex Beamer 中,当我有一个带有自定义标签的枚举时,例如使用\begin{enumerate}[a]“a ... b ... c ...”或\begin{enumerate}[i]“i ... ii ... iii ...”而不是“1. ... 2. ... 3. ...”,左边距似乎较小,因此与其他幻灯片不一致。

例子:

\documentclass{beamer}
\begin{document}

\begin{frame}
    \begin{enumerate}
        \item normal margin
    \end{enumerate}
    \begin{enumerate}[i]
        \item smaller margin
    \end{enumerate}
    \begin{enumerate}[a]
        \item much smaller margin
    \end{enumerate}
    \begin{enumerate}
        \item[a] normal margin, but manual labels
    \end{enumerate}
\end{frame}

\end{document}

在此处输入图片描述

当我使用item[a]item[b]时,边距是正确的,但出于显而易见的原因,这也不完美。有什么办法可以解决这个问题吗?


更新:问题似乎不是特定于beamer类的,而是特定于enumerate包(由中使用或从中复制的beamer),因为相同的行为会发生:

\documentclass{article}
\usepackage{enumerate}

不过,我主要感兴趣的是与之配合良好的解决方案beamer

答案1

在此处输入图片描述

你可以注释掉重新设置缩进的行

\documentclass{beamer}

\makeatletter
\def\beamer@@@enum@[#1]{% partly copied from enumerate.sty
  \@enLab{}\let\@enThe\@enQmark
  \@enloop#1\@enum@
  \ifx\@enThe\@enQmark\@warning{The counter will not be printed.%
    ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi
  \def\insertenumlabel{\the\@enLab}
  \def\beamer@enumtempl{enumerate mini template}%
   \expandafter\let\csname the\@enumctr\endcsname\@enThe
%  \csname c@\@enumctr\endcsname7
%  \expandafter\settowidth
%            \csname leftmargin\romannumeral\@enumdepth\endcsname
%            {\the\@enLab\hspace{\labelsep}}%
  \beamer@enum@}

\makeatother
\begin{document}

\begin{frame}
    \begin{enumerate}
        \item normal margin
    \end{enumerate}
    \begin{enumerate}[i]
        \item smaller margin
    \end{enumerate}
    \begin{enumerate}[a]
        \item much smaller margin
    \end{enumerate}
    \begin{enumerate}
        \item[a] normal margin, but manual labels
    \end{enumerate}
\end{frame}

\end{document}

答案2

为了获得与使用相同的边距,\item[a]您可以简单地定义自己的枚举项\setbeamertemplate{enumerate item}{\alph{enumi}}

\documentclass{beamer}

\begin{document}

\begin{frame}
    \begin{enumerate}
        \item normal margin
    \end{enumerate}
    \begin{enumerate}[i]
        \item smaller margin
    \end{enumerate}
    {
    \setbeamertemplate{enumerate item}{\alph{enumi}}
    \begin{enumerate}
        \item much smaller margin
    \end{enumerate}
    }
    \begin{enumerate}
        \item[a] normal margin, but manual labels
    \end{enumerate}
\end{frame}

\end{document}

在此处输入图片描述

答案3

我发现的解决/规避该问题的另一种相当棘手的方法是将填充直接插入到[a.][i.]参数中。

\documentclass{beamer}
\begin{document}

\begin{frame}
    \begin{enumerate}
        \item normal margin
    \end{enumerate}
    \begin{enumerate}[~~a.]
        \item normal margin (almost)
    \end{enumerate}
\end{frame}

\end{document}

当然,这并不能完美地对齐不同的枚举,也可能取决于所使用的字体。我可能不会在打印的文档中使用它,但对于某些幻灯片来说,它可能已经足够好了。同样的方法也适用于(但精度更高)例如[\hspace{8pt}a.]

相关内容