我想使用我在问题中发现的一个技巧Beamer 导航圈没有子部分吗?抑制 的beamer
迷你框架导航中每个子部分的多行“框架点”。相反,我希望每个部分都有一行框架点。这在外部主题 中失败miniframe
,但在外部主题 中成功smoothbars
:
\documentclass{beamer}
\usepackage[latin1]{inputenc}
\usetheme{M21}
\title
{Long Title}
\subtitle{Subtitle}
\author{Christoph}
\date{}
\subject{}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\section[One]{Sec 1}
\setcounter{subsection}{1}
\begin{frame}
\frametitle{Some Frame}
\framesubtitle{its subtitle}
and some bla bla
\end{frame}
\begin{frame}
\frametitle{More...}
\framesubtitle{more subtitle}
and some bla bla
\end{frame}
\begin{frame}
\frametitle{Last Frame in Section}
and some bla bla
\end{frame}
\section{Sec 2}
\setcounter{subsection}{1}
\begin{frame}
\frametitle{Some Frame}
\framesubtitle{its subtitle}
and some bla bla
\end{frame}
\begin{frame}
\frametitle{More...}
\framesubtitle{more subtitle}
and some bla bla
\end{frame}
\begin{frame}
\frametitle{Last Frame in Section}
and some bla bla
\end{frame}
\end{document}
我的主题文件beamerthemeM21.sty
包含以下内容:
\usepackage{remreset}
\makeatletter
\@removefromreset{subsection}{section}
\makeatother
\mode<presentation>
\setbeamercovered{transparent}
\mode<all>
\useoutertheme[subsection=false]{smoothbars}
%\useoutertheme[subsection=false]{miniframes}
\setbeamertemplate{navigation symbols}{}
现在,MWE 应该显示正确的点,如下所示:
One Sec 2
Ooo ooo
如果您注释smoothbars
并激活miniframes
,则点线将向右移动,并且每个部分的移动量都会增加:
One Sec 2
Ooo ooo
我该如何避免这种情况?我哪里搞砸了?
答案1
这里的问题是外部主题smoothbars
使用了 beamer 选项compress
以便将迷你帧合并到一行中,而miniframes
默认情况下不会这样做。因此,为了删除虚假空间,您需要激活此压缩,可以通过以下方式完成
\beamer@compresstrue
在 中beamerthemeM21.sty
(\makeatletter ... \makeatother
当然包含在 中)。
顺便说一句:您不需要\setcounter{subsection}{1}
像在 MWE 中那样在每个部分中使用,执行一次(例如在您的主题文件中)就足够了。
修正后的beamerthemeM21.sty
样子如下:
\usepackage{remreset}
\makeatletter
\@removefromreset{subsection}{section}
\beamer@compresstrue
\makeatother
\setcounter{subsection}{1}
\mode<presentation>
\setbeamercovered{transparent}
\mode<all>
\useoutertheme[subsection=false]{miniframes}
\setbeamertemplate{navigation symbols}{}