
Im Anschluss andiese Antwort von samcarter_is_at_topanswers.xyzin Bezug auf die Frage section title in \frametitle beamer
habe ich die bereitgestellte Antwort verwendet:
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsection-\insertframetitle}{}{}
\makeatother
in meinem Hauptdokument beamer
. Ich habe es so geändert, dass \insertsection
es statt ist \insertsubsection
, da meine Unterabschnitte relevanter sind. Die Verwendung davon wirkt sich jedoch vorhersehbar auf alle meine aus, frame
unabhängig davon, ob das \insertsubsection
leer ist (z. B. für Inhaltsverzeichnisseiten). Mein Hauptdokument sieht derzeit so aus (ich habe \insertsection\ - \insertframetitle
stattdessen verwendet, beachten Sie die Leerzeichen um den Bindestrich):
Wie kann ich den Effekt von testen oder nur einschließen, \patchcmd
wenn ein Unterabschnitt vorhanden ist (oder über eine andere Methode/Unterteilung, die funktioniert)? Ich füge auch ein Inhaltsverzeichnis pro Abschnitt ein, indem ich Folgendes verwende:
\AtBeginSection[]
{
\ifnum \value{framenumber}>1
\begin{frame}<beamer>
\frametitle{Outline}
\tableofcontents[currentsection]
\end{frame}
\else
\fi
}
und Referenzen und vielleicht ein Glossar am Ende. Eine mögliche Lösung, die ich sehe, ist, den \beamer@@tmpl@frametitle
Befehl einfach vor und nach den gewünschten oder nicht gewünschten Folien neu zu patchen, wobei der Unterabschnitt im Titel stehen soll, aber vielleicht gibt es einen besseren Weg, den ich nicht kenne und der für andere erreichbar sein könnte, daher die Frage.Ich habe dies versucht, um eine redundante Frage zu vermeiden, und es ist folgendermaßen fehlgeschlagen:
mit:
\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}
MWE-Ausgabe:
Idealerweise möchte ich den Unterabschnittstitel in den entsprechenden Frames, aber nur, wenn der Unterabschnitt existiert, nicht im Inhaltsverzeichnis/Referenz/Einführungsfolien usw. Wenn dies nicht möglich ist, werde ich wieder auf die Unterabschnitte verzichten, \frametitle
aber es wäre schön, wenn es möglich wäre.
Antwort1
Sie können beispielsweise testen, ob der Unterabschnittszähler > 0 ist:
\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}