
Das Tippen ist mühsam
\begin{theorem}
...
\end{theorem}
\begin{proof}
...
\end{proof}
beim Live-Texten eines Dokuments im Unterricht.
Wenn ich erkläre
\newcommmand{\theorem}[2]{\begin{theorem} {#1} \begin{proof} {#2} \end{proof} \end{theorem}}
Ich verstehe, dass das \theorem
bereits definiert ist.
Wenn ich es versuche
\renewcommmand{\theorem}[2]{\begin{theorem} {#1} \begin{proof} {#2} \end{proof} \end{theorem}}
Ich erhalte einen schwerwiegenden Fehler.
Gibt es eine Möglichkeit, zu vermeiden, dass ich die Wörter Anfang, Ende und Beweis mehrmals eintippen muss? Das ist wichtig, wenn ich im Unterricht Notizen live texte.
Antwort1
Sie können es tun mit
\newcommand{\thmpr}[2]{%
\begin{theorem}#1\end{theorem}%
\begin{proof}#2\end{proof}%
}
aber ich warne Sie, dass dies viel schlimmer ist: Sie müssen Klammern im Auge behalten, die am Ende sehr weit voneinander entfernt sein können.
Wenn Sie sich Unterrichtsnotizen machen, ist es viel einfacher, Folgendes zu taggen:
THEOREM\\
Whatever the guy at the blackboard is saying
PROOF\\
Something even more mysterious that I'll go through later
So können Sie beim Überarbeiten des Materials ganz einfach die erforderlichen Tags \begin
anbringen .\end
Das Problem ist, dass ein Makro für interne Zwecke \newtheorem{theorem}{Theorem}
definiert wird . LaTeX weigert sich daher, dies zu tun ; aber mit\theorem
\newcommand{\theorem}[2]{...}
\renewcommand{\theorem}[2]{\begin{theorem}...}
Sie definieren \theorem
in Bezug auf sich selbst und dies führt zu einer Endlosschleife.
Antwort2
Das Problem in Ihrer Definition ist, dass \begin{theorem}
implizit aufruft \theorem
. Deshalb erhalten Sie beim ersten Versuch einen „bereits definiert“-Fehler. (Die Umgebung ist letztendlich wirklich nur dieses Makro.) Beim zweiten Versuch rufen Sie Ihr Makro innerhalb desjenigen auf, das Sie neu definieren möchten. Daher landen Sie in einer Endlosschleife. Versuchen Sie, eine Version von zu speichern, \theorem
indem Sie sagen:
\let\oldtheorem\theorem
und dann sollte Ihr zweiter Versuch grundsätzlich funktionieren:
\documentclass{article}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\let\oldtheorem\theorem
\let\endoldtheorem\endtheorem
\renewcommand\theorem[2]{\begin{oldtheorem}#1\end{oldtheorem}\begin{proof}#2\end{proof}}
\begin{document}
\theorem{a theorem}{with proof}
\end{document}
Beachten Sie auch, dass die proof
Umgebung normalerweise nicht darin verschachtelt wird theorem
und die Gruppierung um die Argumente, d. h. „ {#1}
“, unnötig ist.