这里有一份 MWE 可以说明这个问题。
\documentclass{beamer}
\defbeamertemplate{frametitle}{weird}{%
\insertframetitle\par%
\rule{\textwidth}{4pt}%
\flushright%
\insertframesubtitle\par%
}
\setbeamertemplate{frametitle}[weird]
\begin{document}
\begin{frame}
\frametitle{Here is the title}
%\framesubtitle{Here is the subtitle}
Here is the text
\pause
Here is more text
\end{frame}
\end{document}
此代码失败并显示:
! LaTeX Error: Something's wrong--perhaps a missing \item.
注释掉\pause
或\flushright
或取消注释\framesubtitle
可以进行编译。[注释掉\pause
会导致最后出现虚假的空白页。]
所以我猜想这是字幕为空时出现的“错误模式”问题。但我还不太清楚如何修复它。有什么线索吗?或者有什么提示可以尝试修复它吗?
答案1
使用这两个宏而不是使用 的参数有什么意义frame
?这有效:
\begin{frame}{Here is the title}{Here is the subtitle}
您还应该检查是否存在字幕:
\documentclass{beamer}
\makeatletter
\defbeamertemplate{frametitle}{weird}{%
\insertframetitle\par%
\rule{\textwidth}{4pt}%
\ifx\insertframesubtitle\@empty\else
\flushright%
\insertframesubtitle\par\fi}
\makeatother
\setbeamertemplate{frametitle}[weird]
\begin{document}
\begin{frame}{Here is the title}{}
Here is the text
\pause
Here is more text
\end{frame}
\end{document}