No Latex Beamer, quando tenho uma enumeração com rótulos personalizados, uso, por exemplo, \begin{enumerate}[a]
para "a... b... c..." ou \begin{enumerate}[i]
para "i... ii... iii..." em vez de "1 . ... 2. ... 3. ...", então a margem esquerda parece ser menor e, portanto, inconsistente com os outros slides.
Exemplo:
\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}
Quando uso item[a]
, item[b]
etc., as margens estão corretas, mas por razões óbvias isso também não é perfeito. Existe alguma maneira de corrigir isso?
Atualização: os problemas parecem não ser específicos da beamer
classe, mas do enumerate
pacote (que é usado ou copiado de in beamer
), pois o mesmo comportamento ocorre com:
\documentclass{article}
\usepackage{enumerate}
Ainda assim, estou interessado principalmente em uma solução que funcione bem com o beamer
.
Responder1
Você pode apenas comentar as linhas que redefinem o recuo
\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}
Responder2
Para obter as mesmas margens como se estivesse usando, \item[a]
você poderia simplesmente definir seu próprio item enumerado\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}
Responder3
Outra maneira bastante hackeada de resolver/contornar o problema que encontrei é inserir preenchimento diretamente no parâmetro [a.]
ou .[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}
É claro que isso não alinha perfeitamente as diferentes enumerações e também pode depender da fonte usada. Eu provavelmente não usaria isso em um documento impresso, mas para alguns slides pode ser suficiente. O mesmo também funciona (com um pouco mais de precisão) com, por exemplo [\hspace{8pt}a.]
.