
Siguiendo desdeesta respuesta de samcarter_is_at_topanswers.xyzEn relación con la pregunta section title in \frametitle beamer
, he utilizado la respuesta proporcionada:
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsection-\insertframetitle}{}{}
\makeatother
en mi beamer
documento principal. Lo he modificado para que en lugar de \insertsection
eso sea \insertsubsection
como mis subsecciones sean más relevantes. Sin embargo, el uso de esto, como es de esperar, afecta a todos mis frame
archivos independientemente de si \insertsubsection
está vacío (como en el caso de las páginas TOC). Mi documento principal actualmente se ve así ( \insertsection\ - \insertframetitle
en su lugar, usé, observe los espacios alrededor del guión):
¿Cómo puedo probar o incluir solo el \patchcmd
efecto cuando hay una subsección presente (o mediante cualquier método/división que funcione)? También incluyo un TOC por sección usando:
\AtBeginSection[]
{
\ifnum \value{framenumber}>1
\begin{frame}<beamer>
\frametitle{Outline}
\tableofcontents[currentsection]
\end{frame}
\else
\fi
}
y referencias y quizás un glosario al final. Una posible solución que puedo ver es simplemente volver a parchear el \beamer@@tmpl@frametitle
comando antes y después de las diapositivas que deseo o no deseo que la subsección esté en el título, pero tal vez haya una manera mejor que esté más allá de mi conocimiento y que podría estar dentro otros llegan, de ahí la pregunta.Intenté esto para evitar hacer una pregunta redundante y falló así:
usando:
\newcommand\showSubsec{
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsubsection\ - \insertframetitle}{}{}
\makeatother
}
\newcommand\hideSubsec{
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertsubsection\ - \insertframetitle}{\insertframetitle}{}{}
\makeatother
}
MWE:
\documentclass{beamer}
\usepackage{xpatch}
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsubsection\ - \insertframetitle}{}{}
\makeatother
% For TOC at each section
\AtBeginSection[]
{
\ifnum \value{framenumber}>1
\begin{frame}<beamer>
\frametitle{Outline}
\tableofcontents[currentsection]
\end{frame}
\else
\fi
}
\begin{document}
\begin{frame}
\frametitle{Outline}
\tableofcontents
\end{frame}
\begin{frame}
\frametitle{Introduction}
Introduction
\end{frame}
\section{First section}
\subsection{First subsection}
\begin{frame}
\frametitle{First slide Title}
Text
\end{frame}
\subsection{Second subsection}
\begin{frame}
\frametitle{Second slide Title}
\small
Text
\end{frame}
\section{Conclusions and Future Work}
\subsection{Conclusions}
\begin{frame}
\frametitle{Conclusions}
\centering
Text
\end{frame}
\subsection{Future Work}
\begin{frame}
\frametitle{Future Work}
\centering
Text
\end{frame}
\section*{Back matter}
\subsection*{References}
\begin{frame}
\frametitle{References}
References
\end{frame}
\end{document}
Salida MWE:
Idealmente quiero el título de la subsección en los marcos relevantes, pero solo si la subsección existe, no en TOC/referencia/diapositivas de introducción, etc. Si esto no es posible, volveré a no tener las subsecciones en el, \frametitle
pero sería bueno si fuera posible. por favor.
Respuesta1
Podrías, por ejemplo, probar si el contador de subsección es > 0:
\documentclass{beamer}
\usepackage{xpatch}
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{%
\ifnum\thesubsection>0
\insertsubsection\ -
\fi
\insertframetitle
}{}{}
\makeatother
% For TOC at each section
\AtBeginSection[]
{
\ifnum \value{framenumber}>1
\begin{frame}<beamer>
\frametitle{Outline}
\tableofcontents[currentsection]
\end{frame}
\else
\fi
}
\begin{document}
\begin{frame}
\frametitle{Outline}
\tableofcontents
\end{frame}
\begin{frame}
\frametitle{Introduction}
Introduction
\end{frame}
\section{First section}
\subsection{First subsection}
\begin{frame}
\frametitle{First slide Title}
Text
\end{frame}
\subsection{Second subsection}
\begin{frame}
\frametitle{Second slide Title}
\small
Text
\end{frame}
\section{Conclusions and Future Work}
\subsection{Conclusions}
\begin{frame}
\frametitle{Conclusions}
\centering
Text
\end{frame}
\subsection{Future Work}
\begin{frame}
\frametitle{Future Work}
\centering
Text
\end{frame}
\section*{Back matter}
\subsection*{References}
\begin{frame}
\frametitle{References}
References
\end{frame}
\end{document}