Makro für die Theorem-Umgebung

Makro für die Theorem-Umgebung

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 \theorembereits 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 \beginanbringen .\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 \theoremin 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, \theoremindem 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 proofUmgebung normalerweise nicht darin verschachtelt wird theoremund die Gruppierung um die Argumente, d. h. „ {#1}“, unnötig ist.

verwandte Informationen