Theorem und Definitionsname im Rand

Theorem und Definitionsname im Rand

Ich möchte, dass die Theoremnamen am Rand erscheinen. Ich habe versucht, dies über die Randnotizen zu erreichen, aber das ist mir nicht gelungen.

Hier ist ein Bild von dem, was ich versuche zu tun. Die obere Zeile zeigt, wie die Theorem-Umgebung standardmäßig funktioniert, darunter steht, was ich möchte. Bildbeschreibung hier eingeben

Hier ist, was ich versucht habe, obwohl ich zugeben muss, dass ich nicht wirklich verstehe, wie man so etwas macht

 \newenivorment{margintheorem}[#2]{
 \begin{theorem}[\marginnote{#2}]

 \end{theorem}
 }

Antwort1

Sie können die theoremUmgebung indirekt definieren:

\documentclass{article}
\usepackage{amsthm,marginnote,xparse}

\newtheorem{theoreminner}{Theorem}
\NewDocumentEnvironment{theorem}{o}
 {\theoreminner\IfValueT{#1}{\marginnote{\normalfont\footnotesize#1}}}
 {\endtheoreminner}

\reversemarginpar

\begin{document}

\begin{theorem}
This theorem has no attribution.
\end{theorem}

\begin{theorem}[theorem name]
This theorem has a name.
\end{theorem}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

In Ihrer Frage fehlen einige wichtige Details. Insbesondere geben Sie nicht an, ob Sie ein bestimmtes Paket verwenden, um Ihre „theoremähnlichen“ Umgebungen zu definieren. Ich gehe davon aus, dass Sie verwenden amsthm.

Die folgende Lösung greift direkt in amsthmdie Definition des \@begintheoremBefehls ein und ist daher automatisch auf alle Arten von „theoremähnlichen“ Umgebungen (Propositionen, Lemmata, Definitionen usw.) anwendbar. Sie basiert auf der Verwendung des \marginparBefehls aus dem LaTeX-Kernel: Dies macht die Dinge etwas komplizierter, da dieser Befehl „im äußeren Absatzmodus“ ausgegeben werden muss. Tatsächlich habe ich den Code genau mit der Absicht geschrieben, zu zeigen, dass eine auf dem ursprünglichen \marginparBefehl basierende Lösung möglich ist.

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

% \usepackage{amsmath} % not essential, but you probably want it too
\usepackage{amsthm}
\usepackage{etoolbox} % for "\patchcmd"/"\pretocmd"



%%%%%%%% BEGIN WIZARDRY %%%%%%%%

\makeatletter

\wlog{****************************************}
\patchcmd{\@begintheorem}{% search for:
    \@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
    \thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
}{% replace with:
    \let\thmnote\@gobble
    \thm@swap\swappedhead\thmhead{#1}{#2}{}%
}{% execute if succeeded:
    \wlog{>>> 1st patch succeeded.}
}{% execute if failed:
    \wlog{>>> 1st patch FAILED!}
}
\pretocmd{\@begintheorem}{% prepended code:
    \@ifnotempty{#3}{\def\@thm@marginal@note@text{#3}}%
}{% execute if succeeded:
    \wlog{>>> 2nd patch succeeded.}
}{% execute if failed:
    \wlog{>>> 2nd patch FAILED!}
}
\wlog{****************************************}

\newcommand*\@thm@marginal@note@text{}
\newcommand*\@thm@marginal@note@helper{%
    \begingroup \setbox\z@ \lastbox \endgroup
    \marginnote{\@thm@marginal@note@text}%
}
\dth@everypar = \expandafter {%
    \expandafter \@thm@marginal@note@helper
    \the \dth@everypar
}

\makeatother

%%%%%%%%  END WIZARDRY  %%%%%%%%



\newcommand*{\marginnote}[1]{%
    \marginpar
        [\footnotesize\raggedleft  #1]%
        {\footnotesize\raggedright #1}%
}
\reversemarginpar % ?

\newtheorem{theorem}{Theorem}
\newtheorem{lemma}  {Lemma}
\theoremstyle{definition}
\newtheorem{defin}{Definition}



\begin{document}

This text comes before the first definition.

\begin{defin}[Important definition]
    A definition is \textbf{important} if and only if it is not
    unimportant.
\end{defin}

And, of course:

\begin{defin}
    An \textbf{unimportant} definition is one that is not important.
\end{defin}

Now a theorem:

\begin{theorem}[Important Theorem]
    All theorems are important, but some theorems are more important 
    than others.
\end{theorem}

The proof rests on the following

\begin{lemma}[Important lemma]
    Not all theorems (or lemmas) are equally important.
\end{lemma}

An unimportant theorem:

\begin{theorem}
    Blah blah blah\ldots
\end{theorem}

And an unimportant lemma:

\begin{lemma}
    Blah blah blah\ldots
\end{lemma}

Here is a little more text.

\end{document}

Beachten Sie den altmodischen „Vintage“-Code und seine Verwendung von \expandafter… ;-)

Die Ausgabe:

Ausgabe des Codes

verwandte Informationen