%%==================================================%% %%========Is based on the idea of framed.sty========%% %%==================================================%% %%===== Currently the package 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 \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mdframed}[2010/05/14 v4a: mdframed] %%==================================================%% %%=============== Benoetigte Pakete ================%% %%==================================================%% \newcommand*\mdframedpackagename{mdframed} \newcommand*\md@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} \newcommand*\md@LoadFile@IfExist[1]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}% }{% \md@PackageWarning{The package #1 does not exist\MessageBreak but it is required by \mdframedpackagename}% } } \md@LoadFile@IfExist{kvoptions} \md@LoadFile@IfExist{etex} \md@LoadFile@IfExist{calc} \md@LoadFile@IfExist{color} \md@LoadFile@IfExist{tikz} \md@LoadFile@IfExist{etoolbox} \SetupKeyvalOptions{family=mdf,prefix=mdf@} %%==================================================%% %%=============== Globale Optionen ================%% %%==================================================%% \DeclareStringOption[0.4pt]{linewidth} \DeclareStringOption[black]{linecolor} \DeclareStringOption[white]{backgroundcolor} \DeclareStringOption[black]{fontcolor} \DeclareStringOption[20pt]{margin} \DeclareStringOption[\z@]{skipabove} \DeclareStringOption[\z@]{skipbelow} \DeclareStringOption[none]{xcolor} \DeclareStringOption[pt]{defaultunit} \DeclareStringOption[\z@]{leftmargin} \DeclareStringOption[\z@]{rightmargin} \DeclareBoolOption{ntheorem} %%Optionen fuer tikz \DeclareStringOption[0]{style} \DeclareStringOption[\z@]{roundcorner} \DeclareStringOption[\z@]{innerlinewidth} \DeclareStringOption[\z@]{outerlinewidth} \DeclareStringOption[\mdf@linewidth]{middlelinewidth} \DeclareStringOption[\mdf@linecolor]{innerlinecolor} \DeclareStringOption[\mdf@linecolor]{outerlinecolor} \DeclareStringOption[\mdf@backgroundcolor]{middlelinecolor} \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 %%\mdf@roundcorner \begingroup \let\@tempa\mdf@roundcorner \md@iflength{\@tempa}{}{\global\edef\mdf@roundcorner{\the\md@templength}} \endgroup %%\mdf@innerlinewidth \begingroup \let\@tempa\mdf@innerlinewidth \md@iflength{\@tempa}{}{\global\edef\mdf@innerlinewidth{\the\md@templength}} \endgroup %%\mdf@outerlinewidth \begingroup \let\@tempa\mdf@outerlinewidth \md@iflength{\@tempa}{}{\global\edef\mdf@outerlinewidth{\the\md@templength}} \endgroup %%\mdf@middlelinewidth \begingroup \let\@tempa\mdf@middlelinewidth \md@iflength{\@tempa}{}{\global\edef\mdf@middlelinewidth{\the\md@templength}} \endgroup %%==================================================%% %%========Sicherstellen der key-value-Syntax========%% %%================ HIER DIE LOKALEN ================%% %%==================================================%% \define@key{mdfl}{linewidth}[\mdf@linewidth]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@linewidth{\the\md@templength}}% {\global\edef\mdfl@linewidth{\the\md@templength}} \let\mdf@linewidth\mdfl@linewidth } \define@key{mdfl}{rightmargin}[\mdf@rightmargin]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@rightmargin{\the\md@templength}}% {\global\edef\mdfl@rightmargin{\the\md@templength}} \let\mdf@rightmargin\mdfl@rightmargin } \define@key{mdfl}{leftmargin}[\mdf@leftmargin]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@leftmargin{\the\md@templength}}% {\global\edef\mdfl@leftmargin{\the\md@templength}} \let\mdf@leftmargin\mdfl@leftmargin } \define@key{mdfl}{margin}[\mdf@margin]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@margin{\the\md@templength}}% {\global\edef\mdfl@margin{\the\md@templength}} \let\mdf@margin\mdfl@margin } \define@key{mdfl}{skipbelow}[\mdf@skipbelow]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@skipbelow{\the\md@templength}}% {\global\edef\mdfl@skipbelow{\the\md@templength}} \let\mdf@skipbelow\mdfl@skipbelow } \define@key{mdfl}{skipabove}[\mdf@skipabove]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@skipabove{\the\md@templength}}% {\global\edef\mdfl@skipabove{\the\md@templength}} \let\mdf@skipabove\mdfl@skipabove } \define@key{mdfl}{backgroundcolor}[\mdf@backgroundcolor]{% \def\@tempa{#1} \let\mdf@backgroundcolor\@tempa\relax } \define@key{mdfl}{linecolor}[\mdf@linecolor]{% \def\@tempa{#1} \let\mdf@linecolor\@tempa\relax } \define@key{mdfl}{fontcolor}[\mdf@fontcolor]{% \def\@tempa{#1} \let\mdf@fontcolor\@tempa\relax } \define@key{mdfl}{defaultunit}[\mdf@defaultunit]{% \def\@tempa{#1} \let\mdf@defaultunit\@tempa\relax } \define@key{mdfl}{ntheorem}[false]{% \def\@tempa{#1} \def\md@true{true} \ifx\@tempa\md@true\relax \mdf@ntheoremtrue% \fi } \define@key{mdfl}{roundcorner}[\mdf@roundcorner]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@roundcorner{\the\md@templength}}% {\global\edef\mdfl@roundcorner{\the\md@templength}} \let\mdf@roundcorner\mdfl@roundcorner } \define@key{mdfl}{style}[\mdf@style]{% \def\@tempa{#1} \let\mdf@style\@tempa\relax } \define@key{mdfl}{innerlinewidth}[\mdf@innerlinewidth]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@innerlinewidth{\the\md@templength}}% {\global\edef\mdfl@innerlinewidth{\the\md@templength}} \let\mdf@innerlinewidth\mdfl@innerlinewidth } \define@key{mdfl}{outerlinewidth}[\mdf@outerlinewidth]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@outerlinewidth{\the\md@templength}}% {\global\edef\mdfl@outerlinewidth{\the\md@templength}} \let\mdf@outerlinewidth\mdfl@outerlinewidth } \define@key{mdfl}{middlelinewidth}[\mdf@middlelinewidth]{% \def\@tempa{#1} \md@iflength{\@tempa}% {\global\edef\mdfl@middlelinewidth{\the\md@templength}}% {\global\edef\mdfl@middlelinewidth{\the\md@templength}} \let\mdf@middlelinewidth\mdfl@middlelinewidth } \define@key{mdfl}{middlelinecolor}[\mdf@middlelinecolor]{% \def\@tempa{#1} \let\mdf@middlelinecolor\@tempa\relax } \define@key{mdfl}{outerlinecolor}[\mdf@outerlinecolor]{% \def\@tempa{#1} \let\mdf@outerlinecolor\@tempa\relax } \define@key{mdfl}{innerlinecolor}[\mdf@innerlinecolor]{% \def\@tempa{#1} \let\mdf@innerlinecolor\@tempa\relax } %%==================================================%% %%======= Laden der gewuenschten Style-Datei =======%% %%==================================================%% \ifcase\mdf@style\relax \input{md-tikz-0.mdf}% \or \input{md-tikz-1.mdf}% \else \IfFileExists{md-tikz-\mdf@style.mdf}{% \input{md-tikz-\mdf@style.mdf}% }{% \input{md-tikz-1.mdf}% \md@PackageWarning{The style number \mdf@style does not exist\MessageBreak mdframed ues instead style=1 \mdframedpackagename}% }% \fi% %%==================================================%% %%==Deklaration diverser Eingabe und Hilfsparameter=%% %%==================================================%% \newcommand\mdframedabovespace[1]{\def\md@space@above@frame{#1}} \mdframedabovespace{0pt} %% 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 %% If-Abfrage, die prueft, ob der Inhalt von mdframed geteilt wird %% default - wird nicht geteilt \newif\ifmd@box@empty \md@box@emptyfalse %% If-Abfrage, die prueft, ob der Inhalt einer Box leer ist %% default - ist nicht leer \newif\ifmd@more@two \md@more@twofalse %% If-Abfrage ob ueber mehr als zwei Seiten gespittet wird \newlength{\mdf@tikz@linewidth} %% Liniendicke fuer tikz \newlength\mdf@xmargin@tikz %% Berechnungsvariable tikz \newlength\mdf@ymargin@tikz %% Berechnungsvariable tikz \newlength\mdfboxheight %% Berechnungsvariable tikz \newlength\mdfboxwidth %% Berechnungsvariable tikz \newlength{\mdf@rounded@tikz} %% Rundungsparameter tikz \newlength\mdf@outerlinewidth@tikz %% Laengenparameter tikz \newlength\mdf@innerlinewidth@tikz %% Laengenparameter tikz \newlength\mdf@middlelinewidth@tikz %% Laengenparameter tikz %%==================================================%% %%===Globale Umgebung -- noch keine Modifikation ===%% %%==================================================%% \newenvironment{mdframed}[1][]% default-Umgebung {\trivlist\item\relax\endtrivlist% \vskip -2\topsep% \vskip -2\parskip% \vskip -2\partopsep% \vskip -2\lineskip% \vskip -0.6\baselineskip% \setkeys{mdfl}{#1}% \vspace*{\mdf@skipabove}% \ifmdf@ntheorem% \ifdefined\theorempreskipamount% \theorempreskipamount0pt% \theorempostskipamount0pt% \else% {\md@PackageWarning{You have not loaded ntheorem yet}}% \fi% \fi% \ifnumless{\mdf@style}{1}% {\renewcommand{\mdf@innerlinewidth}{\z@}% \renewcommand{\mdf@middlelinewidth}{\mdf@linewidth}% \renewcommand{\mdf@outerlinewidth}{\z@}% \let\mdf@innerlinecolor\mdf@linecolor% }{}% \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 - \mdf@margin% %% hsize minus Randvorgabe \advance\hsize by - \mdf@margin% %% hsize minus Randvorgabe \advance\hsize by - \mdf@middlelinewidth% %% hsize minus Linienbreite (mitte) \advance\hsize by - \mdf@middlelinewidth% %% hsize minus Linienbreite (mitte) \ifnumequal{1}{\mdf@style}{% \advance\hsize by - \mdf@innerlinewidth% %% hsize minus Linienbreite (innen) \advance\hsize by - \mdf@innerlinewidth% %% hsize minus Linienbreite (innen) \advance\hsize by - \mdf@outerlinewidth% %% hsize minus Linienbreite (aussen) \advance\hsize by - \mdf@outerlinewidth% %% hsize minus Linienbreite (aussen) }{}% \advance\hsize by - \mdf@leftmargin% %% hsize minus gewuenschten linken Abstand \advance\hsize by - \mdf@rightmargin% %% hsize minus gewuenschten rechten Abstand \advance\hsize by - \width\md@arrayparboxrestore}%% Beruecksichtigung, dass 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\mdf@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===========%% %%==================================================%% \let\md@hsize\hsize \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 %%%%SIEHE LATEX.ltx -- ersten Absatz ignorieren \def\@doendpe{\@endpetrue \def\par{\@restorepar\par\@endpefalse}\everypar {{\setbox\z@\lastbox}\everypar{}\@endpefalse}} %%%%%%%%%%%%%%%%%%%%%%%%%%% \md@adjheight% \md@margin@equation% \setbox\@tempboxa\vbox\bgroup\@doendpe% \begingroup% %%% zweites begingroup noetig, dass fontcolor gesetzt werden kann \color{\mdf@fontcolor}% %%% Setzen der Schriftfarbe \textwidth\hsize \columnwidth\hsize% } \def\endmdframed@global@env{\par% \kern\z@ %%%\z@=0 \hrule\@width\md@hsize\@height\z@% \penalty-100 % put depth into height \endgroup% \egroup% \begingroup% \color{\mdf@fontcolor} \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 fuer 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 Seitenhoehe 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 %%% \dime@ Minus \topskip %%%Beginn der Beruecksichtigung fuer den Platz der Linienbreite: \ifmd@more@two% Abfrage ob eine mittlere Seite vorliegt \else %keine Mittlere Seite \@tempskipa=\mdf@roundcorner \divide\@tempskipa by 3 \ifdimless{0.4\baselineskip}{\@tempskipa}{% \advance\dimen@ -0.5\@tempskipa}% {\advance\dimen@ 0.4\baselineskip} \advance\dimen@ -\mdf@innerlinewidth %%% Berucksichtigen, dass oben und untern keine Linie -- somit mehr Platz \advance\dimen@ -\mdf@outerlinewidth %%% Berucksichtigen, dass oben und untern keine Linie -- somit mehr Platz \advance\dimen@ -\mdf@middlelinewidth %%% Berucksichtigen, dass oben und untern keine Linie -- somit mehr Platz \advance\dimen@ -0.4\baselineskip% \fi \ifnum\mdf@style=0\relax \ifmd@more@two \else \advance\dimen@ \mdf@linewidth \fi \fi \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 minus \topskip \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 simulierten 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 oberem Teil in \tw@ und unterem Teil in \tempboxa@ \ifdim\wd\tw@>\z@ %%%Ist der Obere Teil breiter als 0pt \wd\tw@\wd\@tempboxa %%%Setze die Breite 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 \ifmd@more@two% \md@putbox@middle% %%% Ausgabe der ersten Teilbox \else% \md@putbox@first% %%% Ausgabe der ersten Teilbox \md@more@twotrue% \fi% \else %%Oberer Teil ist Leer \box\tw@ %%% Ausgabe und Leerung \fi \hrule \@height\z@ \@width\hsize \vfill\eject %\clearpage \md@adjheight \md@put@frame \fi \fi \fi \fi \fi } %%==================================================%% %%======Deklaration nach der Ausgabe einer Box======%% %%==================================================%% \def\md@afterframe{% \global\md@content@splitfalse \global\md@box@emptyfalse \global\md@more@twofalse \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\md@space@above@frame{}% get proper baseline skip from above. \nobreak \nointerlineskip \vskip-1\md@space@above@frame \penalty\@M% \else \vbox to \md@space@above@frame{}% get proper baseline skip from above. \penalty\@M \nointerlineskip \vskip-1\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 entsprechend der Listenparameter zu uebergeben. % Dies ist defizitaer, denn eine erweiterte Moeglichkeit, 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, dass Optionen nur global setzbar=%% %%==================================================%% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{style}% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{xcolor}% \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%