Beamer: incluya la subsección en \frametitle pero solo si la subsección existe, es decir, no TOC, marcos de referencia, etc.

Beamer: incluya la subsección en \frametitle pero solo si la subsección existe, es decir, no TOC, marcos de referencia, etc.

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 beamerdocumento principal. Lo he modificado para que en lugar de \insertsectioneso sea \insertsubsectioncomo mis subsecciones sean más relevantes. Sin embargo, el uso de esto, como es de esperar, afecta a todos mis framearchivos independientemente de si \insertsubsectionestá vacío (como en el caso de las páginas TOC). Mi documento principal actualmente se ve así ( \insertsection\ - \insertframetitleen su lugar, usé, observe los espacios alrededor del guión):

ingrese la descripción de la imagen aquí

¿Cómo puedo probar o incluir solo el \patchcmdefecto 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@frametitlecomando 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í:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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, \frametitlepero 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}

información relacionada