非標準列挙による一貫性のない余白

非標準列挙による一貫性のない余白

Latex Beamer で、カスタム ラベル付きの列挙体 (たとえば、 「1. ... 2. ... 3. ...」ではなく\begin{enumerate}[a]「a... b... c...」または\begin{enumerate}[i]「i... ii... iii...」) を使用すると、左余白が小さくなり、他のスライドと一致しなくなるようです。

例:

\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

私が見つけた問題を解決/回避するためのもう 1 つのかなりハッキーな方法は、[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.]

関連情報