Beamer - inclui subseção em \frametitle mas somente se a subseção existir, ou seja, não TOC, quadros de referência, etc.

Beamer - inclui subseção em \frametitle mas somente se a subseção existir, ou seja, não TOC, quadros de referência, etc.

Na sequência deesta resposta de samcarter_is_at_topanswers.xyzem relação à pergunta section title in \frametitle beamer, usei a resposta fornecida:

\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsection-\insertframetitle}{}{}
\makeatother

no meu beamerdocumento principal. Eu o modifiquei para que, em vez \insertsectiondisso, \insertsubsectionminhas subseções sejam mais relevantes. No entanto, usar isso está afetando previsivelmente todos os meus, frameindependentemente de \insertsubsectionestar vazio (como nas páginas do TOC). Meu documento principal atualmente se parece com isto (em vez disso, usei \insertsection\ - \insertframetitle, observe os espaços ao redor do hífen):

insira a descrição da imagem aqui

Como posso testar ou incluir apenas o \patchcmdefeito de quando há uma subseção presente (ou através de qualquer método/divisão que funcione)? Também estou incluindo um sumário por seção usando:

\AtBeginSection[]
{
 \ifnum \value{framenumber}>1
  \begin{frame}<beamer>
   \frametitle{Outline}
   \tableofcontents[currentsection]
  \end{frame}
 \else
 \fi
}

e referências e talvez um glossário no final. Uma solução possível que posso ver é apenas refazer o \beamer@@tmpl@frametitlecomando antes e depois do(s) slide(s) que desejo ou não que a subseção esteja no título, mas talvez haja uma maneira melhor que está além do meu conhecimento e que poderia estar dentro outros alcançam, daí a questão.Tentei fazer isso para evitar fazer uma pergunta redundante e falhou assim:

insira a descrição da imagem aqui

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}

Saída MWE:

insira a descrição da imagem aqui

Idealmente, quero o título da subseção nos quadros relevantes, mas apenas se a subseção existir, não nos slides de sumário/referência/introdução, etc. Se isso não for possível, voltarei a não ter as subseções no, \frametitlemas seria bom, se possível por favor.

Responder1

Você poderia, por exemplo, testar se o contador da subseção é > 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}

informação relacionada