Márgenes inconsistentes con enumeración no estándar

Márgenes inconsistentes con enumeración no estándar

En Latex Beamer, cuando tengo una enumeración con etiquetas personalizadas, uso, por ejemplo, \begin{enumerate}[a]"a... b... c..." o \begin{enumerate}[i]"i... ii... iii..." en lugar de "1 . ... 2. ... 3. ...", entonces el margen izquierdo parece ser más pequeño y, por lo tanto, inconsistente con las otras diapositivas.

Ejemplo:

\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}

ingrese la descripción de la imagen aquí

Cuando uso item[a], item[b]etc., los márgenes son correctos, pero por razones obvias tampoco son perfectos. ¿Hay alguna forma de arreglar esto?


Actualización: Los problemas parecen no ser específicos de la beamerclase, sino del enumeratepaquete (que es utilizado o copiado en beamer), ya que ocurre el mismo comportamiento con:

\documentclass{article}
\usepackage{enumerate}

Aún así, lo que más me interesa es una solución que funcione bien con beamer.

Respuesta1

ingrese la descripción de la imagen aquí

Puedes simplemente comentar las líneas que restablecen la sangría.

\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}

Respuesta2

Para obtener los mismos márgenes que si \item[a]los usara, simplemente puede definir su propio elemento de enumeración.\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}

ingrese la descripción de la imagen aquí

Respuesta3

Otra forma bastante complicada de resolver/evitar el problema que encontré es insertar relleno directamente en el parámetro [a.]o [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}

Por supuesto, esto no alinea perfectamente las diferentes enumeraciones y también podría depender de la fuente que se utilice. Probablemente no usaría esto en un documento impreso, pero para algunas diapositivas podría ser suficiente. Lo mismo también funciona (con algo más de precisión) con, por ejemplo [\hspace{8pt}a.], .

información relacionada