Beamer - Unterabschnitt in \frametitle einschließen, aber nur, wenn Unterabschnitt vorhanden ist, also kein Inhaltsverzeichnis, keine Referenzrahmen usw.

Beamer - Unterabschnitt in \frametitle einschließen, aber nur, wenn Unterabschnitt vorhanden ist, also kein Inhaltsverzeichnis, keine Referenzrahmen usw.

Im Anschluss andiese Antwort von samcarter_is_at_topanswers.xyzin Bezug auf die Frage section title in \frametitle beamerhabe 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 \insertsectiones statt ist \insertsubsection, da meine Unterabschnitte relevanter sind. Die Verwendung davon wirkt sich jedoch vorhersehbar auf alle meine aus, frameunabhängig davon, ob das \insertsubsectionleer ist (z. B. für Inhaltsverzeichnisseiten). Mein Hauptdokument sieht derzeit so aus (ich habe \insertsection\ - \insertframetitlestattdessen verwendet, beachten Sie die Leerzeichen um den Bindestrich):

Bildbeschreibung hier eingeben

Wie kann ich den Effekt von testen oder nur einschließen, \patchcmdwenn 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@frametitleBefehl 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:

Bildbeschreibung hier eingeben

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:

Bildbeschreibung hier eingeben

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

verwandte Informationen