Pontos de navegação personalizados no título do beamer

Pontos de navegação personalizados no título do beamer

Estou trabalhando em meus slides beamere gostaria de incluir alguns pontos no cabeçalho indicando a seção atual (esquerda) e a subseção (direita). Os nomes das seções/subseções não devem ser incluídos.

Aqui está um MWE:

\documentclass{beamer}

\makeatletter
\setbeamertemplate{headline}
{%
    \leavevmode%
    \hbox{%
        \begin{beamercolorbox}[wd=0.5\paperwidth,ht=2.25ex,dp=1ex,left]{section in head/foot}
            section dots
        \end{beamercolorbox}%
        \begin{beamercolorbox}[wd=0.5\paperwidth,ht=2.25ex,dp=1ex,right]{section in head/foot}
            subsection dots (of current section)
        \end{beamercolorbox}}%
}
\makeatother

\begin{document}    
    \section{Section1}
    \begin{frame}
        \frametitle{Frame11}
    \end{frame}

    \subsection{Subsection1}
    \begin{frame}
        \frametitle{Frame12}
    \end{frame}

    \subsection{Subsection2}
    \begin{frame}
        \frametitle{Frame13}
    \end{frame}


    \section{Section2}
    \begin{frame}
        \frametitle{Frame21}
    \end{frame}

    \subsection{Subsection1}
    \begin{frame}
        \frametitle{Frame22}
    \end{frame}

    \subsection{Subsection2}
    \begin{frame}
        \frametitle{Motivation}
    \end{frame}

    \subsection{Subsection3}
    \begin{frame}
        \frametitle{Frame23}
    \end{frame}
\end{document}

Para este número específico de quadros, quero dois pontos no canto superior esquerdo indicando as seções e dois ou três pontos no canto superior direito indicando as subseções da seção 1 e da seção 2, respeitosamente. Obviamente, quero uma solução geral que não seja específica deste exemplo.

Isso é feito facilmente na minha configuração atual ou é necessário algo totalmente diferente?

Responder1

Provavelmente existem maneiras muito melhores de fazer isso, mas em vez de mexer na navegação do beamer, eu queria tentar algo novo e brincar com o xcntperchappacote.

\documentclass{beamer}
\usepackage{tikz}

\usepackage{totcount}
\regtotcounter{section}

\usepackage{xcntperchap}
\RegisterCounters{section}{subsection}

\newcounter{totalsubsection}
\setcounter{totalsubsection}{0}
\usepackage{etoolbox}

\preto\frame{\ifnum\thesection>0\setcounter{totalsubsection}{\ObtainTrackedValueExp[\thesection]{section}{subsection}}\fi}

\setbeamertemplate{headline}{%
\hbox{%
\begin{beamercolorbox}[wd=.48\paperwidth,ht=2.25ex,dp=1ex]{section in head/foot}%
\hfill%
\ifnum\totvalue{section}>0%
\ifnum\thesection>0%
\foreach\x in {1,...,\totvalue{section}}{%
\ifnum\x=\thesection%
\usebeamertemplate{mini frame}~%
\else%
\usebeamertemplate{mini frame in other section}~%
\fi%
}%
\fi%
\fi%
\end{beamercolorbox}%
\qquad%
\begin{beamercolorbox}[wd=.48\paperwidth,ht=2.25ex,dp=1ex]{subsection in head/foot}%
\ifnum\thetotalsubsection>0%
\foreach\x in {1,...,\thetotalsubsection}{%
\ifnum\x=\thesubsection%
\usebeamertemplate{mini frame}~%
\else%
\usebeamertemplate{mini frame in other subsection}~%
\fi%
}%
\fi%
\end{beamercolorbox}%
}}

\title{title}
\author{author}

\begin{document}

    \begin{frame}
        \titlepage
    \end{frame}


\section{Section1}

\frame{}

\subsection{Subsection1}
\begin{frame}
\frametitle{Frame11}
\end{frame}

\subsection{Subsection2}
\begin{frame}
\frametitle{Frame12}
\end{frame}

\section{Section2}
\begin{frame}
\frametitle{Frame2}
\end{frame}

