summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/minipage-marginpar
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/minipage-marginpar
Initial commit
Diffstat (limited to 'macros/latex/contrib/minipage-marginpar')
-rw-r--r--macros/latex/contrib/minipage-marginpar/README160
-rw-r--r--macros/latex/contrib/minipage-marginpar/minipage-marginpar.dtx379
-rw-r--r--macros/latex/contrib/minipage-marginpar/minipage-marginpar.ins68
-rw-r--r--macros/latex/contrib/minipage-marginpar/minipage-marginpar.pdfbin0 -> 197917 bytes
-rw-r--r--macros/latex/contrib/minipage-marginpar/minipage-marginpar.sty73
-rw-r--r--macros/latex/contrib/minipage-marginpar/mpgmpar.sty41
6 files changed, 721 insertions, 0 deletions
diff --git a/macros/latex/contrib/minipage-marginpar/README b/macros/latex/contrib/minipage-marginpar/README
new file mode 100644
index 0000000000..d946954f27
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/README
@@ -0,0 +1,160 @@
+[en]
+LaTeX-package 'minipage-marginpar' - allows \marginpars in minipages
+and other boxes
+
+Author: Paul Ebermann <Paul-Ebermann@gmx.de>
+License: LPPL 1.3b or later, maintained
+ (see http://www.latex-project.org/lppl/).
+
+All Documentation (other than this file) is in german.
+
+The typesetting of the documentation needs 'pauldoc' (from the
+same author).
+
+The package comes as .dtx + .ins.
+Run "latex minipage-marginpar.ins" to create the style file (and maybe put
+it to texmf/tex/latex/paul/, if your docstrip is configured
+accordingly), run (after that and maybe updating your TeX hash)
+"latex minipage-marginpar.dtx" to create the documentation.
+
+ Usage
+-------
+
+Put \usepackage{minipage-marginpar} in your document preamble.
+
+Then you can use the environment 'minipagewithmarginpars',
+which works like minipage (but default align ist 't'),
+in which \marginpar-commands are allowed, when the environment
+is not used inside another box.
+
+Example:
+
+ \begin{minipagewithmarginpars}{5cm}
+ Hello World. \marginpar{a margin note.}
+ \end{minipagewithmarginpars}
+
+You may want to create similar environments yourself,
+for example to have boxed minipages. For this you
+may use the internal commands \mpgmpar@savemarginpars
+(inside a group) and \mpgmpar@restoremarginpars (after
+this group, at a place where marginpars are allowed).
+
+Try this:
+
+ \makeatletter
+ \newbox\boxed@box
+ \newenvironment{boxedpage}[1]{%
+ \begin{lrbox}{\boxed@box}%
+ \begin{minipage}[t]{#1}
+ \mpgmpar@savemarginpars
+ }{%
+ \end{minipage}%
+ \end{lrbox}%
+ \mpgmpar@restoremarginpars
+ }%
+ \makeatother
+
+
+ This ist a \begin{boxedpage}{4cm} boxed page with
+ \marginpar{margin paragraphs}
+ \end{boxedpage}.
+
+Environments created this way may be nested, the marginpars
+then appear around the outest one.
+
+----------------
+[de]
+LaTeX-Paket 'minipage-marginpar' - Randnotizen auch in Minipages
+
+Autor: Paul Ebermann (Paul-Ebermann@gmx.de).
+Lizenz: LPPL 1.3b oder später, mit Maintenance-Status
+ "maintained". Siehe http://www.latex-project.org/lppl/.
+
+Geschrieben für den eigenen Gebrauch
+(-> http://www.math.hu-berlin.de/~ebermann/alg-script/),
+aber vielleicht ist es auch für andere von Nutzen.
+
+Zum Setzen der Dokumentation wird das Paket 'pauldoc'
+(vom selben Autor) benötigt.
+
+Das Paket kommt als .dtx + .ins.
+Mit "latex minipage-marginpar.ins" wird die .sty-Datei erstellt (und
+eventuell gleich nach texmf/tex/latex/paul/ installiert,
+wenn docstrip entsprechend eingerichtet ist), mit
+latex minipage-marginpar.dtx kann (danach und eventuell nach einer
+Aktualisierung der TeX-Dateidatenbank) die Dokumentation neu
+erstellt werden.
+
+Zur Verwendung siehe minipage-marginpar.pdf.
+----------------
+[eo]
+LaTeX-pakaĵo 'minipage-marginpar' - marĝenaj notoj ankau en
+ minipage-oj kaj aliaj boksoj.
+
+Aŭtoro: Paŭlo Ebermann (Paul-Ebermann@gmx.de).
+Licenzo: LPPL 1.3, 'maintained'
+ (-> http://www.latex-project.org/lppl/).
+
+Kreitaj por propra uzo, sed eble iom de ĝi ankaŭ
+uzeblas por aliaj.
+
+La dokumentaro (escepte tiu ĉi dosiero) estas nur en la germana
+lingvo.
+
+Por krei la dokumentadon vi krome bezonas 'pauldoc' (de la sama aŭtoro).
+
+La pakaĵo venas en .dtx + .ins.
+Voku "latex minipage-marginpar.ins" por krei la .sty-dosieron (kaj
+eble meti ĝin al texmf/tex/latex/paul/, se via docstrip estis
+konfigurita laŭe), voku "latex minipage-marginpar.dtx" por rekrei
+la dokumentaron.
+
+ Uzado
+-------
+
+Metu
+
+ \usepackage{minipage-marginpar}
+
+en la komencon de la dokumento (antaŭ \begin{document}).
+
+Poste vi povas uzi
+
+ \begin{minipagewithmarginnotes}
+ ...
+ \end{minipagewithmarginnotes}
+
+kaj en tiu ĉirkaŭo la ordono \marginpar{} estas uzebla, se la
+tuta aĵo ne estas ene de alia bokso.
+
+
+Por uzi \marginpar{} ankaŭ ene de aliaj boksoj, vi povos
+krei novajn versiojn de la boks-kreaj komandoj (aŭ ĉirkaŭoj),
+uzante la du ordonojn \mpgmpar@savemarginpars (ene de grupo)
+kaj \mpgmpar@restoremarginpars (post la fino de tiu grupo, kiam
+denove \marginpar{} estas uzebla).
+
+Jen ekzemplo (minipage kun kadro:)
+
+---
+ \makeatletter
+ \newbox\boxed@box
+ \newenvironment{boxedpage}[1]{%
+ \begin{lrbox}{\boxed@box}%
+ \begin{minipage}[t]{#1}
+ \mpgmpar@savemarginpars
+ }{%
+ \end{minipage}%
+ \end{lrbox}%
+ \mpgmpar@restoremarginpars
+ }%
+ \makeatother
+
+
+ Tio estas \begin{boxedpage}{4cm} kadrita paĝo kun \marginpar{marĝena noto}.
+ \end{boxedpage}
+---
+
+Tiaj ĉirkaŭojn eblas meti unu ene de alia, la marĝenaj notoj aperos
+apud la plej ekstera.
+
diff --git a/macros/latex/contrib/minipage-marginpar/minipage-marginpar.dtx b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.dtx
new file mode 100644
index 0000000000..1b49744c84
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.dtx
@@ -0,0 +1,379 @@
+% \iffalse meta-comment
+%
+%% (C) 2006 Paul Ebermann
+%%
+%% Package minipage-marginpar - Randnotizen auch in Minipages
+%%
+%% Die Datei minipage-marginpar.dtx sowie die dazugehrige
+%% minipage-marginpar.ins sowie die damit generierte
+%% minipage-marginpar.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% spter (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'maintained'.
+%%
+%% Das heit in etwa, die Dateien drfen frei vertrieben
+%% werden, bei nderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ndern.
+%%
+%
+% \fi
+%
+% \iffalse
+%
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+%<package>\ProvidesPackage{minipage-marginpar}
+%<mpgmpar>\ProvidesPackage{mpgmpar}
+%<*driver>
+\ProvidesFile{minipage-marginpar.dtx}
+%</driver>
+ [2008/04/07 v0.3
+%<package> Randnotizen auch in Minipages (PE)]
+%<mpgmpar> Kompatibilitaets-Datei fuer alte Dokumente (PE)]
+%<*driver>
+ Dokumentation fuer minipage-marginpar.]
+\documentclass[draft,ngerman]{ltxdoc}
+\usepackage{minipage-marginpar}
+\usepackage[final, pdfpagemode=None, pdfstartview=FitH, pdfpagelayout=OneColumn]{hyperref}
+\usepackage{pauldoc}
+\begin{document}
+ \DocInput{minipage-marginpar.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{51}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \DoNotIndex{\relax,\end,\begin,\endinput,\global,\let,\newcommand}
+% \DoNotIndex{\newenvironment,\renewcommand,\RequirePackage,\undefined}
+% \DoNotIndex{\@tempa}
+%
+% \changes{v0.0}{2006/05/20}{Erste Fassung}
+% \changes{v0.1}{2006/05/23}{Erste verffentlichte Fassung}
+% \changes{v0.3}{2008/04/07}{Neuer Name des Packages: \pack{minipage-marginpar}
+% statt \pack{minipage-marginpar}.}
+%
+% \GetFileInfo{minipage-marginpar.sty}
+%
+%
+% \title{Das \pack{minipage-marginpar}-Package -- Randnotizen auch in Minipages\thanks{%
+% Dieses Dokument gehrt zu \pack{minipage-marginpar}~\fileversion,
+% vom~\filedate.}}
+% \author{Paul Ebermann\thanks{\texttt{Paul-Ebermann@gmx.de}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% Innerhalb von Boxen wie etwa einer 'minipage'-Umgebung sind bekanntlich
+% '\marginpar'-Befehle nicht erlaubt -- dieses Package hat eine
+% (Teil"=)Lsung.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Einleitung}
+%
+% Innerhalb von Boxen wie etwa einer 'minipage'-Umgebung sind
+% '\marginpar'-Befehle nicht erlaubt, das heit, sie bewirken
+% nichts auer einer Fehlermeldung ("`Float(s) lost"').
+%
+% Das Paket \pack{marginnote}\footnote{auf CTAN unter
+% \texttt{macros/latex/contrib/marginnote/}} von Markus Kohm umgeht das,
+% indem nicht-gleitende Marginalien bereitgestellt werden.
+%
+% Dieses Paket verfolgt einen anderen Ansatz:
+% Es wird ein Mechanismus bereitgestellt, mit dem die '\marginpar'-Befehle
+% abgefangen und dann auerhalb dieser Box ausgefhrt werden knnen.
+%
+% \section{Benutzerdoku}
+%
+% \indent\DescribeEnv{minipagewithmarginpars}
+% Diese Umgebung funktioniert wie die 'minipage'-Umgebung aus dem \LaTeX-Kernel,
+% mit dem Unterschied, dass in ihr vorkommende '\marginpar'-Befehle erst am
+% Ende der Umgebung, nach der Minipage selbst, ausgefhrt werden.
+%
+%
+% Hier ein Beispiel:
+%
+% \begin{minipagewithmarginpars}{4cm}
+% Text am Anfang\marginpar{Bla}.
+%
+% \vspace{1.5cm}
+% Text am Ende\marginpar[links]{rechts}.
+% \end{minipagewithmarginpars}
+% \begin{minipage}[t]{7cm}\vspace{-1ex}
+%\begin{verbatim}
+%\begin{minipagewithmarginpars}{4cm}
+% Text am Anfang\marginpar{Bla}.
+%
+% \vspace{1.5cm}
+% Text am Ende\marginpar[links]{rechts}.
+%\end{minipagewithmarginpars}
+% \end{verbatim}
+% \end{minipage}
+%
+% Die Randnotizen werden in der durch die (hier zwei, der Code ist auch eine) Minipages
+% gebildeten Zeile abgesetzt -- dabei ist die Default-Ausrichtung hier '[t]' anstatt
+% '[c]'.
+%
+% \subsection{Probleme/Nachteile}
+% \begin{itemize}
+% \item Die Marginalien werden alle ab der selben Zeile (jeweils etwas
+% nach unten verschoben) gesetzt, nicht entsprechend der Zeile (in
+% der Minipage), in der der '\marginpar'-Befehl vorkam.
+%
+% Dies ist prinzipbedingt, ich habe keine Idee, was man dagegen
+% tun knnte. (Je nach Problem gibt \pack{marginnote} wohl bessere
+% Ergebnisse.)
+%
+% \item Wird die 'minipagewithmarginpars' innerhalb einer weiteren Box
+% verwendet (z.B. um noch einen Rahmen zu setzen), funktioniert es
+% weiterhin nicht, da ja dort ebenfalls keine '\marginpar's erlaubt sind.
+%
+% Hierfr gibt es eine Lsung -- die gesicherten '\marginpar's mssen
+% einfach erst nach der uersten Box (die hoffentlich in einer
+% horizontalen Liste ist) ausgefhrt werden. Dazu kann man sich analog
+% zu 'minipagewithmarginpars' eine entsprechende Umgebung definieren,
+% Details sind \ifReferenceExists{sec:minipagewithmarginpars}{in Abschnitt
+% \ref{sec:minipagewithmarginpars} im Implementations-Teil}{in der
+% Implementations"=Beschreibung des Paketes} nachzulesen.
+%
+% \item Befinden sich die '\marginpar'-Befehle innerhalb einer der
+% AMS-Mathe-Umgebungen (wie etwa 'align', 'gather' und ihre
+% '*'-Varianten), so kann es vorkommen, dass die Marginalien doppelt
+% auftauchen.
+% Dies liegt daran, dass diese Umgebungen ihren Inhalt mehrfach
+% auswerten -- und jedesmal wird dann der Inhalt gespeichert.
+% Dieses Problem betrifft auch andere Makros, die hnlich vorgehen.
+%
+% Ich halte dies fr einen Bug (in \pack{minipage-marginpar}), habe
+% aber noch keine Idee, was ich dagegen tun knnte. Wer eine Idee hat,
+% immer her damit.
+%
+% \end{itemize}
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \section{Implementation}
+%
+% \subsection{Rckwrtskompatibilitts-Datei}
+% CTAN hat ja inzwischen seine 8-Buchstaben-pro-Dateiname-Regel aufgehoben.
+% Genauer, sie wurde zwischen meinem ersten Versuch, ein (anderes) Paket
+% mit zu langem Dateinamen hochzuladen, und dem ersten Hochladen dieses
+% Paketes gendert, so dass ich dieses Package noch \pack{mpgmpar} genannt
+% habe, es bei CTAN dann aber in einem Verzeichnis 'minipage-marginpar'
+% gelandet ist, und auch unter diesem Namen im \href{http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=minipage-marginpar}{CTAN-Katalog} zu finden
+% ist. Fr Version 0.3 habe ich mich daher entschieden, auch meine
+% Package-Dateien entsprechend zu benennen. Hier aber noch fr die
+% Rckwrtskompatibilitt eine passende 'mpgmpar.sty':
+% \begin{macrocode}
+%<*mpgmpar>
+\RequirePackage{minipage-marginpar}
+%</mpgmpar>
+% \end{macrocode}
+%
+% Und jetzt geht das eigentliche Package los.
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \subsection{Vorbereitungen}
+% \changes{v0.2}{2006/07/27}{\pack{ifthen} wird nicht mehr bentigt.}
+%
+% \begin{macro}{\mpgmpar@savedmargins}
+% Dieses Makro ist einfach nur ein "`Behlter"' fr die aufgesparten
+% '\marginpar'-Befehle. Wir definieren es hier (leer) mittels '\newcommand',
+% um bei Konflikten eine Fehlermeldung zu erhalten.
+% \begin{macrocode}
+\newcommand*{\mpgmpar@savedmargins}{}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mpgmpar@dummy}
+% Diese Kontrollsequenz wird nur verwendet, um einen nicht vorhandenen
+% Parameter erkennen zu knnen. (Wir definieren es zunchst als Makro,
+% um Konflikte zu erkennen, lassen es nachher aber gleich '\relax' sein.)
+% \begin{macrocode}
+\newcommand*{\mpgmpar@dummy}{}%
+\let \mpgmpar@dummy = \relax
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Interne Kommandos}
+%
+% Unsere beiden Makros '\mpgmpar@savemarginpars' (am Anfang eines Bereiches) und
+% '\mpgmpar@restoremarginpars' (am Ende)
+% machen die eigentliche Arbeit und knnen auch fr die Definition eigener
+% \emph{Box-Making}-Umgebungen verwendet werden, fr eine Anleitung dafr
+% siehe Abschnitt \ref{sec:minipagewithmarginpars}.
+%
+% \begin{macro}{\mpgmpar@savemarginpars}
+% Dieses Makro leitet einen Bereich ein, in dem '\marginpar's aufgespart werden
+% (er geht bis zum Ende der aktuellen Gruppe).
+% \begin{macrocode}
+\newcommand*{\mpgmpar@savemarginpars}{%
+% \end{macrocode}
+% Wir definieren '\marginpar' neu.
+% \begin{macro}{\marginpar}
+% Es hat wie das Original-'\marginpar' einen
+% optionalen und einen verpflichtenden Parameter. (Um den Fall, dass der optionale
+% Parameter angegeben wurde, von dem Fall der Nichtangabe zu unterscheiden,
+% nehmen wir als Default '\mpgmpar@dummy' und vergleichen nachher damit.)
+% \begin{macrocode}
+ \renewcommand*{\marginpar}[2][\mpgmpar@dummy]%
+ {%
+% \end{macrocode}
+% Das '\@bsphack' und das dazugehrige '\@esphack' am Ende
+% sind Kernel"=Kommandos, welche (zusammen) dafr sorgen, dass
+% an der Stelle der Verwendung keine Spur des
+% '\marginpar'-Aufrufs bleibt.
+% \begin{macrocode}
+ \@bsphack
+% \end{macrocode}
+% \changes{v0.2}{2006/07/26}{Vergleich jetzt mit \cs{ifx} statt \cs{ifthenelse}.}
+% Jetzt der Vergleich \ldots{} bis zu Version 0.1 hatte ich
+% den mit
+%\begin{verbatim}
+% \ifthenelse{\equal{\mpgmpar@dummy}{##1}}{...
+%\end{verbatim}
+% aus \pack{ifthen} gemacht, aber das hatte Nebenwirkungen (da fr
+% den Vergleich '##1' expandiert wurde). Daher direkt mit '\ifx'. In
+% Version 0.2 war dieser '\ifx'-Vergleich kaputt (ergab immer false),
+% wodurch '\marginpar{bla}' nur auf rechten Seiten gedruckt wurde.
+% Jetzt (0.3) sollte es gehen.
+% \changes{v0.3}{2008/04/07}{Fehler im Vergleich gefunden, jetzt korrigiert durch weitere Indirektion beim Vergleich.}
+% \begin{macrocode}
+ \def\temp@a{##1}%
+ \def\temp@b{\mpgmpar@dummy}%
+ \ifx\temp@b\temp@a%
+% \end{macrocode}
+% Dann kopieren wir (global) einfach den '\marginpar'-Aufruf an das Ende unseres
+% "`Speicher-Makros"' '\mpgmpar@savedmargins'.
+% \begin{macrocode}
+ \g@addto@macro{\mpgmpar@savedmargins}{%
+ \marginpar{##2}}%
+ \else%
+ \g@addto@macro{\mpgmpar@savedmargins}{%
+ \marginpar[{##1}]{##2}}%
+ \fi%
+ \@ignorefalse
+ \@esphack
+ }%
+}%
+% \end{macrocode}
+% Das '\@bsphack'-'\@esphack'-Paar ist hier vorhanden, damit sich unser
+% modifiziertes '\marginpar' bezglich umrundender Leerzeichen o..
+% genauso verhlt wie das Original-'\marginpar'.
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\mpgmpar@restoremarginpars}
+% Dieses Makro fhrt die gespeicherten '\marginpar'-Befehle
+% aus und leert dann die Liste.
+% \begin{macrocode}
+\newcommand*{\mpgmpar@restoremarginpars}{%
+% \end{macrocode}
+% Zuerst merken wir uns die Liste im Makro '\@tempa' (das ist
+% fr derartige Sachen gedacht), dann lschen wir (global)
+% '\mpgmpar@savedmargins'.
+% \begin{macrocode}
+ \let \@tempa = \mpgmpar@savedmargins
+ \global\let \mpgmpar@savedmargins = \@empty
+% \end{macrocode}
+% Die eben kopierte Liste fhren wir nun aus (falls wir
+% jetzt noch in einer ueren Umgebung mit unserem
+% Spezial-'\marginpar' sind, wird die Liste dadurch neu angelegt,
+% andernfalls werden die Randnotizen ausgegeben), und
+% lschen dann die Kopie.
+% \begin{macrocode}
+ \@tempa
+ \let \@tempa = \undefined
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Neue \texttt{minipage}-Umgebung}\label{sec:minipagewithmarginpars}
+%
+% Diese Umgebung dient als Beispiel fr die Erstellung derartiger
+% Umgebungen mit Hilfe von '\mpgmpar@savemarginpars' und '\mpgmpar@restoremarginpars'.
+% Das Wesentliche dabei ist: '\mpgmpar@savemarginpars' sollte innerhalb einer
+% Gruppe aufgerufen werden (meist nahe am Anfang), '\mpgmpar@restoremarginpars'
+% nach dem Ende dieser Gruppe (an der Stelle, wo die Randnotizen erscheinen sollen).
+%
+% \begin{quotation}\small
+% Mit etwas Eigenarbeit drfte es auch ohne eine (weitere) Gruppe klappen. Dafr
+% muss man am Anfang '\marginpar' mit '\let' sichern und am Ende wiederherstellen:
+%\begin{verbatim}
+% \let \savedmarginpar = \marginpar
+% \mpgmpar@savemarginpars
+% ...
+% \let \marginpar = \savedmarginpar
+% \mpgmpar@restoremarginpars
+%\end{verbatim}
+% Das ist aber nicht von mir getestet, also ohne Garantie. Und es ist eher nicht
+% robust gegenber Verschachtelungen derartiger Konstrukte.
+% \end{quotation}
+%
+% \begin{environment}{minipagewithmarginpars}
+% Hier nun unserer neue Minipage-Umgebung. Sie hat einen optionalen
+% (vertikale Ausrichtung~-- Default ist 't') und einen verpflichtenden (Breite) Parameter.
+% \begin{macrocode}
+\newenvironment*{minipagewithmarginpars}[2][t]{%
+% \end{macrocode}
+% Die Implementation ist einfach: Wir beginnen zunchst
+% die Original-'minipage'-Umgebung (mit den selben Parametern)
+% und innerhalb davon rufen wir unser Makro '\mpgmpar@savemarginpars' auf.
+% \begin{macrocode}
+ \begin{minipage}[#1]{#2}%
+ \mpgmpar@savemarginpars
+} {%
+% \end{macrocode}
+% Am Ende beenden wir zunchst die Minipage (wodurch '\marginpar' seine
+% Original-Bedeutung wiedererlangt), und rufen dann
+% '\mpgmpar@restoremarginpars' auf.
+% \begin{macrocode}
+ \end{minipage}%
+ \mpgmpar@restoremarginpars
+}%
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Ende}
+% ...
+% Das war es.
+% \begin{macrocode}
+\endinput
+%</package>
+% \end{macrocode}
+%
+% \Finale
+%\endinput
+
+
+%%% Folgendes ist nur fr meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/minipage-marginpar/minipage-marginpar.ins b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.ins
new file mode 100644
index 0000000000..8692b37856
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.ins
@@ -0,0 +1,68 @@
+%%
+%% (C) 2002-2006, 2008 Paul Ebermann -
+%% Installationsdatei zu minipage-marginpar.dtx
+%%
+%% Der vollstndige Urheberrechtshinweis befindet sich
+%% am Begin von mpgmpar.dtx.
+%%
+%% Ich gebe keine Garantie irgendeiner Art.
+%%
+
+\input docstrip.tex
+\usedir{tex/latex/paul}
+
+\Msg{**********************************************************}
+\Msg{* Ich werde Dateien in \showdirectory{tex/latex/paul} }
+\Msg{* installieren. Bitte stellen Sie sicher, }
+\Msg{* dass dieses Verzeichnis vorhanden ist. }
+\Msg{* }
+
+%% der folgende Text wird in jeder generierten
+%% Datei am Anfang eingefgt.
+\preamble
+
+ ,--------------------------------------------------.
+ | Das ist eine generierte Datei. |
+ | |
+ | (c) 2002- 2008 Paul Ebermann. |
+ '--------------------------------------------------'
+
+\endpreamble
+
+
+\generate{%
+ \file{minipage-marginpar.sty}{\from{minipage-marginpar.dtx}{package}}%
+ \file{mpgmpar.sty}{\from{minipage-marginpar.dtx}{mpgmpar}}
+}
+
+\Msg{#######################}
+\Msg{# }
+\Msg{# Um die Installation zu beenden, }
+\Msg{# mssen Sie die folgenden Dateien }
+\Msg{# in Ihrem TeX-Suchbaum unterbringen: }
+\Msg{# }
+\Msg{# minipage-marginpar.sty }
+\Msg{# }
+\Msg{# (Fr Rckwrtskompatibilitt mit }
+\Msg{# Versionen vor 0.3 zustzlich: }
+\Msg{# mpgmpar.sty) }
+\Msg{# }
+\Msg{# Um eine Dokumentation zu erzeugen, }
+\Msg{# benutzen Sie }
+\Msg{# }
+\Msg{# latex minipage-marginpar.dtx }
+\Msg{# }
+\Msg{# Viel Spa }
+\Msg{# Paul Ebermann }
+\Msg{# }
+\Msg{#######################}
+
+\endbatchfile
+
+
+%%% Folgendes ist nur fr meinen Editor.
+%%%
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/minipage-marginpar/minipage-marginpar.pdf b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.pdf
new file mode 100644
index 0000000000..641bbc151b
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.pdf
Binary files differ
diff --git a/macros/latex/contrib/minipage-marginpar/minipage-marginpar.sty b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.sty
new file mode 100644
index 0000000000..38c702fadb
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/minipage-marginpar.sty
@@ -0,0 +1,73 @@
+%%
+%% This is file `minipage-marginpar.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% minipage-marginpar.dtx (with options: `package')
+%%
+%% ,--------------------------------------------------.
+%% | Das ist eine generierte Datei. |
+%% | |
+%% | (c) 2002- 2008 Paul Ebermann. |
+%% '--------------------------------------------------'
+%%
+%% (C) 2006 Paul Ebermann
+%%
+%% Package minipage-marginpar - Randnotizen auch in Minipages
+%%
+%% Die Datei minipage-marginpar.dtx sowie die dazugehrige
+%% minipage-marginpar.ins sowie die damit generierte
+%% minipage-marginpar.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% spter (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'maintained'.
+%%
+%% Das heit in etwa, die Dateien drfen frei vertrieben
+%% werden, bei nderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ndern.
+%%
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+\ProvidesPackage{minipage-marginpar}
+ [2008/04/07 v0.3
+ Randnotizen auch in Minipages (PE)]
+\newcommand*{\mpgmpar@savedmargins}{}%
+\newcommand*{\mpgmpar@dummy}{}%
+\let \mpgmpar@dummy = \relax
+\newcommand*{\mpgmpar@savemarginpars}{%
+ \renewcommand*{\marginpar}[2][\mpgmpar@dummy]%
+ {%
+ \@bsphack
+ \def\temp@a{##1}%
+ \def\temp@b{\mpgmpar@dummy}%
+ \ifx\temp@b\temp@a%
+ \g@addto@macro{\mpgmpar@savedmargins}{%
+ \marginpar{##2}}%
+ \else%
+ \g@addto@macro{\mpgmpar@savedmargins}{%
+ \marginpar[{##1}]{##2}}%
+ \fi%
+ \@ignorefalse
+ \@esphack
+ }%
+}%
+\newcommand*{\mpgmpar@restoremarginpars}{%
+ \let \@tempa = \mpgmpar@savedmargins
+ \global\let \mpgmpar@savedmargins = \@empty
+ \@tempa
+ \let \@tempa = \undefined
+}%
+\newenvironment*{minipagewithmarginpars}[2][t]{%
+ \begin{minipage}[#1]{#2}%
+ \mpgmpar@savemarginpars
+} {%
+ \end{minipage}%
+ \mpgmpar@restoremarginpars
+}%
+\endinput
+%%
+%% End of file `minipage-marginpar.sty'.
diff --git a/macros/latex/contrib/minipage-marginpar/mpgmpar.sty b/macros/latex/contrib/minipage-marginpar/mpgmpar.sty
new file mode 100644
index 0000000000..ecea5eb448
--- /dev/null
+++ b/macros/latex/contrib/minipage-marginpar/mpgmpar.sty
@@ -0,0 +1,41 @@
+%%
+%% This is file `mpgmpar.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% minipage-marginpar.dtx (with options: `mpgmpar')
+%%
+%% ,--------------------------------------------------.
+%% | Das ist eine generierte Datei. |
+%% | |
+%% | (c) 2002- 2008 Paul Ebermann. |
+%% '--------------------------------------------------'
+%%
+%% (C) 2006 Paul Ebermann
+%%
+%% Package minipage-marginpar - Randnotizen auch in Minipages
+%%
+%% Die Datei minipage-marginpar.dtx sowie die dazugehrige
+%% minipage-marginpar.ins sowie die damit generierte
+%% minipage-marginpar.sty stehen unter der
+%% "LaTeX Project Public License" (LPPL, zu finden
+%% unter http://www.latex-project.org/lppl/, sowie
+%% auch in den meisten TeX-Distributionen in
+%% texmf/docs/latex/base/lppl*.txt), Version 1.3b oder
+%% spter (nach Wahl des Verwenders).
+%%
+%% Der 'maintenance-status' ist (zur Zeit) 'maintained'.
+%%
+%% Das heit in etwa, die Dateien drfen frei vertrieben
+%% werden, bei nderungen (durch andere Personen als Paul Ebermann)
+%% ist aber der Name der Datei zu ndern.
+%%
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+\ProvidesPackage{mpgmpar}
+ [2008/04/07 v0.3
+ Kompatibilitaets-Datei fuer alte Dokumente (PE)]
+\RequirePackage{minipage-marginpar}
+\endinput
+%%
+%% End of file `mpgmpar.sty'.