我可以重新定义环境吗?

我可以重新定义环境吗?

我想frame这样重新定义:

\renewenvironment{frame}{
    \begin{frame}{\bfseries{\sectiontitle}}
}{
    \end{frame}
}

然后我可以:

\section{My section}

\begin{frame}
    \begin{itemize}
        this section
    \end{itemize}
\end{frame}

但它会产生一个错误:

! TeX capacity exceeded, sorry [input stack size=5000].
\str_if_eq:nnTF ...\__str_if_eq:nn {\exp_not:n {#1
                                                  }}{\exp_not:n {#2}}=0\exp_...
l.49 \begin{frame}

No pages of output.

答案1

来自第 60 页的示例beameruserguide

\documentclass{beamer}

\newenvironment{slide}
{\begin{frame}[environment=slide]
    \frametitle{\insertsection}}
{\end{frame}}

\begin{document}

\section{First section}

\begin{slide}
Text
\end{slide}

\begin{slide}
\framesubtitle{another slide}
Text text
\end{slide}

\end{document}

在此处输入图片描述

答案2

我认为实现你想要做的事情的最简单的方法是假设你想要使用不同的环境名称,则根本不要使用 frametitle,而只使用标题,您可以随附添加/重新定义标题\setbeamertemplate\insertsection除非您已经将标题用于其他内容(在这种情况下您可以添加它)。

\documentclass{beamer}

\setbeamertemplate{headline}{%
\vspace*{1cm}\hspace*{1cm}\Large\textcolor{blue}{\textbf{\insertsection}}%
}

\begin{document}

\section{First section}

\begin{frame}
This slide is in the first section.
\end{frame}
\section{Second section}

\begin{frame}
Now in second section.
\end{frame}

\begin{frame}
Still in second section.
\end{frame}

\end{document}

beamer-headline 示例

相关内容