为什么当有子项目时,beamer 会改变项目间距?

为什么当有子项目时,beamer 会改变项目间距?

当里面\item有另一个itemize环境时,行间空间与前一个环境之间的距离\item会比没有子环境时略小itemize(右图)。如果两个框架恰好都由项目组成,这会导致项目符号在框架之间“跳来跳去”。请注意,一切正常\documentclass{article}(左图)。

为什么会发生这种情况?我该如何解决?

好的 <----------> 不行

\documentclass{beamer}
\usepackage{tikz}

% Test material for illustration:
\def\line{\tikz[overlay] \draw[very thick] (0,0) -- (0,1.3em);}
\def\stuff{Test \line}

\begin{document}
\begin{frame}
\begin{itemize}
    \item \stuff
    \item \stuff
    \item \stuff
    \item \stuff
        \begin{itemize} % This causes weird spacing
            \item \stuff
        \end{itemize}
    \item \stuff
    \item \stuff
\end{itemize}
\end{frame}
\end{document}

答案1

正如 dcmst 所指出的,可以通过\par在每个itemize环境之前添加来解决该问题。无需手动执行此操作,可以使用软件包提供的修补命令etoolbox来修补环境本身:

\usepackage{etoolbox}
\BeforeBeginEnvironment{itemize}{\par}

尽管\item和其子项之间的itemize间距现在稍大一些,但在我看来,这看起来比默认的要好得多。此外,“After:”和第一个项目之间的间距也稍大一些。为此,可以在 之后添加额外的负空间\par

\BeforeBeginEnvironment{itemize}{\par\vspace{-0.3em}}

我在这里修复了它


\documentclass{beamer}
\usepackage{tikz}
\usepackage{etoolbox}

% Test material for illustration:
\def\line{\tikz[overlay] \draw[thick] (0,0) -- ++(0,1.3em) -- ++(-2em,0);}
\def\stuff{Test \line}

\begin{document}
\begin{frame}
\begin{minipage}[t]{0.25\linewidth}
Before:
\begin{itemize}
    \item \stuff
    \item \stuff
    \item \stuff
    \item \stuff
        \begin{itemize} % This causes weird spacing
            \item \stuff
        \end{itemize}
    \item \stuff
    \item \stuff
\end{itemize}
\end{minipage}
\begin{minipage}[t]{0.25\linewidth}
\BeforeBeginEnvironment{itemize}{\par}
After:
\begin{itemize}
    \item \stuff
    \item \stuff
    \item \stuff
    \item \stuff
        \begin{itemize}
            \item \stuff
        \end{itemize}
    \item \stuff
    \item \stuff
\end{itemize}
\end{minipage}
\begin{minipage}[t]{0.25\linewidth}
\BeforeBeginEnvironment{itemize}{\par\vspace{-0.2em}}
Less space:
\begin{itemize}
    \item \stuff
    \item \stuff
    \item \stuff
    \item \stuff
        \begin{itemize}
            \item \stuff
        \end{itemize}
    \item \stuff
    \item \stuff
\end{itemize}
\end{minipage}

\end{frame}
\end{document}

在此处输入图片描述

相关内容