我想重新定义 Beamer 的框架环境,以提供不同的模板作为主题的一部分。但是,我在从该代码内部访问 Beamer 的变量时遇到了一些问题。
\documentclass{beamer}
\usepackage{tikz}
\title{Example}
\let\oldframe\frame
\let\endoldframe\endframe
\renewenvironment{frame}
{\oldframe%
\begin{tikzpicture}[remember picture,overlay]%
{\node[draw,anchor=west,text width=.6\textwidth] at (1,0) {\insertframetitle};}%
\end{tikzpicture}}
{\endoldframe}
\begin{document}
\begin{frame}
\frametitle{My Title}
\end{frame}
\end{document}
这不会在文本框内产生任何文本。
但是,如果我用一些固定文本替换“\insertframetitle”,它就可以起作用。
为什么该变量在我的环境中不可用?
答案1
我认为此命令只能在 beamer 模板内部使用。无论如何,重新定义框架环境不是一个好主意。相反,请尝试使用 beamer 模板命令更改样式(您可能需要调整间距):
\setbeamercolor{frametitle}{fg=black}
\setbeamertemplate{frametitle}{
\vspace{4cm}
\begin{tikzpicture}[remember picture,overlay]%
{\node[draw,anchor=west,text width=.6\textwidth] at (1,0) {\normalsize \insertframetitle};}%
\end{tikzpicture}
}