如何根据嵌套子列表修改 beamer 中 itemize 项之间的条件间距?

如何根据嵌套子列表修改 beamer 中 itemize 项之间的条件间距?

我想修改 itemize 命令投影机包,使其在每个项之前添加一些垂直空间,其中前一个项包含嵌套的子列表。以下是一个例子:

\documentclass{beamer}
\mode<presentation>
\begin{document}
\begin{frame}{}

\begin{itemize}
    \item 1
    \begin{itemize}
        \item 1.1
        \item 1.2
    \end{itemize}
    \item 2
    \begin{itemize}
        \item 2.1
        \begin{itemize}
            \item 2.1.1
            \item 2.1.2
        \end{itemize}
        \item 2.2
    \end{itemize}
    \item 3
    \begin{itemize}
        \item 3.1
        \begin{itemize}
            \item 3.1.1
        \end{itemize}
    \end{itemize}
\end{itemize}

\end{frame}
\end{document}

我希望示例中的列表排版如下:

1
1.1
1.2
<-- space here
2
2.1
2.1.1
2.1.2
<-- space here
2.2
<-- space here
3
3.1
3.1.1

一个重要的要求是,整个环境。以下小“算法”应该可以阐明我想要实现的目标:

  • 维护一个变量最后项目级别,最初设置为 0。
  • 启动物品时,如果当前物品的等级小于最后项目级别,添加一些垂直空间;并且,无论如何,重置最后项目级别至当前项目的级别。

不幸的是,我不明白 LaTeX 的内部原理,投影机足以实现这个想法。

答案1

之前和之后:

你唯一需要知道的是\@itemdepth,(TeX)计数器存储当前级别。顺便说一句,如果你有这么多itemize,你想使用easylist 与 beamer

\documentclass[handout,draft]{beamer}
\begin{document}
\begin{frame}
    \begin{itemize}
        \item 1
        \item 2
        \begin{itemize}
            \item 2.1
            \item 2.2
        \end{itemize}
        \item 3
        \begin{itemize}
            \item 3.1
            \begin{itemize}
                \item 3.1.1
                \item 3.1.2
            \end{itemize}
        \end{itemize}
        \item 4
    \end{itemize}
    outside itemize
\end{frame}
\makeatletter
\newcount\lastItemLevel\lastItemLevel1
\let\olditem\item
\def\item{%
    \ifnum\@itemdepth<\lastItemLevel\vspace*{1em}\fi%
    \global\lastItemLevel\@itemdepth%
    \olditem}
\makeatother
\begin{frame}
    \begin{itemize}
        \item 1
        \item 2
        \begin{itemize}
            \item 2.1
            \item 2.2
        \end{itemize}
        \item 3
        \begin{itemize}
            \item 3.1
            \begin{itemize}
                \item 3.1.1
                \item 3.1.2
            \end{itemize}
        \end{itemize}
        \item 4
    \end{itemize}
    outside itemize
\end{frame}
\end{document}

相关内容