Enumerate 与 beamer 3.42 的行为不同

Enumerate 与 beamer 3.42 的行为不同

以下是beamer3.41 版产生的enumerate

\documentclass{beamer}
\mode<presentation>
    {\usetheme{Rochester}}
\begin{document}
\begin{frame}
  \begin{enumerate}[(a)]
    \item Foo
    \item Bar
  \end{enumerate}
  \begin{enumerate}[1]
    \item Foo
    \item Bar
  \end{enumerate}
\end{frame}
\end{document}

在此处输入图片描述

3.42 版本具有beamer以下内容:

在此处输入图片描述

后者的输出太丑了,很可能是个 bug。在等待 bug 修复期间(?),我该如何临时修复它,以便获得beamer3.41 生成的输出?

答案1

v3.41 和 v3.42 之间的相关区别是在行enumerate mini template中添加了beamerinnerthemedefault.sty

\defbeamertemplateparent{enumerate items}{enumerate item,enumerate subitem,enumerate subsubitem,enumerate mini template}
{}

解决方法:

  • beamerinnerthemedefault.sty在工作文件夹中保留修改后的版本

  • 使用 beamer 自己的机制来设置枚举符号


\documentclass{beamer}

\mode<presentation>
    {\usetheme{Rochester}}


\begin{document}
\begin{frame}

{
\setbeamertemplate{enumerate item}{(\alph{enumi})}
\begin{enumerate}
    \item much smaller margin
\end{enumerate}
}
\end{frame}


\end{document}

答案2

就项目标签的样式而言,这种变化是经过深思熟虑的。Rochester主题加载rectangles内部主题,这始终是应该拥有“方形”项目标签。在正常情况下,我们可以看到enumerate

\documentclass{beamer}
\usetheme{Rochester}
\begin{document}
\begin{frame}
  \begin{enumerate}
    \item Foo
    \item Bar
  \end{enumerate}
  \begin{enumerate}
    \item Foo
    \item Bar
  \end{enumerate}
\end{frame}
\end{document}

在此处输入图片描述

当前情况下的文本看起来有点“挤压”,这是因为方块的大小是硬编码的。因此,可以将它们稍微放大一些,例如通过应用

\setbeamertemplate{enumerate mini template}
{%
  \hbox{%
    \usebeamerfont*{item projected}%
    \usebeamercolor[bg]{item projected}%
    \vrule width3ex height2.2ex depth.8ex%
    \hskip-3ex%
    \hbox to3ex{%
      \hfil%
      \color{fg}\insertenumlabel%
      \hfil}%
  }%
}

在项目的对齐方面,代码中刻意更改了缩进,这适用于“迷你模板”的宽度。因此,对于和(a)1宽度设置不同。这里没有代码注释,所以我只能假设逻辑是,在任何一张幻灯片上,只enumerate期望一种类型。因此,缩进的变化预计不会成为问题。从 v3.49 开始,此代码将被删除,以便在所有情况下缩进都相同。(见beamer问题 453/ 犯罪https://github.com/josephwright/beamer/commit/5692a7d1983654a984f6f11d503e9913758768c0)添加此修复程序并调整设置后enumerate mini template,输出如下所示 在此处输入图片描述


请注意,如果演示文稿使用迷你模板纯粹是为了更改项目标签的外观,那么正确的方法是更改beamer​​模板

\documentclass{beamer}
\usetheme{Rochester}
\setbeamertemplate{items}[default]
\begin{document}
\begin{frame}
  \begin{enumerate}
    \item Foo
    \item Bar
  \end{enumerate}
  \begin{enumerate}
    \item Foo
    \item Bar
  \end{enumerate}
\end{frame}
\end{document}

在此处输入图片描述

相关内容