我再次进入了 Beamer 演示文稿,并尝试获取框架标题以自动从子部分中打印该部分的标题。代码(附有我想要执行的操作的示例)如下所示:
\documentclass{beamer}
\mode<presentation>
\title[Title]{Title}
\author{My Name}
\institute{Where I am}
\date{September 2013}
\begin{document}
\begin{frame}
\section{SECTION NAME}
\subsection{Subsection Name}
\begin{frame}{"SECTION NAME": Title of Frame}
Content
\end{frame}
为了清楚起见,我希望引号中的“SECTION NAME”能够自动提取文本\section{SECTION NAME}
谢谢!
更新:
感谢 moewe,我们找到了解决方案。它来自本文。更新后的代码如下所示:
\documentclass{beamer}
\usepackage{nameref}
\mode<presentation>
\title[Title]{Title}
\author{My Name}
\institute{Where I am}
\date{September 2013}
\begin{document}
\begin{frame}
\section{SECTION NAME}\label{itsname}
\subsection{Subsection Name}
\begin{frame}{\label{itsname}: Title of Frame}
Content
\end{frame}
答案1
另一种方法是不使用\nameref
和without intensive labeling
。这是可能的,因为节名称是从子节中调用的,因此可以使用其更高级别的计数器。
\documentclass[]{beamer}
\makeatletter
\newcommand\newsection[1]{%
\section{#1}
\@namedef{\thesection}{#1}
}
\newcommand\newsec{%
\@nameuse{\thesection}
}
\makeatother
\mode<presentation>
\title[Title]{Title}
\author{My Name}
\institute{Where I am}
\date{September 2013}
\begin{document}
\begin{frame}[t]
\maketitle
\end{frame}
\begin{frame}[t]
\tableofcontents
\end{frame}
\begin{frame}[t]
\newsection{SECTION NAME}
\subsection{Subsection Name}{\newsec: Title of Frame}
Content
\end{frame}
\end{document}
对于横截面调用,则需要一个标签。需要做的就是进行以下微小修改。
\makeatletter
\newcommand\newsection[2]{%
\section{#1}\label{#2}
\@namedef{#2}{#1}
}
\newcommand\newsec[1]{%
\@nameuse{#1}
}
\makeatother
\newsection{SECTION NAME}{tag}
\subsection{Subsection Name}{\newsec{tag}: Title of Frame}
答案2
该类beamer
提供宏,例如\insertsection
和,\insertsubsection
用于访问当前部分的名称。它们可以在模板中使用或手动使用。
\documentclass{beamer}
\begin{document}
\section{SECTION NAME}
\subsection{Subsection Name}
\begin{frame}{\insertsection: \insertsubsection}
Content
\end{frame}
\end{document}
搜索手册来\insert
查找更多这样的宏。