如何使用 enumitem 删除 beamer 中 itemize 命令上方的空白

如何使用 enumitem 删除 beamer 中 itemize 命令上方的空白

我是 \LaTeX 新手。我正在尝试使用解决方案如何删除 itemize/enumerate 之前的空格? 使用 enumitem 和 beamer 删除 itemize 环境前的垂直空间。但我没有得到想要的结果。这个问题有解决办法吗?

答案1

它是不是最好使用带有enumitem的包,beamer因为beamer它有自己的方法来处理标准列表类环境。只需enumitem在使用时加载beamer,您就会失去列表类组件的特殊beamer格式和覆盖感知。

要取消间距,您可以重新定义itemizebeamer文件中的实现beamerbaselocalstructure.sty。在下面的例子中,我展示了一种可能的修改,将 和 设置\topsep\partopsep\itemsep根据0pt您的需要调整这些值);修改后的行用 表示%NEW

\documentclass{beamer}

\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}}
      {%
        \setlength\topsep{0pt}%NEW
        \setlength\partopsep{0pt}%NEW
        \setlength\itemsep{0pt}%NEW
        \def\makelabel##1{%
          {%
            \hss\llap{{%
                \usebeamerfont*{itemize \beameritemnestingprefix item}%
                \usebeamercolor[fg]{itemize \beameritemnestingprefix item}##1}}%
          }%
        }%
      }
  \fi%
  \beamer@cramped%
  \raggedright%
  \beamer@firstlineitemizeunskip%
}
\makeatother

\begin{document}

\begin{frame}
Some text
\begin{itemize}
\setlength\topsep{0pt}
\setlength\partopsep{0pt}
  \item Item 1
  \item Item 2
  \item Item 3
\end{itemize}
Some text
\end{frame}

\end{document}

在此处输入图片描述

仅供比较,以下是未经修改的相同列表:

在此处输入图片描述

答案2

正如所述enumitem 文档,关于垂直顶部空间,有两个参数可以使用:topseppartopsep

例如,这样写:

\begin{enumerate}[topsep={0pt},partopsep={0pt}]
\item First item
\item Second item
\end{enumerate}

会产生类似这样的结果:

在此处输入图片描述

当然,如果您想调整项目之间的分离,您可以itemsep再次设置,如enumitem文档中所述(可在上述链接中找到)。

相关内容