0

I am trying to follow the solution to give justified environments in beamer without needing to explicitly type justifying everywhere. However, I am not sure how to get the numbering correct, as the enumerate item should start at 1. (I have no idea how to do the description field as well, but that's an extra, as I rarely use it). I have tried naively adding a +1 where item occurs, but without success.

enter image description here

CODE / MWE

\documentclass{beamer}
\usepackage{ragged2e}
\usepackage{lipsum}

\makeatletter
\renewcommand{\itemize}[1][]{%
    \beamer@ifempty{#1}{}{\def\beamer@defaultospec{#1}}%
    \ifnum \@itemdepth >2\relax\@toodeep\else
    \advance\@itemdepth\@ne
    \beamer@computepref\@itemdepth% sets \beameritemnestingprefix
    \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
    \list
    {\usebeamertemplate{itemize \beameritemnestingprefix item}}
    {\def\makelabel##1{%
            {%
                \hss\llap{{%
                        \usebeamerfont*{itemize \beameritemnestingprefix item}%
                        \usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
            }%
        }%
    }
    \fi%
    \beamer@cramped%
    \justifying% NEW
    %\raggedright% ORIGINAL
    \beamer@firstlineitemizeunskip%
}
\makeatother

% My attempt at getting enumerate working. 
\makeatletter
\renewcommand{\enumerate}[1][]{%
    \beamer@ifempty{#1}{}{\def\beamer@defaultospec{#1}}%
    \ifnum \@itemdepth >2\relax\@toodeep\else
    \advance\@itemdepth\@ne
    \beamer@computepref\@itemdepth% sets \beameritemnestingprefix
    \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
    \list
    {\usebeamertemplate{enumerate \beameritemnestingprefix item}}
    {\def\makelabel##1{%
            {%
                \hss\llap{{%
                        \usebeamerfont*{enumerate \beameritemnestingprefix item}%
                        \usebeamercolor[fg]{enumerate \beameritemnestingprefix item}##1}}%
            }%
        }%
    }
    \fi%
    \beamer@cramped%
    \justifying% NEW
    %\raggedright% ORIGINAL
    \beamer@firstlineitemizeunskip%
}
\makeatother

\begin{document}
    \begin{frame}
        \begin{itemize}
            \item \lipsum[66]
        \end{itemize}
        \begin{enumerate}
            \item \lipsum[75]
        \end{enumerate}
        \begin{description}
            \item[Item] \lipsum[66]
        \end{description}
    \end{frame}
\end{document}
oliversm
  • 2,717
  • for enumerate probably you need to redefineenumerate definition. i suspect that it has defined enumeration counter. similarly for description – Zarko Aug 23 '17 at 18:48

1 Answers1

4

As the enumerate and description are different enough that "guessing" the code based on the itemize environment won't work - however you can find the all definitions in beamerbaselocalstructure.sty and modify them in the same way then itemize:

\documentclass{beamer}
\usepackage{ragged2e}
\usepackage{lipsum}

\makeatletter
\renewcommand{\itemize}[1][]{%
    \beamer@ifempty{#1}{}{\def\beamer@defaultospec{#1}}%
    \ifnum \@itemdepth >2\relax\@toodeep\else
    \advance\@itemdepth\@ne
    \beamer@computepref\@itemdepth% sets \beameritemnestingprefix
    \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
    \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
    \list
    {\usebeamertemplate{itemize \beameritemnestingprefix item}}
    {\def\makelabel##1{%
            {%
                \hss\llap{{%
                        \usebeamerfont*{itemize \beameritemnestingprefix item}%
                        \usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
            }%
        }%
    }
    \fi%
    \beamer@cramped%
    \justifying% NEW
    %\raggedright% ORIGINAL
    \beamer@firstlineitemizeunskip%
}

\def\beamer@enum@{%
  \beamer@computepref\@itemdepth% sets \beameritemnestingprefix
  \usebeamerfont{itemize/enumerate \beameritemnestingprefix body}%
  \usebeamercolor[fg]{itemize/enumerate \beameritemnestingprefix body}%
  \usebeamertemplate{itemize/enumerate \beameritemnestingprefix body begin}%
  \expandafter
    \list
      {\usebeamertemplate{\beamer@enumtempl}}
      {\usecounter\@enumctr%
        \def\makelabel##1{{\hss\llap{{%
                \usebeamerfont*{enumerate \beameritemnestingprefix item}%
                \usebeamercolor[fg]{enumerate \beameritemnestingprefix item}##1}}}}}%
  \beamer@cramped%
  \justifying
%  \raggedright%
  \beamer@firstlineitemizeunskip%
}

\def\@@description{%
  \advance\beamer@descdefault by \labelsep%
  \usebeamerfont{description body}%
  \usebeamercolor[fg]{description body}%
  \usebeamertemplate{description body begin}%
  \list
  {}
  {\labelwidth\beamer@descdefault\leftmargin\beamer@descdefault\let\makelabel\beamer@descriptionitem}%
  \beamer@cramped%
%  \raggedright
\justifying
  \beamer@firstlineitemizeunskip%
}

\makeatother



\begin{document}
    \begin{frame}
        \begin{itemize}
            \item \lipsum[66]
        \end{itemize}
        \begin{enumerate}
            \item \lipsum[75]
        \end{enumerate}
        \begin{description}
            \item[Item] \lipsum[66]
        \end{description}
    \end{frame}
\end{document}

enter image description here