[Tex/LaTex] Global setting of spacing between items in itemize environment for beamer

beameritemizelistsspacing

I'd like to modify the spacing between items in the itemize environment. This post shows how to modify a specific itemize environment (\addtolength{\itemsep}{0.5\baselineskip}). However, I'd like to do it globally for the entire document. This post suggests the enumitem package. However, I get an error in beamer when i use this package (just declaring it). Any suggestions? I'm currently using the addtolength method on all my itemize environments. I'd like a global solution. Thanks.

Best Answer

In most documents, you can do this, which avoids the use of extra packages.

\let\tempone\itemize
\let\temptwo\enditemize
\renewenvironment{itemize}{\tempone\addtolength{\itemsep}{0.5\baselineskip}}{\temptwo}

(Stufazi suggested a neater way of doing this in his answer, which I will use below.)

However, I think that the frame environment in beamer resets the properties of itemize. You could do something like this, but it will prevent frame's optional arguments from working.

\documentclass{beamer}
\let\oldframe\frame
\renewcommand{\frame}{%
\oldframe
\let\olditemize\itemize
\renewcommand\itemize{\olditemize\addtolength{\itemsep}{100pt}}%
}
%
\begin{document}
\begin{frame}
\begin{itemize}
\item The first.
\item The second.
\item The third.
\end{itemize}
\end{frame}
%
\begin{frame}
\begin{itemize}
\item The fourth.
\item The fifth.
\item The sixth.
\end{itemize}
\end{frame}
%
\end{document}

Alternatively, you could try this, but I can't guarantee that it won't break something else.

\documentclass{beamer}
\newlength{\wideitemsep}
\setlength{\wideitemsep}{\itemsep}
\addtolength{\wideitemsep}{100pt}
\let\olditem\item
\renewcommand{\item}{\setlength{\itemsep}{\wideitemsep}\olditem}
%
\begin{document}
\begin{frame}
\begin{itemize}
\item The first.
\item<2-> The second.
\item<3-> The third.
\end{itemize}
\end{frame}
%
\begin{frame}[shrink=50]
\begin{itemize}
\item The fourth.
\item The fifth.
\item The sixth.
\end{itemize}
\end{frame}
%
\end{document}

It might be safer to define your own list environment based on itemize and use this in future; thus

\newenvironment{wideitemize}{\itemize\addtolength{\itemsep}{100pt}}{\enditemize}

This would avoid the necessity for hacks that have unwanted side effects.

Related Question