beamer
beamer copied to clipboard
itemize is missing an unskip
The definition of itemize in beamer sets a color before the list, and color commands inserts whatsits and this has the effect that spaces before the list suddenly matters. beamer should at least add an \unskip before the color:
(Reference: https://tex.stackexchange.com/questions/462124/why-is-the-spacing-in-this-itemization-so-bad-and-why-can-it-be-fixed-by-adding)
\documentclass{beamer}
\makeatletter
\renewcommand{\itemize}[1][]{%
\ifhmode\unskip\fi %<<< or \unskip \par
\ifblank{#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}% problem
\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%
\raggedright%
\beamer@firstlineitemizeunskip%
}
\begin{document}
\begin{frame}
\begin{minipage}{0.5\textwidth}
\begin{itemize}
\item A. (requires three sub-items)
\begin{itemize}
\item A.1
\item A.2
\item A.3
\end{itemize}
\item B
\end{itemize}
\end{minipage}
\end{frame}
\end{document}
This bug has been detected several times:
- https://tex.stackexchange.com/questions/130643/nested-itemize-environment-affects-vertical-spacing-of-parent-itemize-environmen
- https://tex.stackexchange.com/questions/640148/nested-lists-consistent-vertical-spacing-with-beamer
I propose another way to solve it:
\usepackage{etoolbox}
\pretocmd{\itemize}{\vskip 0pt}{}{}
\pretocmd{\enumerate}{\vskip 0pt}{}{}
or:
\usepackage{etoolbox}
\makeatletter
\pretocmd{\itemize}{\ifhmode\unvbox\voidb@x\fi}{}{}
\pretocmd{\enumerate}{\ifhmode\unvbox\voidb@x\fi}{}{}
\makeatother
related issue: #530 #306