Beamer TOC: números de seção alinhados à direita

Beamer TOC: números de seção alinhados à direita

Estou tentando usar algarismos romanos maiúsculos (I, II, ...) para apresentar cada seção no sumário do meu beamer com seu número de seção. O MWE a seguir funciona de maneira geral, mas pode-se observar que os números romanos e, portanto, também os títulos das seções, não estão alinhados. Em vez disso, os algarismos romanos são alinhados à esquerda e a distância entre o número da seção e o título é fixa, deslocando assim as seções para a direita dependendo da largura do algarismo romano.

[Durante a criação deste MWE, queria que a segunda seção fosse o número 25, para visualizar melhor o problema, pois XXV é muito mais largo que I (comparado a II). No entanto, apesar de definir o contador de seção como 24 e thesectionestar corretamente definido como 25 no título do quadro, o inserttocsectionnumbercomando no sumário produz apenas um 2em vez de 25. Seria bom se também houvesse uma solução para esse problema, ou seja, forçar o TOC a obter os números reais das seções em vez do que parece ser sua própria contagem.]

\documentclass[t, sansserif, onlymath, 10pt]{beamer}%\mode<handout>

\makeatletter
\defbeamertemplate{section in toc}{sections numbered roman}{%
  \@Roman\inserttocsectionnumber.\ %
  \inserttocsection\par}
  \renewcommand*{\numberline}[1]{%
  \hb@xt@\@tempdima{\hfil#1 }%
}
\makeatother

\begin{document}

\setbeamertemplate{section in toc}[sections numbered roman]
\setbeamerfont{section in toc}{size=\normalsize, family = \sffamily}
\setbeamerfont{section in toc}{shape = \normalfont}

\begin{frame}
  \frametitle{Overview}
  \tableofcontents[currentsection]
\end{frame}
\section{section one}
\begin{frame}
  \frametitle{xxx1 \thesection}
\end{frame}

\setcounter{section}{24}

\section{section two/twenty-five}
\begin{frame}
  \frametitle{xxx2 \thesection}
\end{frame}

\setbeamercovered{transparent}
\begin{frame}
\frametitle{{Agenda}}   
\begin{enumerate}[I.]
\item <1|handout: 1> { Overview} \\
\vspace{0.9cm}
\item <0|handout: 1> {sec1}\\
\vspace{0.9cm}
\item <0|handout: 1> {sec 2: }\\
\end{enumerate}
\end{frame}

\end{document}

Incluir o último slide mostra como eu quero que o resultado fique (na verdade, é de onde venho, mas preciso de automação). Você pode ver que, usando o pacote "enumerate", as "enumerações" estão alinhadas à direita, assim como os títulos das seções.

No preâmbulo do documento, o código

  \defbeamertemplate{section in toc}{sections numbered roman}{%
  \@Roman\inserttocsectionnumber.\ %
  \inserttocsection\par}

serve para usar algarismos romanos e inserir números de seção antes dos títulos das seções, e

  \renewcommand*{\numberline}[1]{%
  \hb@xt@\@tempdima{\hfil#1 }%
  }

tenta alinhar o número à direita usando um comando retirado deAlinhar números à direita no ToC , mas isso ocorre antes no alinhamento entre seções e subseções em relação umas às outras, e o código acima cortado não funciona.

Responder1

Solução rápida:

coloque o número romano em uma caixa de largura fixa

\documentclass[t, sansserif, onlymath, 10pt]{beamer}%\mode<handout>

\makeatletter
\defbeamertemplate{section in toc}{sections numbered roman}{%
  \makebox[0.8cm]{\hfill\@Roman\inserttocsectionnumber.}\space%
  \inserttocsection\par
}
\makeatother

\begin{document}

\setbeamertemplate{section in toc}[sections numbered roman]

\begin{frame}
  \frametitle{Overview}
  \tableofcontents
\end{frame}

\section{section one}
\begin{frame}
  \frametitle{xxx1 \thesection}
\end{frame}

\makeatletter
\beamer@tocsectionnumber=24
\makeatother

\section{section two/twenty-five}
\begin{frame}
  \frametitle{xxx2 \thesection}
\end{frame}

\end{document}

insira a descrição da imagem aqui

informação relacionada