我使用的是 beamerminiframes
外部主题(subsection=false)。目前,导航在每个部分名称下方显示导航点。如果这些点位于正确的部分名称。这可能吗?
现在它看起来像:
Sec 1 Sec 2
o o o o o o o o
但我希望它看起来像:
Sec 1 o o o o Sec 2 o o o o
梅威瑟:
\documentclass{beamer}
\useoutertheme[subsection=false]{miniframes}
\begin{document}
\section{Sec 1}
\subsection{}
\begin{frame}[t]
hi
\end{frame}
\end{document}`
答案1
这可以通过修补beamer
负责创建迷你框架导航的内部命令来实现:
\documentclass[compress]{beamer}
\useoutertheme[subsection=false]{miniframes}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\slideentry}{\advance\beamer@tempdim by -.05cm}{\advance\beamer@tempdim by\beamer@vboxoffset\advance\beamer@tempdim by\beamer@boxsize\advance\beamer@tempdim by 1.2\pgflinewidth}{}{}
\patchcmd{\slideentry}{\kern\beamer@tempdim}{\advance\beamer@tempdim by 2pt\advance\beamer@tempdim by\wd\beamer@sectionbox\kern\beamer@tempdim}{}{}
\makeatother
\begin{document}
\section{Sec 1}
\subsection{}
\frame{}\frame{}\frame{}\frame{}
\section{Sec 2}
\subsection{}
\frame{}\frame{}\frame{}\frame{}
\end{document}
这个 hack 将迷你框架向上移动一行*和 (章节标题的长度+ 2pt) 个单位向右移动,到达所需位置:
compress
我还在最小工作示例中添加了该选项,因为如果您的演示文稿中有多个小节,则如果每个小节都以新行开始,可能会看起来很奇怪。
*更准确地说,是一行加号1.2\pgflinewidth
:默认的圆形迷你框架正好下降到基线以下的量\pfglinewidth
,所以我将它们提升到基线以上一点点。您可能需要稍微调整一下这个值,特别是如果您使用其他迷你框架样式(box
,tick
)而不是默认的圆形。