summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/mdframed
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-18 18:05:20 +0000
committerKarl Berry <karl@freefriends.org>2010-04-18 18:05:20 +0000
commit37f1831f5559f99501eb0123e22795ae5300650b (patch)
treee6553a1abced92a0d91df26466c16f087ab60c6c /Master/texmf-dist/tex/latex/mdframed
parentb26ee2030e017af00dee74ea37ca13189caa593c (diff)
new latex package mdframed 0.3 (16apr10)
git-svn-id: svn://tug.org/texlive/trunk@17904 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mdframed')
-rw-r--r--Master/texmf-dist/tex/latex/mdframed/mdframed.sty661
1 files changed, 661 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/mdframed/mdframed.sty b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty
new file mode 100644
index 00000000000..3d3da715f4b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty
@@ -0,0 +1,661 @@
+%%==================================================%%
+%%========It based on the idea of framed.sty========%%
+%%==================================================%%
+%%===== Currently the packge has a beta-Status =====%%
+%%==================================================%%
+%% WITH THANKS TO (alphabetically):
+%% ROLF NIEPRASCHK
+%% HEIKO OBERDIEK
+%% HERBERT VOSS
+
+%% Copyright (c) 2010 Marco Daniel
+%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%%
+%%==================================================%%
+%% Erstellung eines Rahmens, der am Seitenende keine
+%% horizontale Linie einfuegt
+%%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%%
+%% _______________ %%
+%% | page 1 | %%
+%% | Text | %%
+%% | __Text__ | %%
+%% | | Text | | %%
+%% P A G E B R E A K %%
+%% | | Text | | %%
+%% | |_Text_| | %%
+%% | Text | %%
+%% |____page 2___| %%
+%% %%
+%%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%%
+
+%% Allgemeine Angaben
+\def\mdframedpackagename{mdframed}
+\def\md@PackageWarning#1{\PackageWarning{\mdframedpackagename}{#1}}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mdframed}[2010/04/16 v0.3: mdframed]
+
+%%==================================================%%
+%%=============== Benoetigte Pakete ================%%
+%%==================================================%%
+\IfFileExists{kvoptions.sty}{%
+ \RequirePackage{kvoptions}
+ \SetupKeyvalOptions{family=mdf,prefix=mdf@}
+ }{%
+ \md@PackageWarning{The package kvoptions.sty does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+\IfFileExists{picture.sty}{%
+ \RequirePackage[etex]{picture}
+ }{%
+ \md@PackageWarning{The package picture does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+\IfFileExists{calc.sty}{%
+ \RequirePackage{calc}
+ }{%
+ \md@PackageWarning{The package calc does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+\IfFileExists{color.sty}{%
+ \RequirePackage{color}
+ }{%
+ \md@PackageWarning{The package color does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+%%==================================================%%
+%%=============== Globale Optionen ================%%
+%%==================================================%%
+\DeclareStringOption[2pt]{linewidth}
+\DeclareStringOption[black]{linecolor}
+\DeclareStringOption[white]{backgroundcolor}
+\DeclareStringOption[black]{fontcolor}
+\DeclareStringOption[20pt]{margin}
+\DeclareStringOption[\z@]{skipabove}
+\DeclareStringOption[\z@]{skipbelow}
+\DeclareStringOption[none]{xcolor}
+
+\ProcessKeyvalOptions*
+
+%%==================================================%%
+%%========Sicherstellen der key-value-Syntax========%%
+%%================ HIER DER GLOABEL ================%%
+%%==================================================%%
+\AtBeginDocument{
+ \@ifpackageloaded{xcolor}{%
+ \let\mdf@xcolor\@empty %ignoriere die Eingabe der Optionen
+ }{%
+ \def\@tempa{none}
+ \ifx\mdf@xcolor\@tempa
+ \else
+ \PassOptionsToPackage{\mdf@xcolor}{xcolor}
+ \RequirePackage{xcolor}
+ \fi
+ }
+}
+
+
+\newcommand*\mdf@get@linewidth[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@linewidth{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@linewidth
+}
+\picture@redefine\mdf@get@linewidth{&1}
+\begingroup
+ \mdf@get@linewidth{\mdf@linewidth}
+ \global\edef\mdf@linewidth{\the\@tempdima}
+\endgroup
+
+
+
+\newcommand*\mdf@get@margin[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@margin{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@margin
+}
+\picture@redefine\mdf@get@margin{&1}
+\begingroup
+ \mdf@get@margin{\mdf@margin}
+ \global\edef\mdf@margin{\the\@tempdima}
+\endgroup
+
+
+\newcommand*\mdf@get@skipabove[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@skipabove{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@skipabove
+}
+\picture@redefine\mdf@get@skipabove{&1}
+\begingroup
+ \mdf@get@skipabove{\mdf@skipabove}
+ \global\edef\mdf@skipabove{\the\@tempdima}
+\endgroup
+
+
+\newcommand*\mdf@get@skipbelow[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@skipbelow{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@skipbelow
+}
+\picture@redefine\mdf@get@skipbelow{&1}
+\begingroup
+ \mdf@get@skipbelow{\mdf@skipbelow}
+ \global\edef\mdf@skipbelow{\the\@tempdima}
+\endgroup
+
+%%==================================================%%
+%%========Sicherstellen der key-value-Syntax========%%
+%%================ HIER DIE LOKALEN ================%%
+%%==================================================%%
+
+\define@key{mdframed}{linecolor}[\mdf@linecolor]{%
+ \def\md@@linecolor{\color{#1}}
+}
+
+
+\define@key{mdframed}{backgroundcolor}[\mdf@backgroundcolor]{%
+ \mdbackgroundcolor{#1}
+}
+
+\define@key{mdframed}{fontcolor}[\mdf@fontcolor]{%
+ \mdfontcolor{#1}
+ \def\md@@fontcolor{\color{#1}}
+}
+
+\newcommand*\md@linewidth{}
+\define@key{mdframed}{linewidth}[2pt]{%
+ \md@get@linewidth{#1}
+ \edef\md@linewidth{\the\@tempdima}
+ \md@framed@linewidth\md@linewidth
+}
+\newcommand*\md@get@linewidth[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\md@GET@linewidth{\endgroup\@tempdima=\the\@tempdima}%
+ \md@GET@linewidth
+}
+\picture@redefine\md@get@linewidth{&1}
+
+
+
+\newcommand*\md@margin{}
+\define@key{mdframed}{margin}[10pt]{%
+ \md@get@margin{#1}
+ \edef\md@margin{\the\@tempdima}
+ \md@framed@margin\md@margin
+}
+\newcommand*\md@get@margin[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\md@GET@margin{\endgroup\@tempdima=\the\@tempdima}%
+ \md@GET@margin
+}
+\picture@redefine\md@get@margin{&1}
+
+
+
+
+%%==================================================%%
+%%==Deklaration diverser Eingabe und Hilfsparameter=%%
+%%==================================================%%
+
+\newskip\md@framed@margin \md@framed@margin\mdf@margin %% Abstand |Links<INHALTE>Rechts|
+\newskip\md@framed@linewidth \md@framed@linewidth\mdf@linewidth %% Dicke der Linie
+
+
+\newcommand\mdframedabovespace[1]{\def\md@space@above@frame{#1}}
+\mdframedabovespace{\baselineskip} %% Abstand vor der Frame-Umgebung
+
+
+\newskip\md@temp@skip@a \md@temp@skip@a\z@ %% Hilfslaenge
+\newlength{\fp@putboxa@length@md}
+\setlength{\fp@putboxa@length@md}{\z@} %% Hilfslaenge
+
+\newif\ifmd@content@split \md@content@splitfalse %% Ifabfrage, die prueft, ob der Inhalt von mdframed geteilt wird
+ %% default - wird nicht geteilt
+
+\newif\ifmd@box@empty \md@box@emptyfalse %% Ifabfrage, die prueft, ob der Inhalt einer Box leer ist
+ %% default - ist nicht leer
+
+\newcommand\mdbackgroundcolor[1]{\def\md@backgroundcolor{#1}} %% User-Command - Hintergrundfarbe
+
+\newcommand\mdlinecolor[1]{\def\md@linecolor{#1}} %% User-Command - Linienfarbe
+\def\md@@linecolor{\color{\mdf@linecolor}} %% Abkuerzungskommando
+
+\newcommand\mdfontcolor[1]{\def\md@fontcolor{#1}}
+\def\md@@fontcolor{\color{\mdf@fontcolor}}
+
+\mdbackgroundcolor{\mdf@backgroundcolor}
+\mdlinecolor{\mdf@linecolor}
+%%==================================================%%
+%%===Globale Umgebung -- noch keine Modifikation ===%%
+%%==================================================%%
+
+\newenvironment{mdframed}[1][]% default-Umgebung
+ {\setkeys{mdframed}{#1}%
+ \vskip\mdf@skipabove
+ \mdframed@global@env}%
+ {\endmdframed@global@env\vskip\mdf@skipbelow}
+
+
+
+
+%%==================================================%%
+%%=================== Kommentare ===================%%
+%%==================================================%%
+
+\chardef\md@arrayparboxrestore=\catcode`\| % for debug
+\catcode`\|=\catcode`\% % (debug: insert space after backslash)
+%% Kommentare werden im Code mit | gekennzeichnet
+
+
+%%==================================================%%
+%%================= Breite der BOX =================%%
+%%==================================================%%
+\def\md@margin@equation{% %% Berechnung der moeglichen Breite fuer den Rahmeninhalt
+ \advance\hsize by -\md@framed@margin %% hsize minus Randvorgabe
+ \advance\hsize by -2\md@framed@linewidth %% hsize minus Linienbreite
+ \advance\hsize by -\width\md@arrayparboxrestore}%% Beruecksichtigung das Auszaehlung bzw. list-Umgebung enthalten
+
+%%==================================================%%
+%%===Bestimmung des Platzbedarfes fuer den Rahmen===%%
+%%==================================================%%
+\newskip\md@temp@frame@hsize
+\newskip\md@temp@frame@vsize
+\def\md@sizeofframe{\begingroup
+ \setbox\z@\vbox{%
+ \vskip-5in \hbox{\hskip-5in
+ \fboxsep2\baselineskip\fboxrule\md@framed@linewidth\fbox%
+ {\hbox{\vrule \@height 4.7in \@depth.3in \@width 5in}}}%
+ \vskip\z@skip}%
+ \global\md@temp@frame@hsize\wd\z@ \global\md@temp@frame@vsize\ht\z@
+ \endgroup
+}
+
+%%==================================================%%
+%%============Start der globalen Umgebung===========%%
+%%==================================================%%
+\def\mdframed@global@env{\par
+ %Bestimmung zusatzlichen Freiraumes gemaess Vorgabe des Rahmens
+ \let\width\md@temp@frame@hsize \let\height\md@temp@frame@vsize
+ % Einfuegen von Strafpunkten und Abstaenden
+ \begingroup
+ \skip@\lastskip
+ \if@nobreak
+ \else
+ \penalty9999 % updates \page parameters <-pruefen
+ \ifdim\pagefilstretch=\z@ %%% pagefilstretch ist ein internes Register fuer den
+ %%% Seitenumbruch. Es entaehlt den akkumulierten (gespeicherten) fil-Anteil
+ %%% auf der aktuellen Seite
+ \ifdim\pagefillstretch=\z@ %%% pagefillstretch ist ein internes Register fuer den
+ %%% Seitenumbruch. Es entaehlt den akkumulierten (gespeicherten) fill-Anteil
+ %%% auf der aktuellen Seite
+ %%% nicht unendlich dehnbar, so hier foerdern eines Seitenumbruches
+ \edef\@tempa{\the\skip@}%
+ \edef\@tempb{\the\z@skip}%
+ \ifx\@tempa\@tempb %%% ???????
+ \penalty-30
+ \else
+ \vskip-\skip@
+ \penalty-30
+ \vskip\skip@
+ \fi
+ \fi
+ \fi
+ \penalty\z@
+ % Give a stretchy breakpoint that will always be taken in preference
+ % to the \penalty 9999 used to update page parameters. The cube root
+ % of 10000/100 indicates a multiplier of 0.21545, but the maximum
+ % calculated badness is really 8192, not 10000, so the multiplier
+ % is 0.2301.
+ \advance\skip@ \z@ plus-.5\baselineskip
+ \advance\skip@ \z@ plus-.231\height
+ \advance\skip@ \z@ plus-.231\skip@
+ \advance\skip@ \z@ plus-.231\topsep
+ \vskip-\skip@ \penalty 1800 \vskip\skip@
+ \fi
+ \addvspace{\topsep}%
+ \endgroup
+ % clear out pending page break
+ \nobreak \vskip 2\baselineskip \vskip\height %%%\@M=10000
+ \penalty9999 \vskip -2\baselineskip \vskip-\height
+ \penalty9999 % updates \pagetotal
+ \md@adjheight
+ \setbox\@tempboxa\vbox\bgroup
+ \begingroup %%% zweites begingroup noetig, dass fontcolor gesetzt werden kann
+ \md@@fontcolor %%% Setzen der Schriftfarbe
+ \md@margin@equation
+ \textwidth\hsize \columnwidth\hsize
+}
+
+\def\endmdframed@global@env{\par
+ \kern\z@ %%%\z@=0
+ \hrule\@width\hsize\@height\z@
+ \penalty-100 % put depth into height
+ \endgroup
+ \egroup
+ \begingroup
+ \md@put@frame
+ \endgroup
+}
+
+
+
+%%==================================================%%
+%%===========Ausgaberoutine -> Berechnung===========%%
+%%==================================================%%
+
+%% \md@put@frame nimmt den Inhalt der \@tempboxa und packt alles oder nur einen Teil
+%% auf die Seite mit dem Rahmen.
+%% Es ist rekursiv, solange alles von der \@tempboxa aufgebraucht ist (\@tempboxa muss die Tiefe 0 haben.)
+%% Erste Iteration: Versuche alles in einen Rahmen zu bekommen. Falls es nicht passt,
+%% splitte es für die erste Rahmenumgebung
+%% Spaetere Iteration: Versuche alles in den letzten Rahmen zu bekommen. Falls es nicht passt,
+%% splitte es erneut. (Versuchsstadium -- Da bisher nur Anfang und Ende enthalten)
+
+\def\md@put@frame{\relax
+ \ifdim\pagegoal=\maxdimen \pagegoal\vsize \fi %%%% \pagegoal aktuelle Seitenhöhe für den Seitenumbruch
+ %%%% Der Wert wird mit \vsize initialisiert
+ %%%% \pagegoal - \pagetotal ist dann der noch freie Raum auf einer Seite
+ %%%%
+ \ifinner %Rekursion-sind in der Box %%%% testet auf internal mode: Dieser ist im internal vertical mode,
+ %%%% also im Innern einer \vbox, oder im restricted horizontal mode,
+ %%%% also im Innern einer \hbox, gesetzt.
+%% \md@putbox@second %%%% Rahmen um den zweiten Teil der Box "noch zu bearbeiten"
+%% \md@afterframe %%%% siehe Anweisung
+ \else %Noch keinen Teil der Box gesetzt.
+ \dimen@\pagegoal
+ \advance\dimen@-\pagetotal %%% \dimen@ hat jetzt den noch freien Platz auf der Seite gespeichert
+ \advance\dimen@-\topskip
+ \ifdim\dimen@<2\baselineskip %%% Ist freier Platz < 2 Zeilenabstaenden, zu wenig Platz
+ \clearpage %%% Beginne neue Seite
+ \md@put@frame % %%% Rufe \md@put@frame erneut auf
+ \else %%% Es ist akzeptabler Platz auf der Seite
+% \begingroup %%%
+% \advance\dimen@0.1\pageshrink %%% \pageshrink ist ein internes Register fuer den Seitenumbruch. Es ent-
+ %%% haelt den akkumulierten Schrumpfanteil auf der aktuellen Seite;
+ %%% das heisst die Laenge, um die der Leerraum auf der aktuellen Seite
+ %%% bei Bedarf noch zusammengeschoben werden kann;
+ %%% Somit ist hier der maximale Seitenplatz ermittelt
+ \expandafter%%% ????
+% \endgroup
+ \ifdim\dimen@>\ht\@tempboxa %%% Pruefe, ob Box noch auf Seite passt
+ \ifmd@content@split %%% Pruefe ob \@tempboxa gesplittet wurde
+ \md@putbox@second %%% Wurde gesplittet- nehme zweiten Teil der Umrandung
+ \else %%%
+ \md@putbox@single %%% Box wurde nicht gesplitter - einfacher Rahmen
+ \fi%
+ \md@afterframe %%% siehe Anweisung
+ \else %%%Box muss gesplittet werden
+ \setbox\@tempboxa\vbox{ %%% Simuliere den Rahmen und die Flexibilitaet der Seite
+ %%% \pagestretch ist ein internes Register fuer den Seitenumbruch. Es ent-
+ %%% haelt den akkumulierten Zuwachsanteil auf der aktuellen Seite;
+ %%% das heisst die Laenge, um die der Leerraum auf der aktuellen Seite
+ %%% bei Bedarf noch auseinander gezogen werden kann;
+ \vskip \z@ \@plus0.2\pagestretch \@minus.3\pageshrink
+ \kern137sp\kern-137sp\penalty-30 %%% ????
+ \unvbox\@tempboxa} %%%
+ \edef\md@resto@set{\boxmaxdepth\the\boxmaxdepth %%% \boxmaxdepth ist die maximale Tiefe (depth) einer \vbox,
+ %%% die diese annehmen darf. Dieser Wert ist mit \maxdimen,
+ %%% das heisst 16383,99999 pt, vorbelegt. Damit duerffen Boxen
+ %%% beliebige Unterlaengen (‘depth’) besitzen.
+ \splittopskip\the\splittopskip}% %%% \splittopskip ist der Leerraum,
+ %%% der automatisch zu Beginn einer abgesplitteten Box gesetzt wird.
+ \boxmaxdepth\z@ \splittopskip\z@ %%%
+ %%% Hier wird die \@tempboxa gesplittet
+ \setbox\tw@\vsplit\@tempboxa to 1\dimen@ %%% \tw@ enthaelt oberen Teil der \@tempboxa mit der Groesse \dimen@
+ \ifdim\ht\@tempboxa=\z@
+ \md@box@emptytrue
+ \fi
+| \toks99\expandafter{\splitfirstmark}% %%% \splitfirstmark internes Register, welches den mittels
+ %%% \mark gesetzten Text ausgibt, der bei der letzten \vsplit-Operation
+ %%% gefunden wurde. Dies ist der erste \mark-Text im abgesplitteten Text
+
+| \toks98\expandafter{\splitbotmark} %%% splitbotmark internes Register, welches den mittels \mark gesetzten
+ %%% Text ausgibt, der bei der letzten \vsplit-Operation gefunden wurde.
+ %%% Dies ist der letzte \mark-Text im abgesplitteten Text
+ \setbox\tw@\vbox{\unvbox\tw@} %%% Natuerliche Groesse der ersten Teilbox erhalten
+ % If the split-to size > (\vsize-\topskip), then set box to full size
+ %%% \topskip Ist der Mindestabstand, den die Grundlinie der ersten Zeile (Box) einer jeden Seite vom Seitenanfang haben soll.
+ \begingroup
+ \advance\dimen@\topskip %%% Addiere zum noch freien Platz auf der Seite topskip
+ \expandafter\endgroup %%% ????
+ \ifdim\dimen@>\pagegoal %%% Ist \dimen@ groesser der Seitenhoehe
+ \dimen@ii\pagegoal %%% \dimen@ii wird zur Seitenhoehe
+ \advance\dimen@ii -\topskip %%% \dimen@ii wird zur Seitenhoehe Minus
+ \advance\dimen@ii \md@space@above@frame %%% \dimen@ii bekommt zusaetzlich den gewuenschten Oberen Abstand
+ \else %%% \dimen@ ist kleiner als die aktuelle Seitenhoehe
+ %%% Es ist ausreichend Platz auf der Seite
+ \advance\dimen@.9\pageshrink %%% siehe oben -> \dimen@ wird vergroessert
+ \ifdim\ht\tw@>\dimen@ %%% Ist die Hoehe der abgesplitteten Box groesser als \dimen@
+ \dimen@ii=\dimen@
+ \else %%% abgesplittete Box ist kleiner
+ \dimen@ii\ht\tw@ %%% \dimen@ -> setze \dimen@ii auf aktuelle Boxgroesse
+ \fi
+ \fi
+%% % Re-box contents to desired size \dimen@ii
+%% \advance\dimen@ii -\md@frh
+ \setbox\tw@\vbox to\dimen@ii % %%% Setze die abgesplittete Box auf \dimen@ii
+ \bgroup
+ \vskip -\z@ \@plus-\pagestretch \@minus-.8\pageshrink %%% Entferne den simulierte Rahmen und Seitenflexibilitaet
+ \unvbox\tw@ \unpenalty\unpenalty %%% \unpenalty entfernt einen vorangehenden \penalty
+ %%% in der Arbeitsliste, falls ein solcher vorhanden ist
+ \ifdim\lastkern=-137sp %%% \lastkern liefert, falls das letzte Element eine \kern-Operation
+ %%% war, dieses aus. Das Element bleibt aber erhalten.
+ %%% Komplette Box geht auf naechste Seite
+ % need work here???
+ \egroup %%%Moegliches egroup
+ \md@resto@set
+ \clearpage %%% ??? \eject % (\vskip for frame size was discarded)
+ %\md@adjheight
+ \md@put@frame % INSERTED ???
+ \else % Bekommt Material fuer das Abspalten am Kopf (Got material split off at the head)
+ \egroup %%%Moegliches egroup
+ \md@resto@set
+ \ifvoid\@tempboxa %%% prueft, ob die \tempbox@ (abgesplitteter unterer Teil) leer ist.
+ \setbox\@tempboxa\box\tw@
+ \ifmd@box@empty
+ \md@putbox@single %
+ \else
+ \md@putbox@second %
+ \fi
+ \md@afterframe
+ \else % Es ist wirklich gesplittet mit oberen Teil in \tw@ und unteren Teil in \tempboxa@
+ \ifdim\wd\tw@>\z@ %%%Ist der Obere Teil breiter als 0pt
+ \wd\tw@\wd\@tempboxa %%%setze die Beite des oberen Teils auf die Breite des unteren Teils
+ \global\md@content@splittrue %%%% Merke, dass Box gesplittet wird
+ %%%% gebe den oberen Teil der Box aus
+ \md@putbox@first %%% Ausgabe der ersten Teilbox
+ \else %%Oberer Teil ist Leer
+ \box\tw@ %%% Ausgabe und Leerung
+ \fi
+ \hrule \@height\z@ \@width\hsize
+ \clearpage
+ \md@adjheight
+ \md@put@frame
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+}
+
+
+%%==================================================%%
+%%=Ausgabe der Box nach Vorgabe der Ausagaberoutine=%%
+%%==================================================%%
+\let\md@textwidth\textwidth
+\def\md@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox
+ \ifvoid\@tempboxa
+ \else
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{\md@framed@linewidth}%
+ \rule[-0.5\baselineskip]{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\hsize-2\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\@tempboxa}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \llap{%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{0pt}{\md@framed@linewidth}%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md}%
+ }%
+ \llap{\md@@linecolor\rule[\fp@putboxa@length@md]{\hsize}{\md@framed@linewidth}}%
+ }%
+ \fi
+}
+
+
+\def\md@putbox@first{%%%% Ausgabe der Teilbox 1
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\tw@}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{-\md@framed@linewidth}%
+ \rule{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\tw@}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[\fp@putboxa@length@md-\md@framed@linewidth]{\hsize-\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\tw@}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ }%
+ }%% ??? \centerline bad idea
+}
+
+
+\def\md@putbox@second{%%%%% Ausgabe der Teilbox 2
+ \ifvoid\@tempboxa
+ \else
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{.7\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{\md@framed@linewidth}%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{0.2\baselineskip}% %Linienueberschuss auf zweiter Seite
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\hsize-2\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\@tempboxa}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \llap{%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{0pt}{\md@framed@linewidth}%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md}%
+ }%
+ }%
+ \fi
+}
+
+
+
+%%==================================================%%
+%%======Deklaration nach der Ausgabe einer Box======%%
+%%==================================================%%
+\def\md@afterframe{%
+ \global\md@content@splitfalse
+ \global\md@box@emptyfalse
+ \nointerlineskip \null %{\showoutput \showlists}
+ \penalty-30 \vskip\topsep \relax
+}
+
+%%==================================================%%
+%%=====Berechnung bzw. Festlegung des Abstandes=====%%
+%%==================================================%%
+\def\md@adjheight{%
+ \ifdim\md@space@above@frame>\z@
+ \vbox to 1.2\md@space@above@frame{}% get proper baseline skip from above.
+ \nobreak \nointerlineskip
+ \vskip-1.2\md@space@above@frame
+ \penalty\@M%
+ \else
+ \vbox to \md@space@above@frame{}% get proper baseline skip from above.
+ \penalty\@M \nointerlineskip
+ \vskip-0.6\md@space@above@frame
+ \penalty\@M%
+ \fi
+} % useful for tops of pages
+
+
+
+%%%%%KEINE AHNUNG
+\catcode`\|=\md@arrayparboxrestore %%%????
+
+
+
+
+% \md@arrayparboxrestore has parts of \@parboxrestore, performing a similar but
+% less complete restoration of a default layout. See how it is used in the
+% "settings" argument of \MakeFrame. Though not a parameter, \hsize
+% should be set to the desired total line width available inside the
+% frame before invoking \md@arrayparboxrestore.
+\def\md@arrayparboxrestore{%
+ %%%AUS ltboxes.dtx -> \@arrayparboxrestore
+ \let\if@nobreak\iffalse
+ \let\if@noskipsec\iffalse
+ \let\-\@dischyph %%%Default \let\@dischyph=\-
+ \let\'\@acci\let\`\@accii\let\=\@acciii %%%Default: \let\@acci\' \let\@accii\` \let\@acciii\= <- Sicher gehen
+ %%%dass Defaultwerte erhalten sind
+ %%%Scheinen Mathesymbole zu sein ???
+ % Test ob Listenumgebung enthalten ist
+ \ifnum \ifdim\@totalleftmargin>\z@ 1\fi %%%In latex.ltx->totalleftmargin=\z@, ausser in list-Umgebung:
+ %%%\advance\@totalleftmargin \leftmargin
+ \ifdim\rightmargin >\z@ 1\fi %%%Default \rightmargin=\z@, ausnahme: quote usw.
+ \ifnum\@listdepth >0 1\fi %%%Zaehler fuer Listentiefe -> Keine Liste \@listdepth=0 sonst, je ebene +1
+ 0>\z@ %%%Ist ein Parameter erfuellt, dann ist es eine Listenumgebung
+ \@setminipage %%%Passform rund um das Element
+ % Nun wird versucht, Aenderungen der Breite von \hsize antsprechend der Listenparameter zu uebergeben.
+ % Dies ist defizitaer, denn eine erweiterte Möglichkeit, Aenderungen der Textdimension anzugegeben
+ % ist (noch) nicht vorgesehen, insbesondere keine getrennte linke / rechte Einstellung.
+ \advance\linewidth-\columnwidth \advance\linewidth\hsize
+ \parshape\@ne \@totalleftmargin \linewidth %%% parshape definiert das Aussehen eines Absatzes Zeile fuer Zeile.
+ %%% Seine Parameterversorgung geschieht mittels der folgenden Syntax:
+ %%% \parshape = n i1 l1 i2 l2 ... in ln.
+ %%% Dabei gibt der Parameter n an, fuer wieviele Zeilen Definitionspaare folgen.
+ %%% Jedes Definitionspaar besteht aus der Angabe i_j fuer den Einzug und
+ %%% der Laengenangabe l_j fuer die entsprechende Zeile. Sind mehr als n Zeilen
+ %%% vorhanden, so wird die letzte Angabe stets weiter verwendet
+ \else % Not in list
+ \linewidth=\hsize
+ \fi
+ \sloppy
+}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%