![Beamer - 在 \frametitle 中包含子部分,但前提是子部分存在,即不存在目录、参考框架等](https://linux22.com/image/455859/Beamer%20-%20%E5%9C%A8%20%5Cframetitle%20%E4%B8%AD%E5%8C%85%E5%90%AB%E5%AD%90%E9%83%A8%E5%88%86%EF%BC%8C%E4%BD%86%E5%89%8D%E6%8F%90%E6%98%AF%E5%AD%90%E9%83%A8%E5%88%86%E5%AD%98%E5%9C%A8%EF%BC%8C%E5%8D%B3%E4%B8%8D%E5%AD%98%E5%9C%A8%E7%9B%AE%E5%BD%95%E3%80%81%E5%8F%82%E8%80%83%E6%A1%86%E6%9E%B6%E7%AD%89.png)
继此答案来自 samcarter_is_at_topanswers.xyz关于这个问题section title in \frametitle beamer
,我使用了提供的答案:
\makeatletter
\patchcmd\beamer@@tmpl@frametitle{\insertframetitle}{\insertsection-\insertframetitle}{}{}
\makeatother
在我的主beamer
文档中。我已将其修改为 而不是 ,因为我的子部分更相关。但是,无论 是否为空(例如目录页),使用它都会影响我的\insertsection
所有。我的主文档目前看起来像这样(我改用了,注意连字符周围的空格):\insertsubsection
frame
\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}