如何在不破坏覆盖规范的情况下全局设置投影仪中的项目间距?

如何在不破坏覆盖规范的情况下全局设置投影仪中的项目间距?

这个最小的例子

\documentclass{beamer}

\begin{document}
  \begin{frame}
    \begin{itemize}[<+->]
      \item item 1
      \item item 2
      \item item 3
    \end{itemize}
  \end{frame}
\end{document}

产生一个包含三个项目要点的演示文稿,这些要点将逐一显示。我想全局增加items 之间的垂直间距。以下想法没有提供令人满意的解决方案。

  • \addtolength{\itemsep}{10pt}可以,但是必须将命令itemize单独添加到每个环境中。
  • \usepackage{enumitem}使项目符号不可见。
  • 重新定义itemize环境或item命令以及按照建议定义新的列表环境这里[<...>]破坏相应环境或命令的投影仪覆盖规范( )。

还有什么我可以尝试的吗?重新定义环境时是否可以传递覆盖规范?

答案1

基本问题已解决作者:Gonzalo Medina从那时起,我对它进行了一些改进,使其拥有一个可以全局使用或在特定框架内使用的命令(参见注释和示例):

\documentclass{beamer}

\usepackage{xpatch}
\makeatletter
\newlength{\my@beamer@itemsepi}\setlength{\my@beamer@itemsepi}{3ex}
\newlength{\my@beamer@itemsepii}\setlength{\my@beamer@itemsepii}{1.5ex}
\newlength{\my@beamer@itemsepiii}\setlength{\my@beamer@itemsepiii}{1.5ex}
\newcommand{\my@beamer@setsep}{%
\ifnum\@itemdepth=1\relax
     \setlength\itemsep{\my@beamer@itemsepi}% separation for first level
   \else
     \ifnum\@itemdepth=2\relax
       \setlength\itemsep{\my@beamer@itemsepii}% separation for second level
       % \setlength\topsep{\my@beamer@itemsepi}% separation for second level
     \else
       \ifnum\@itemdepth=3\relax
         \setlength\itemsep{\my@beamer@itemsepiii}% separation for third level
         % \setlength\topsep{\my@beamer@itemsepii}% separation for second level
   \fi\fi\fi}
\xpatchcmd{\itemize}
  {\def\makelabel}{\my@beamer@setsep\def\makelabel}{}{}
\xpatchcmd{\beamer@enum@}
  {\def\makelabel}{\my@beamer@setsep\def\makelabel}{}{}
\newcommand\setlistsep[3]{%
    \setlength{\my@beamer@itemsepi}{#1}%
    \setlength{\my@beamer@itemsepii}{#2}%
    \setlength{\my@beamer@itemsepiii}{#3}%
}
\makeatother

% This will set the separations in the whole document. You can override
% it for each frame by putting it at the start of the frame.

\setlistsep{10ex}{5ex}{5ex}

\begin{document}
  \begin{frame}
    \begin{itemize}[<+->]
      \item item 1
      \item item 2
      \item item 3
    \end{itemize}
  \end{frame}
  \begin{frame}
    \setlistsep{3ex}{3ex}{3ex}
    \begin{itemize}[<+->]
      \item item 1
      \item item 2
      \item item 3
    \end{itemize}
  \end{frame}
    \begin{frame}
    \begin{itemize}[<+->]
      \item item 1
      \item item 2
      \item item 3
    \end{itemize}
  \end{frame}

\end{document}

在此处输入图片描述

相关内容