考虑以下(希望是)最少的代码:
\documentclass{beamer}
\PassOptionsToPackage{ngerman}{babel}
\PassOptionsToPackage{thmmarks}{ntheorem}
\makeatletter
\let\th@plain\relax
\let\openbox\relax
\let\proofname\relax
\let\proof\relax
\let\endproof\relax
\def\@ptsize{0}
\makeatother
\usepackage{
amsfonts,
amsmath,
amssymb,
%amsthm,
ntheorem, %% ich MUSS ntheorem laden, da ich \newtheorem brauche
tikz,
}
\usetheme{Frankfurt}
\useinnertheme{circles}
\usecolortheme{whale}
\begin{document}
\begin{frame}[t]{Folie I.}
\begin{block}{Block I}
\begin{itemize}
\item Hier ein \alert{Alert Befehl} --- seht ihr! Es klappt.
\end{itemize}
\end{block}
\begin{block}{Block II}
\begin{itemize}
\item<alert@1>
Hier ein Alert Befehl mit \alert{at-Zeichen}
--- warum, sobald ich ntheorem lade, funktioniert es auf einmal nicht??
\end{itemize}
\end{block}
\end{frame}
\end{document}
一旦我加载ntheorem
类似的命令<alert@1>
就会导致错误:
LaTeX Error: \begin{altenv} on input line 43 ended by \end{itemize}
则}。
我该如何规避这些?这是不可避免的吗?我确实需要ntheorem
而不是amstheorem
,因为我有大量形式为 的命令\newtheorem{…}
。
我唯一的想法是尝试找到使用<alert@>
类似命令的替代方法。但我真的很想能够使用通常的 beamer 命令。
更新:我意识到,一个能使用\newtheorem
。amsthm
只是不能设置\theoremstyle
等。 但我想这不是什么大问题。
答案1
你不需要该ntheorem
包就可以使用\newtheorem
。Beamer 将定理定制为类似积木的东西,例如
\newtheorem{observation}[theorem]{Observation}
开箱即用。
\documentclass{beamer}
\makeatletter
\let\th@plain\relax
\let\openbox\relax
\let\proofname\relax
\let\proof\relax
\let\endproof\relax
\def\@ptsize{0}
\makeatother
\newtheorem{observation}[theorem]{Observation}
\usetheme{Frankfurt}
\useinnertheme{circles}
\usecolortheme{whale}
\begin{document}
\begin{frame}[t]{Folie I.}
\begin{block}{Block I}
\begin{itemize}
\item Hier ein \alert{Alert Befehl} --- seht ihr! Es klappt.
\end{itemize}
\end{block}
\begin{block}{Block II}
\begin{itemize}
\item<alert@1>
Hier ein Alert Befehl mit \alert{at-Zeichen}
--- warum, sobald ich ntheorem lade, funktioniert es auf einmal nicht??
\end{itemize}
\end{block}
\begin{observation}
bla bla
\end{observation}
\end{frame}
\end{document}