From 37f1831f5559f99501eb0123e22795ae5300650b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 18 Apr 2010 18:05:20 +0000 Subject: new latex package mdframed 0.3 (16apr10) git-svn-id: svn://tug.org/texlive/trunk@17904 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/mdframed/mdframed.sty | 661 ++++++++++++++++++++++ 1 file changed, 661 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/mdframed/mdframed.sty (limited to 'Master/texmf-dist/tex/latex/mdframed') 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 |LinksRechts| +\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 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3