如何调整嵌套列表之间的长度?例如,在下面,我想调整显示“此处距离”的距离
\begin{itemize}
\item one
%% distance here
\begin{itemize}
\item
\end{itemize}
%% distance here
\item two
\end{itemize}
更新:我忘了说我在使用beamer
,而且看起来传统方法可能会出错beamer
,因为frame
其对的定义如下itemize
。
答案1
您不应该使用enumitem
with beamer
。这可能会破坏beamer
列表的所有设置(例如覆盖、警报等)。使用 simply vspace
(用于本地解决方案)或负责的beamer
模板。下次展示一个完整的示例而不是代码片段。类是关键信息。
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{itemize}
\item one
%% distance here
\begin{itemize}
\item
\end{itemize}
%% distance here
\item two
\end{itemize}
\end{frame}
\begin{frame}
\begin{itemize}
\item one
\vspace{1cm}
\begin{itemize}
\item
\end{itemize}
\vspace{1cm}
\item two
\end{itemize}
\end{frame}
\begin{frame}
\setbeamertemplate{itemize/enumerate subbody begin}{\vspace{1cm}}
\setbeamertemplate{itemize/enumerate subbody end}{\vspace{1cm}}
\begin{itemize}
\item one
%% distance here
\begin{itemize}
\item
\end{itemize}
%% distance here
\item two
\end{itemize}
\end{frame}
\end{document}
答案2
您要修改的垂直空间由长度的总和和\topsep
给出\parskip
;enumitem
包为您提供了一个简单的机制来控制这些(和一些其他属性)类似列表的环境:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{itemize}
\item one
\begin{itemize}[topsep=20pt]
\item
\end{itemize}
\item two
\end{itemize}
\end{document}
如果你想取消列表中的所有垂直间距,你可以这样说
\usepackage{enumitem}
...
\begin{itemize}[nolistsep]
\item
\end{itemize}
编辑:一个例子beamer
:
\documentclass{beamer}
\usepackage{enumitem}
\begin{document}
\begin{frame}
Normal spacing
\begin{itemize}
\item one
\begin{itemize}
\item First subitem
\item Second subitem
\end{itemize}
\item two
\end{itemize}
Increased spacing
\begin{itemize}
\item one
\begin{itemize}[topsep=20pt]
\item First subitem
\item Second subitem
\end{itemize}
\item two
\end{itemize}
\end{frame}
\end{document}
结果:
但是,enumitem
使用beamer
是不是最佳选择。请参阅 Ulrike 的回答,了解正确的解决方案beamer
。
答案3
Ulrike 的全球变革解决方案对我来说不起作用。把这些行
\setbeamertemplate{itemize/enumerate subbody begin}{\vspace{1cm}}
\setbeamertemplate{itemize/enumerate subbody end}{\vspace{1cm}}
无论是在 a 内frame
还是在序言中都没有做任何事情。(我可以提供有关我的配置、文件等的详细信息,但不确定哪些是相关的。)无论如何,我已经找到了其他(几乎完整的)解决方案,尽管不像...beamerly。
解决方案 1:将其放入序言中:
% space between items:
\newlength{\wideitemsep}
\setlength{\wideitemsep}{\itemsep}\addtolength{\wideitemsep}{3pt}
% reconfigure itemize lists:
\let\olditem\item
\renewcommand{\item}{%
\setlength{\itemsep}{\wideitemsep}%
\olditem}
缺点(或优点):尽管项目之间相距较远,但列表前后的文本行仍然非常接近。(我在http://blog.nguyenvq.com/2011/05/01/spacing-between-items-in-itemize-or-enumerate-environments-lists/。
解决方案 2:几乎相同,但这也在列表前添加了空格:
\let\olditem\item
\renewcommand{\item}{%
\olditem\vspace{4pt}}
但是,它不会在列表后添加空格。我想找到一种全局方法来做到这一点。我尝试过使用这种方法的一些其他列表参数,但没有成功,这是有道理的:一般来说,重新定义所能产生的唯一效果\item
是针对特定项目的。