Beamer - 在 \frametitle 中包含子部分,但前提是子部分存在,即不存在目录、参考框架等

Beamer - 在 \frametitle 中包含子部分,但前提是子部分存在,即不存在目录、参考框架等

此答案来自 samcarter_is_at_topanswers.xyz关于这个问题section title in \frametitle beamer,我使用了提供的答案:

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

在我的主beamer文档中。我已将其修改为 而不是 ,因为我的子部分更相关。但是,无论 是否为空(例如目录页),使用它都会影响我的\insertsection所有。我的主文档目前看起来像这样(我改用了,注意连字符周围的空格):\insertsubsectionframe\insertsubsection\insertsection\ - \insertframetitle

在此处输入图片描述

\patchcmd当存在子节时(或通过任何有效的方法/划分),我如何测试或仅包含的效果?我还使用以下方法为每个部分包含一个目录:

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

以及参考文献,也许还有最后的词汇表。我能想到的一个可能的解决方案就是在\beamer@@tmpl@frametitle我希望或不希望标题中包含子节的幻灯片之前和之后重新修补命令,但也许有一种更好的方法超出了我的知识范围,其他人可能能够做到,因此才有这个问题。我尝试这样做以避免提出多余的问题,但却失败了,如下所示:

在此处输入图片描述

使用:

\newcommand\showSubsec{
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsubsection\ - \insertframetitle}{}{}
\makeatother
}

\newcommand\hideSubsec{
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertsubsection\ - \insertframetitle}{\insertframetitle}{}{}
\makeatother
}

梅威瑟:

\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 输出:

在此处输入图片描述

理想情况下,我希望小节标题出现在相关框架中,但前提是小节存在,而不是在目录/参考/介绍幻灯片等中。如果这不可能,那么我将恢复为不包含小节,\frametitle但如果可能的话会很好。

答案1

例如,您可以测试子部分计数器是否> 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}

相关内容