\subsection{Subsection1}
\begin{frame}
\frametitle{Frame21}
\end{frame}

\subsection{Subsection2}
\begin{frame}
\frametitle{Frame22}
\end{frame}

\subsection{Subsection3}
\begin{frame}
\frametitle{Frame23}
\end{frame}

\section{Section3}
\begin{frame}
\frametitle{Frame3}
\end{frame}

\end{document}

insira a descrição da imagem aqui

Responder2

Estou apenas respondendo para mostrar a flexibilidade da solução aceita. Todo o crédito vai para Samcarter. Alterando pequenas coisas no if/else e movendo o conteúdo do cabeçalho para o rodapé, obtive o seguinte resultado nMWE:

Primeiros quatro slides

Diapositivos 5 a 8

O nMWE:

\documentclass{beamer}

\beamertemplatenavigationsymbolsempty
\usetheme{rochester}
\usecolortheme{beaver}

\usepackage{tikz}

\usepackage{totcount}
\regtotcounter{section}

\usepackage{xcntperchap}
\RegisterCounters{section}{subsection}

\newcounter{totalsubsection}
\setcounter{totalsubsection}{0}
\usepackage{etoolbox}

\preto\frame{\ifnum\thesection>0\setcounter{totalsubsection}{\ObtainTrackedValueExp[\thesection]{section}{subsection}}\fi}

\setbeamertemplate{footline}{%
    \hbox{%
        \begin{beamercolorbox}[wd=0.2\paperwidth,ht=2.25ex,dp=1ex,left,leftskip=1ex]{subsection in head/foot}%
            \ifnum\totvalue{section}>0%
            \foreach\x in {1,...,\totvalue{section}}{%
                \ifnum\numexpr\x-1<\thesection%
                \usebeamertemplate{mini frame}~%
                \else%
                \usebeamertemplate{mini frame in other section}~%
                \fi%
            }%
            \fi%
        \end{beamercolorbox}%
        \begin{beamercolorbox}[wd=0.6\paperwidth,ht=2.25ex,dp=1ex,center]{title in head/foot}
            \usebeamerfont{title in head/foot} \inserttitle
        \end{beamercolorbox}%
        \begin{beamercolorbox}[wd=0.2\paperwidth,ht=2.25ex,dp=1ex,right,rightskip=1ex]{subsection in head/foot}%
            \ifnum\thetotalsubsection>0%
            \foreach\x in {1,...,\thetotalsubsection}{%
                \ifnum\x>\numexpr\thetotalsubsection-\thesubsection%
                \usebeamertemplate{mini frame}~%
                \else%
                \usebeamertemplate{mini frame in other subsection}~%
                \fi%
            }%
            \fi%
        \end{beamercolorbox}%
    }}


\title{Super fancy long title which will fit in the footer}
\author{The Champion}
\date{\today}


\begin{document}

    \begin{frame}
        \thispagestyle{empty}
        \maketitle
    \end{frame}


    \begin{frame}
        \thispagestyle{empty}
        \frametitle{Outline}
        \tableofcontents
    \end{frame}


    \section{The first section}
    \subsection{The first subsection}
    \begin{frame}
        \frametitle{The first section}
        \framesubtitle{The first subsection}
    \end{frame}

    \subsection{The second subsection}
    \begin{frame}
        \frametitle{The first section}
        \framesubtitle{The second subsection}
    \end{frame}

    \subsection{The third subsection}
    \begin{frame}
        \frametitle{The first section}
        \framesubtitle{The third subsection}
    \end{frame}


    \section{The second section}
    \subsection{The first subsection}
    \begin{frame}
        \frametitle{The second section}
        \framesubtitle{The first subsection}
    \end{frame}

    \subsection{The second subsection}
    \begin{frame}
        \frametitle{The second section}
        \framesubtitle{The second subsection}
    \end{frame}


    \section{The third section}
    \subsection{The first subsection}
    \begin{frame}
        \frametitle{The third section}
        \framesubtitle{The first subsection}
    \end{frame}

\end{document}

informação relacionada