
Estoy intentando utilizar números romanos mayúsculas (I, II,...) para presentar cada sección en el TOC de mi proyector con su número de sección. El siguiente MWE funciona en general, pero se puede ver que los números romanos y, por tanto, también los títulos de las secciones, no están alineados. En cambio, los números romanos están alineados a la izquierda y la distancia entre el número de sección y el título es fija, por lo que las secciones se desplazan hacia la derecha según el ancho del número romano.
[Durante la creación de este MWE, quería que la segunda sección fuera la número 25, para visualizar mejor el problema, ya que XXV es mucho más ancho que I (en comparación con II). Sin embargo, a pesar de configurar el contador de sección en 24 y thesection
de estar configurado correctamente en 25 en el título del cuadro, el inserttocsectionnumber
comando en el TOC solo produce un 2
en lugar de 25
. Sería bueno si también hubiera una solución para ese problema, es decir, obligar a TOC a tomar números de sección reales en lugar de lo que parece ser su propio recuento.]
\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 la última diapositiva muestra cómo quiero que se vea el resultado (de hecho, es de donde vengo, pero necesito automatización). Puede ver que, al utilizar el paquete "enumerar", las "enumeraciones" están alineadas a la derecha, al igual que los títulos de las secciones.
En el preámbulo del documento, el código
\defbeamertemplate{section in toc}{sections numbered roman}{%
\@Roman\inserttocsectionnumber.\ %
\inserttocsection\par}
sirve para usar números romanos e insertar números de sección antes de los títulos de las secciones, y
\renewcommand*{\numberline}[1]{%
\hb@xt@\@tempdima{\hfil#1 }%
}
intenta alinear a la derecha el número usando un comando tomado deAlinear números a la derecha en ToC , pero eso se debe más bien a la alineación entre secciones y subsecciones entre sí, y el código anterior recortado no funciona.
Respuesta1
Solución rápida:
Coloque el número romano en un cuadro de ancho fijo.
\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}