非標準枚舉的邊距不一致

非標準枚舉的邊距不一致

在 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套件(由 in 使用或從 in 複製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.]or[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.]

相關內容