
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 beamer
documento principal. Eu o modifiquei para que, em vez \insertsection
disso, \insertsubsection
minhas subseções sejam mais relevantes. No entanto, usar isso está afetando previsivelmente todos os meus, frame
independentemente de \insertsubsection
estar 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):
Como posso testar ou incluir apenas o \patchcmd
efeito 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@frametitle
comando 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:
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:
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, \frametitle
mas 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}