%%==================================================%% %%========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/23 v0.3a: 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{etex.sty}{% \RequirePackage{etex} }{% \md@PackageWarning{The package etex 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[\baselineskip]{skipabove} \DeclareStringOption[\baselineskip]{skipbelow} \DeclareStringOption[none]{xcolor} \DeclareStringOption[pt]{defaultunit} \DeclareStringOption[0pt]{leftmargin} \DeclareStringOption[0pt]{rightmargin} \DeclareBoolOption{ntheorem} \ProcessKeyvalOptions* %%==================================================%% %%========Hilfsmakro zur Bestimmung ob Laenge=======%% %%============= IDEE: Martin Scharrer ==============%% %%==================================================%% %%%\md@iflength{}{}{} \newlength{\md@templength} \def\md@iflength#1{% \afterassignment\md@iflength@check% \md@templength=#1\mdf@defaultunit\relax\relax \expandafter\endgroup\next } \def\md@iflength@check#1{% \begingroup \ifx\relax#1\@empty \def\next{\@secondoftwo} \else \def\next{\@firstoftwo} \expandafter\md@iflength@cleanup \fi } \def\md@iflength@cleanup#1\relax{} %%==================================================%% %%========Sicherstellen der key-value-Syntax========%% %%==================================================%% \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 } } %%%Laengentests %%\mdf@linewidth \begingroup \let\@tempa\mdf@linewidth \md@iflength{\@tempa}{}{\global\edef\mdf@linewidth{\the\md@templength}} \endgroup %%\mdf@margin \begingroup \let\@tempa\mdf@margin \md@iflength{\@tempa}{}{\global\edef\mdf@margin{\the\md@templength}} \endgroup %%\mdf@skipabove \begingroup \let\@tempa\mdf@skipabove \md@iflength{\@tempa}{}{\global\edef\mdf@skipabove{\the\md@templength}} \endgroup %%\mdf@skipbelow \begingroup \let\@tempa\mdf@skipbelow \md@iflength{\@tempa}{}{\global\edef\mdf@skipbelow{\the\md@templength}} \endgroup %%\mdf@leftmargin \begingroup \let\@tempa\mdf@leftmargin \md@iflength{\@tempa}{}{\global\edef\mdf@leftmargin{\the\md@templength}} \endgroup %%\mdf@rightmargin \begingroup \let\@tempa\mdf@rightmargin \md@iflength{\@tempa}{}{\global\edef\mdf@rightmargin{\the\md@templength}} \endgroup %%==================================================%% %%==Deklaration diverser Eingabe und Hilfsparameter=%% %%==================================================%% \newskip\md@framed@margin \md@framed@margin\mdf@margin %% Abstand |LinksRechts| \newskip\md@framed@linewidth \md@framed@linewidth\mdf@linewidth %% Dicke der Linie \newskip\md@framed@leftmargin \md@framed@leftmargin\mdf@leftmargin %% Laenge des Linken Abstandes |<->|TEXT... \newskip\md@framed@rightmargin \md@framed@rightmargin\mdf@rightmargin %% Laenge des Linken Abstandes ...TEXT|<->| \newskip\md@outsidemargin \md@outsidemargin\mdf@leftmargin %% Hilfslaenge -- Speicherung des gesamt %% vorgebenen left-right-margin \advance\md@outsidemargin\mdf@rightmargin \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 \def\md@@linecolor{\color{\mdf@linecolor}} %% Abkuerzungskommando Linienfarbe \def\md@@fontcolor{\color{\mdf@fontcolor}} %% Abkuerzungskommando Schriftfarbe \def\md@@backgroundcolor{\color{\mdf@backgroundcolor}}%% Abkuerzungskommando Hintergrundfarbe %%==================================================%% %%===Globale Umgebung -- noch keine Modifikation ===%% %%==================================================%% \newenvironment{mdframed}[1][]% default-Umgebung {\setkeys{mdf}{#1}% \addvspace{\mdf@skipabove}% \ifmdf@ntheorem \ifdefined\theorempreskipamount \theorempreskipamount0pt \theorempostskipamount0pt \else {\md@PackageWarning{You haven not loaded ntheorem yet}}% \fi% \fi% \mdframed@global@env}% {\endmdframed@global@env\addvspace{\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 - \mdf@leftmargin %% hsize minus gewuenschten linken Abstand \advance\hsize by - \mdf@rightmargin %% hsize minus gewuenschten linken Abstand \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 %%=single=%% \def\md@frame@background@single{% \rlap{\color{\mdf@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-\md@outsidemargin}{\fp@putboxa@length@md}% }% }% \def\md@frame@leftandbottomline@single{% \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 depth 0.5\baselineskip}% \rlap{\md@@linecolor\rule[-0.5\baselineskip-\md@framed@linewidth]{\md@textwidth-\md@outsidemargin}{\md@framed@linewidth}% }% }% \def\md@frame@topandrightline@single{% \llap{\md@@linecolor\vrule width \md@framed@linewidth height \fp@putboxa@length@md depth 0.5\baselineskip}% \llap{\md@@linecolor\rule[\fp@putboxa@length@md]{\md@textwidth-\md@outsidemargin}{\md@framed@linewidth}}% }% \def\md@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox \ifvoid\@tempboxa \else \centerline{% \null\hspace*{\md@framed@leftmargin}% \md@frame@background@single% \md@frame@leftandbottomline@single% \hfill{\box\@tempboxa}\hfill% \md@frame@topandrightline@single% \hspace*{\mdf@rightmargin}\null% }% \fi } %%=first=%% \def\md@frame@background@first{% \rlap{\color{\mdf@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-\md@outsidemargin}{\fp@putboxa@length@md}% }% }% \def\md@frame@topandleftline@first{% \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@outsidemargin}{\md@framed@linewidth}% }% }% \def\md@frame@rightline@first{% \llap{\md@@linecolor \vrule width \md@framed@linewidth height \fp@putboxa@length@md}% }% \def\md@putbox@first{%%%% Ausgabe der Teilbox 1 \centerline{% \null\hspace*{\mdf@leftmargin}% \md@frame@background@first% \md@frame@topandleftline@first% \hfill{\box\tw@}\hfill% \md@frame@rightline@first% \null\hspace*{\mdf@rightmargin}\null% }% } %%=second=%% \def\md@frame@background@second{% \rlap{\color{\mdf@backgroundcolor}% \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}% \addtolength{\fp@putboxa@length@md}{0.7\baselineskip}% \rule[-0.5\baselineskip]{\md@textwidth-\md@outsidemargin}{\fp@putboxa@length@md}% }% }% \def\md@frame@leftandbottomline@second{% \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}% \addtolength{\fp@putboxa@length@md}{0.2\baselineskip}% %Linienueberschuss auf zweiter Seite -- derzeit 0pt \rlap{\md@@linecolor \vrule width \md@framed@linewidth height \fp@putboxa@length@md depth 0.5\baselineskip}% \rlap{\md@@linecolor \rule[-0.5\baselineskip-\md@framed@linewidth]{\md@textwidth-\md@outsidemargin}{\md@framed@linewidth}}% }% \def\md@frame@rightline@second{% \llap{\md@@linecolor\vrule width \md@framed@linewidth height \fp@putboxa@length@md depth 0.5\baselineskip}% }% \def\md@putbox@second{%%%%% Ausgabe der Teilbox 2 \ifvoid\@tempboxa \else \centerline{% \null\hspace*{\mdf@leftmargin}% \md@frame@background@second% \md@frame@leftandbottomline@second% \hfill{\box\@tempboxa}\hfill% \md@frame@rightline@second% \hspace*{\mdf@rightmargin}\null% }% \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 \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 } %%==================================================%% %%== Sicherstellen das Optionen nur global setzbar==%% %%==================================================%% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{skipabove}% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{skipbelow}% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{xcolor}% \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%