
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 thesection
estar corretamente definido como 25 no título do quadro, o inserttocsectionnumber
comando no sumário produz apenas um 2
em 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}