You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LaTeX Beamer嵌套itemize环境垂直间距不一致问题求助

解决Beamer自定义itemize层级字体大小导致的项间距异常

这个问题源于不同层级itemize切换字体大小时,LaTeX的垂直间距计算逻辑出现偏差:当某层级包含更小字号的子列表时,该层级最后两项的itemsep会错误继承子列表的间距设置,第一、二级受影响而第三级正常,是因为Beamer对深层列表的间距处理逻辑不同。

修正方案

直接重定义itemize各层级模板,显式控制每个层级的itemsep和parsep,同时强制每个item开头重置对应层级的间距,避免字体变化干扰。以下是可直接运行的修正版MWE:

\documentclass{beamer}

% 显式设置各层级itemize的字体与间距
\setbeamertemplate{itemize/enumerate body begin}{
  \setlength{\itemsep}{0.5em}
  \setlength{\parsep}{0pt}
}
\setbeamertemplate{itemize/enumerate subbody begin}{
  \footnotesize
  \setlength{\itemsep}{0.3em}
  \setlength{\parsep}{0pt}
}
\setbeamertemplate{itemize/enumerate subsubbody begin}{
  \scriptsize
  \setlength{\itemsep}{0.2em}
  \setlength{\parsep}{0pt}
}

% 修复最后一项间距错误:强制每个item按层级重置itemsep
\makeatletter
\def\@item[#1]{%
  \if@noparitem
    \@donoparitem
  \else
    \if@inlabel
      \indent \par
    \fi
    \ifhmode
      \unskip\unskip \par
    \fi
    \if@newlist
      \if@nobreak
        \@nbitem
      \else
        \addpenalty\@beginparpenalty
        \addvspace\@topsep
        \addvspace{-\parskip}
      \fi
    \else
      \addpenalty\@itempenalty
      \addvspace\itemsep
    \fi
    \global\@inlabeltrue
  \fi
  \setbox\@labels=\hbox{%
    \hss\llap{{\usebeamertemplate{itemize item}}#1}}%
  \hskip-\labelwidth\hskip-\labelsep
  \if@nobreak
    \@nobreakfalse
    \clubpenalty\@M
  \fi
  \ignorespaces
  % 根据当前层级强制重置itemsep
  \ifnum\@itemdepth=1
    \setlength{\itemsep}{0.5em}
  \elifnum\@itemdepth=2
    \setlength{\itemsep}{0.3em}
  \elifnum\@itemdepth=3
    \setlength{\itemsep}{0.2em}
  \fi
}
\makeatother

\begin{document}
\begin{frame}
  \begin{itemize}
    \item 第一级项1
    \item 第一级项2
    \item 第一级项3
    \begin{itemize}
      \item 第二级项1
      \item 第二级项2
      \begin{itemize}
        \item 第三级项1
        \item 第三级项2
        \item 第三级项3
      \end{itemize}
      \item 第二级项3
      \item 第二级项4
    \end{itemize}
    \item 第一级项4
    \item 第一级项5
  \end{itemize}
\end{frame}
\end{document}

关键修复细节

  • 为每个层级的itemize显式设置固定itemsep和parsep,切断字体大小变化与间距继承的关联。
  • 重定义\@item命令,在每个item开头根据当前层级强制重置itemsep,确保最后一项的间距不受子列表设置干扰。
  • 保留第三级列表的独立间距配置,契合Beamer默认逻辑同时避免异常。

内容的提问来源于stack exchange,提问作者Konrad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:18:23