我是 \LaTeX 新手。我正在尝试使用解决方案如何删除 itemize/enumerate 之前的空格? 使用 enumitem 和 beamer 删除 itemize 环境前的垂直空间。但我没有得到想要的结果。这个问题有解决办法吗?
答案1
它是不是最好使用带有enumitem
的包,beamer
因为beamer
它有自己的方法来处理标准列表类环境。只需enumitem
在使用时加载beamer
,您就会失去列表类组件的特殊beamer
格式和覆盖感知。
要取消间距,您可以重新定义itemize
为beamer
文件中的实现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
文档,关于垂直顶部空间,有两个参数可以使用:topsep
和partopsep
。
例如,这样写:
\begin{enumerate}[topsep={0pt},partopsep={0pt}]
\item First item
\item Second item
\end{enumerate}
会产生类似这样的结果:
当然,如果您想调整项目之间的分离,您可以itemsep
再次设置,如enumitem
文档中所述(可在上述链接中找到)。