From afd21711dd0891ff8e4fd6d150940e1c5d76ae11 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 11 Aug 2011 01:43:52 +0000 Subject: mdframed 0.7a (10aug11) git-svn-id: svn://tug.org/texlive/trunk@23490 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/mdframed/mdframed.sty | 938 +++++++--------------- 1 file changed, 298 insertions(+), 640 deletions(-) (limited to 'Master/texmf-dist/tex/latex/mdframed/mdframed.sty') diff --git a/Master/texmf-dist/tex/latex/mdframed/mdframed.sty b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty index e93dbda1ffe..ee5ab20348c 100644 --- a/Master/texmf-dist/tex/latex/mdframed/mdframed.sty +++ b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty @@ -32,23 +32,21 @@ %% %% %%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%% - -%%$Id: mdframed.sty 103 2010-12-22 16:46:10Z marco $ -%%$Rev: 103 $ +%%$Id: mdframed.sty 161 2011-08-06 11:28:15Z marco $ +%%$Rev: 161 $ %%$Author: marco $ -%%$Date: 2010-12-22 17:46:10 +0100 (Mi, 22. Dez 2010) $ +%%$Date: 2011-08-06 13:28:15 +0200 (Sa, 06. Aug 2011) $ %% Allgemeine Angaben -\def\mdversion{v0.6a} +\def\mdversion{v0.7a} \def\mdframedpackagename{mdframed} \def\md@maindate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mdframed}[\md@maindate@svn$Id: mdframed.sty 103 2010-12-22 16:46:10Z marco $ \mdversion: \mdframedpackagename] +\ProvidesPackage{mdframed}[\md@maindate@svn$Id: mdframed.sty 161 2011-08-06 11:28:15Z marco $ \mdversion: \mdframedpackagename] %%==================================================%% %%=============== Benoetigte Pakete ================%% %%==================================================%% - \newcommand*\md@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} \newcommand*\md@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} \newcommand*\md@LoadFile@IfExist[1]{% @@ -56,29 +54,21 @@ \RequirePackage{#1}% }{% \md@PackageWarning{The package #1 does not exist\MessageBreak - but it is required by \mdframedpackagename}% + but it is required by \mdframedpackagename\MessageBreak + see documentation fo further information + }% } } \md@LoadFile@IfExist{kvoptions} - \md@LoadFile@IfExist{etex} - \md@LoadFile@IfExist{calc} - \md@LoadFile@IfExist{color} - - -%Eingearbeitet in Optionen -%\md@LoadFile@IfExist{pstricks} -%\md@LoadFile@IfExist{pstricks} - \md@LoadFile@IfExist{etoolbox} \SetupKeyvalOptions{family=mdf,prefix=mdf@} %%==================================================%% -%%========Hilfsmakro zur Bestimmung ob Laenge=======%% -%%============= IDEE: Martin Scharrer ==============%% +%%============Hilfsmakros fuer Optionen=============%% %%==================================================%% %%%\md@iflength{}{}{} @@ -99,23 +89,31 @@ } \def\md@iflength@cleanup#1\relax{} -%%\def\md@@iflength#1{ -%% \begingroup -%% \def\@tempa{#1} -%% \md@iflength{\@tempa}{% -%% \expandafter\global\expandafter% -%% \edef\csname #1\endcsname{\the\md@templength}% -%% }{% -%% \expandafter\global\expandafter% -%% \edef\csname #1\endcsname{\the\md@templength}% -%% }% -%% \endgroup% -%%} - -%%==================================================%% -%%==================== Optionen ====================%% -%%==================================================%% +%%\mdf@option@length{}{} +\newrobustcmd*{\mdf@option@length}[2]{% + \expandafter\newlength\csname mdf@#1@length\endcsname% + \expandafter\setlength\csname mdf@#1@length\endcsname{#2}% + } +%%\mdf@define@key@length{} +\newrobustcmd*{\mdf@define@key@length}[1]{% + \define@key{mdf}{#1}{% + \def\@tempa{##1} + \md@iflength{\@tempa}% + {\csxdef{mdfl@#1}{\the\md@templength}}% + {\csxdef{mdfl@#1}{\the\md@templength}}% + \expandafter\setlength\csname mdf@#1@length\endcsname{\csname mdfl@#1\endcsname}% + }% +} +%%Schleifenmakro zur Optioneneingabe Option==Laenge +\DeclareListParser*{\mdf@dolist}{,} +\def\mdf@do#1{% + \mdf@doubledo#1\@nil% +} +\def\mdf@doubledo#1==#2\@nil{% + \mdf@option@length{#1}{#2}% + \mdf@define@key@length{#1}% +} %Festlegung welcher Stildatei %% 0 := tex-Kommandos -- rule @@ -123,254 +121,49 @@ %% 2 := tikz-erweitert %% 3 := pstricks-einfach %% 4 := pstricks-erweitert - \DeclareStringOption[0]{style} - \define@key{mdf}{globalstyle}[\mdf@style]{% - \renewcommand*{\do}[1]{% - \def\@tempa{##1} - \ifcase\number\@tempa\relax + \def\md@styledo##1{% + \def\@tempa{##1} + \ifcase\number\@tempa\relax %0 <- kein Grafikpaket - \or - \md@LoadFile@IfExist{tikz} - %1 <- tikz wird benoetigt - \or - \md@LoadFile@IfExist{tikz} - %2 <- tikz wird benoetigt - \or - \md@LoadFile@IfExist{pstricks-add} - %3 <- pstricks wird benoetigt - \or - \md@LoadFile@IfExist{pstricks-add} - %4 <- pstricks wird benoetigt - \else - \md@PackageWarning{Unknown global style \@tempa} - \fi + \or\md@LoadFile@IfExist{tikz}%1 <- tikz wird benoetigt + \or\md@LoadFile@IfExist{tikz}%2 <- tikz wird benoetigt + \or\md@LoadFile@IfExist{pstricks-add}%3 <- pstricks wird benoetigt + \or\md@LoadFile@IfExist{pstricks-add}%4 <- pstricks wird benoetigt + \else\md@PackageWarning{Unknown global style \@tempa}% + \fi }% - \docsvlist{\mdf@style,#1}% + \mdf@dolist{\md@styledo}{\mdf@style,#1}% } %%%%Optionen mit Laengen -\newcommand*\mdf@skipabove{\z@} -\newcommand*\mdfl@skipabove{} -\newlength\mdf@skipabove@length -\deflength\mdf@skipabove@length{\z@} -\define@key{mdf}{skipabove}[\z@]{% - \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 -\setlength\mdf@skipabove@length{\mdf@skipabove} -} - -\newcommand*\mdf@skipbelow{\z@} -\newcommand*\mdfl@skipbelow{} -\newlength\mdf@skipbelow@length -\deflength\mdf@skipbelow@length{\z@} -\define@key{mdf}{skipbelow}[\z@]{% - \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 -\setlength\mdf@skipbelow@length{\mdf@skipbelow} -} - -\newcommand*\mdf@leftmargin{\z@} -\newcommand*\mdfl@leftmargin{} -\newlength\mdf@leftmargin@length -\deflength\mdf@leftmargin@length{\z@} -\define@key{mdf}{leftmargin}[\z@]{% - \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 -\setlength\mdf@leftmargin@length{\mdf@leftmargin} -} - -\newcommand*\mdf@rightmargin{\z@} -\newcommand*\mdfl@rightmargin{} -\newlength\mdf@rightmargin@length -\deflength\mdf@rightmargin@length{\z@} -\define@key{mdf}{rightmargin}[\z@]{% - \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 -\setlength\mdf@rightmargin@length{\mdf@rightmargin} -} - -\newcommand*\mdf@margin{20pt} -\newcommand*\mdfl@margin{} -\newlength\mdf@margin@length -\deflength\mdf@margin@length{20pt} -\define@key{mdf}{margin}[20pt]{% - \md@PackageWarning{The option margin is obsolote and no longer used\MessageBreak - use instead innerleftmargin and innerrightmargin\MessageBreak - For more details look at the documentation \mdframedpackagename}% - \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 -\setlength\mdf@margin@length{\mdf@margin} -} - -\newcommand*\mdf@innerleftmargin{10pt} -\newcommand*\mdfl@innerleftmargin{} -\newlength\mdf@innerleftmargin@length -\deflength\mdf@innerleftmargin@length{10pt} -\define@key{mdf}{innerleftmargin}[10pt]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@innerleftmargin{\the\md@templength}}% - {\global\edef\mdfl@innerleftmargin{\the\md@templength}} -\let\mdf@innerleftmargin\mdfl@innerleftmargin -\setlength\mdf@innerleftmargin@length{\mdf@innerleftmargin} -} - -\newcommand*\mdf@innerrightmargin{10pt} -\newcommand*\mdfl@innerrightmargin{} -\newlength\mdf@innerrightmargin@length -\deflength\mdf@innerrightmargin@length{10pt} -\define@key{mdf}{innerrightmargin}[10pt]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@innerrightmargin{\the\md@templength}}% - {\global\edef\mdfl@innerrightmargin{\the\md@templength}} -\let\mdf@innerrightmargin\mdfl@innerrightmargin -\setlength\mdf@innerrightmargin@length{\mdf@innerrightmargin} -} - - - -\newcommand*\mdf@innertopmargin{0.4\baselineskip} -\newcommand*\mdfl@innertopmargin{} -\newlength\mdf@innertopmargin@length -\deflength\mdf@innertopmargin@length{0.4\baselineskip} -\define@key{mdf}{innertopmargin}[0.4\baselineskip]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@innertopmargin{\the\md@templength}}% - {\global\edef\mdfl@innertopmargin{\the\md@templength}} -\let\mdf@innertopmargin\mdfl@innertopmargin -\setlength\mdf@innertopmargin@length{\mdf@innertopmargin} -} - -\newcommand*\mdf@innerbottommargin{0.4\baselineskip} -\newcommand*\mdfl@innerbottommargin{} -\newlength\mdf@innerbottommargin@length -\deflength\mdf@innerbottommargin@length{0.4\baselineskip} -\define@key{mdf}{innerbottommargin}[0.4\baselineskip]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@innerbottommargin{\the\md@templength}}% - {\global\edef\mdfl@innerbottommargin{\the\md@templength}} -\let\mdf@innerbottommargin\mdfl@innerbottommargin -\setlength\mdf@innerbottommargin@length{\mdf@innerbottommargin} -} - - -\newcommand*\mdf@splittopskip{\z@} -\newcommand*\mdfl@splittopskip{} -\newlength\mdf@splittopskip@length -\deflength\mdf@splittopskip@length{\z@} -\define@key{mdf}{splittopskip}[\z@]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@splittopskip{\the\md@templength}}% - {\global\edef\mdfl@splittopskip{\the\md@templength}} -\let\mdf@splittopskip\mdfl@splittopskip -\setlength\mdf@splittopskip@length{\mdf@splittopskip} -} - - - -\newcommand*\mdf@splitbottomskip{\z@} -\newcommand*\mdfl@splitbottomskip{} -\newlength\mdf@splitbottomskip@length -\deflength\mdf@splitbottomskip@length{\z@} -\define@key{mdf}{splitbottomskip}[\z@]{% - \def\@tempa{#1} - \md@iflength{\@tempa}% - {\global\edef\mdfl@splitbottomskip{\the\md@templength}}% - {\global\edef\mdfl@splitbottomskip{\the\md@templength}} -\let\mdf@splitbottomskip\mdfl@splitbottomskip -\setlength\mdf@splitbottomskip@length{\mdf@splitbottomskip} -} - - -%% Linienstaerken -\newcommand*\mdf@linewidth{0.4pt} -\newcommand*\mdfl@linewidth{} -\newlength\mdf@linewidth@length -\deflength\mdf@linewidth@length{0.4pt} -\define@key{mdf}{linewidth}[0.4pt]{% - \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 -\setlength\mdf@linewidth@length{\mdf@linewidth}% -\ifnumequal{\mdf@style}{1}{% -\deflength\mdf@middlelinewidth@length{\mdf@linewidth@length}% -}{}% -} - -\newcommand*\mdf@innerlinewidth{\z@} -\newcommand*\mdfl@innerlinewidth{} -\newlength\mdf@innerlinewidth@length -\deflength\mdf@innerlinewidth@length{\z@} -\define@key{mdf}{innerlinewidth}[\z@]{% - \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 -\setlength\mdf@innerlinewidth@length{\mdf@innerlinewidth} -} - -\newcommand*\mdf@middlelinewidth{\mdf@linewidth} -\newcommand*\mdfl@middlelinewidth{} -\newlength\mdf@middlelinewidth@length -\deflength\mdf@middlelinewidth@length{\mdf@linewidth@length} -\define@key{mdf}{middlelinewidth}[\mdf@linewidth]{% - \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 -\setlength\mdf@middlelinewidth@length{\mdf@middlelinewidth} -} - -\newcommand*\mdf@outerlinewidth{\z@} -\newcommand*\mdfl@outerlinewidth{} -\newlength\mdf@outerlinewidth@length -\deflength\mdf@outerlinewidth@length{\z@} -\define@key{mdf}{outerlinewidth}[\z@]{% - \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 -\setlength\mdf@outerlinewidth@length{\mdf@outerlinewidth} -} - -\newcommand*\mdf@roundcorner{\z@} -\newcommand*\mdfl@roundcorner{} -\newlength\mdf@roundcorner@length -\deflength\mdf@roundcorner@length{\z@} -\define@key{mdf}{roundcorner}[\z@]{% - \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 -\setlength\mdf@roundcorner@length{\mdf@roundcorner} +\mdf@dolist{\mdf@do}{% + {skipabove==\z@},% + {skipbelow==\z@},% + {leftmargin==\z@},% + {rightmargin==\z@},% + {margin==20pt},% + {innerleftmargin==10pt},% + {innerrightmargin==10pt},% + {innertopmargin==0.4\baselineskip},% + {innerbottommargin==0.4\baselineskip},% + {splittopskip==\z@},% + {splitbottomskip==\z@},% + {outermargin==\z@},% + {innermargin==\z@},% + {linewidth==0.4pt},% + {innerlinewidth==\z@},% + {middlelinewidth==\expandafter\mdf@linewidth@length},% + {outerlinewidth==\z@},% + {roundcorner==\z@},% +} + +%Unterstuetzung der Optionen fuer tikz +\def\mdf@tikzset@local{\tikzset{tikzsetting/.style={}}} +\define@key{mdf}{tikzsetting}{% + \def\mdf@tikzset@local{\tikzset{tikzsetting/.style={#1}}} } %Unterstuetzung der Optionen fuer pstricks @@ -379,19 +172,15 @@ \def\mdf@psset@local{#1} } - -%%Defaulunit \DeclareStringOption[pt]{defaultunit} %%mdframed umfasst ntheorem-Umgebung ja/nein \DeclareBoolOption{ntheorem} - +%Linienausgabe \DeclareBoolOption[true]{topline} \DeclareBoolOption[true]{leftline} \DeclareBoolOption[true]{bottomline} \DeclareBoolOption[true]{rightline} - - %%FARBEN \DeclareStringOption[none]{xcolor} \DeclareStringOption[black]{linecolor} @@ -400,15 +189,14 @@ \DeclareStringOption[\mdf@linecolor]{innerlinecolor} \DeclareStringOption[\mdf@linecolor]{outerlinecolor} \DeclareStringOption[\mdf@backgroundcolor]{middlelinecolor} - +\DeclareStringOption[\mdf@backgroundcolor]{psroundlinecolor} \DeclareDefaultOption{% \md@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} - -%%==================================================%% -%%========== ENDE DER OPTIONENDEKLARATION ==========%% -%%==================================================%% +%%Uberschriften +\DeclareStringOption{frametitle} +\DeclareStringOption[\bfseries\large]{frametitlefont} \ProcessKeyvalOptions* \newcommand*{\mdfsetup}{\setkeys{mdf}} @@ -430,78 +218,79 @@ } } +%%==================================================%% +%%========Angepasste lrbox sowie trivlist===========%% +%%==================================================%% +%Anpassung lrbox +\let\md@lrbox\lrbox +\let\endmd@lrbox\endlrbox +\patchcmd\md@lrbox\hbox\vbox{}{} +\patchcmd\md@lrbox\color@setgroup{% +\color@setgroup\color{\mdf@fontcolor}% +\hsize=\md@horizontalspaceofbox% +\columnwidth=\hsize% +\textwidth=\hsize% +\linewidth=\hsize% +\bgroup\md@@frametitle\egroup\noindent% +}{}{} + +%Anpassung trivlist +\let\md@trivlist\trivlist +\let\endmd@trivlist\endtrivlist +\patchcmd\endmd@trivlist\@endparenv\md@endparenv{}{} +\def\md@endparenv{% + \addpenalty\@endparpenalty\addvspace\mdf@skipbelow@length\@endpetrue} + +%%==================================================%% +%%=================== Frametitle ===================%% +%%==================================================%% +\providecommand*\mdframedtitleenv[1]{% + \@afterindentfalse + {\parindent \z@ + \setlength{\parfillskip}{\z@ plus 1fil}% + \raggedsection\nobreak\mdf@frametitlefont#1\relax% + \par}% + \@afterheading} +% +\newrobustcmd*\md@@frametitle{% + \ifx\mdf@frametitle\@empty\relax% + \else + \color@begingroup\@nobreaktrue% + \mdframedtitleenv{\mdf@frametitle}% + \color@endgroup + \fi% +} - -%%Farbabkuerzungen: -\newcommand*\mdf@@linecolor{\color{\mdf@linecolor}} -\newcommand*\mdf@@backgroundcolor{ - \ifx\mdf@backgroundcolor\@empty - \else - \color{\mdf@backgroundcolor} - \fi} -\newcommand*\mdf@@fontcolor{\color{\mdf@fontcolor}} -\newcommand*\mdf@@innerlinecolor{\color{\mdf@innerlinecolor}} -\newcommand*\mdf@@outerlinecolor{\color{\mdf@outerlinecolor}} -\newcommand*\mdf@@middlelinecolor{\color{\mdf@middlelinecolor}} - +\newrobustcmd*\md@checkntheorem{% + \ifbool{mdf@ntheorem}% %%% Pruefen ob ntheorem gesetzt ist + {\ifundef{\theorempreskipamount}% + {\md@PackageWarning{You have not loaded ntheorem yet}}% + {\setlength{\theorempreskipamount}{\z@}% + \setlength{\theorempostskipamount}{\z@}% + }% + }{}% +} %%==================================================%% %%======= Laden der gewuenschten Style-Datei =======%% %%==================================================%% \ifcase\mdf@style\relax% \input{md-frame-0.mdf}% - \or% - \input{md-frame-1.mdf}% - \or% - \md@PackageWarning{The style number\mdf@style does not exist\MessageBreak + \or\input{md-frame-1.mdf}% + \or\md@PackageWarning{The style number\mdf@style does not exist\MessageBreak mdframed ues instead style=0 \mdframedpackagename}% - \input{md-frame-1.mdf}% - \or% - \input{md-frame-3.mdf}% + \input{md-frame-0.mdf}% + \or\input{md-frame-3.mdf}% \else% - \IfFileExists{md-frame-\mdf@style.mdf}{% - \input{md-frame-\mdf@style.mdf}% - }{% - \input{md-frame-1.mdf}% + \IfFileExists{md-frame-\mdf@style.mdf}{\input{md-frame-\mdf@style.mdf}% + }{\input{md-frame-1.mdf}% \md@PackageWarning{The style number \mdf@style does not exist\MessageBreak mdframed ues instead style=0 \mdframedpackagename}% }% \fi% - - %%==================================================%% -%%===Globale Umgebung -- noch keine Modifikation ===%% +%%========= style-abhaengige Modifikation ==========%% %%==================================================%% -\def\md@margin@startenv{% latex.ltx -> \@startsection - \if@noskipsec \leavevmode \fi - \par%\kern-\lastskip% - \@tempskipa -\mdf@skipabove@length\relax - \@afterindenttrue - \ifdim \@tempskipa < \z@ - \@tempskipa -\@tempskipa \@afterindentfalse% - \fi - \if@nobreak - \everypar{}% - \else - \addpenalty\@secpenalty\addvspace\@tempskipa% - \par\kern-\ht\strutbox - \fi% -}% - - -\def\mdframed{% - \@ifnextchar[%] - \mdframed@i\mdframed@ii}% - -\def\mdframed@ii{\mdframed@i[]}% -\def\mdframed@i[#1]{% default-Umgebung - \mdfsetup{#1}%% - \md@margin@startenv% - \ifmdf@ntheorem% %%% Pruefen ob ntheorem gesetzt ist - \ifundef{\theorempreskipamount}% - {\md@PackageWarning{You have not loaded ntheorem yet}}% - {\setlength{\theorempreskipamount}{0pt}% - \setlength{\theorempostskipamount}{0pt}}% - \fi% +\newrobustcmd*\md@styledefinition{% \ifnumequal{\mdf@style}{0}% {\deflength{\mdf@innerlinewidth@length}{\z@}% \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% @@ -512,283 +301,200 @@ }{}% \ifnumequal{\mdf@style}{3}% {\deflength{\mdf@innerlinewidth@length}{\z@}% - \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% \deflength{\mdf@outerlinewidth@length}{\z@}% \let\mdf@innerlinecolor\mdf@linecolor% }{}% - \mdframed@global@env% - }% - -\def\endmdframed{\endmdframed@global@env\endtrivlist% -\vspace{\mdf@skipbelow@length}}% +% \ifnumequal{\mdf@style}{1}% +% {\deflength{\mdf@innerlinewidth@length}{\z@}% +% \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% +% \deflength{\mdf@outerlinewidth@length}{\z@}% +% \let\mdf@innerlinecolor\mdf@linecolor% +% }{}% +} %%==================================================%% %%==Deklaration diverser Eingabe und Hilfsparameter=%% %%==================================================%% - -\newskip\md@temp@skip@a \md@temp@skip@a\z@ %% Hilfslaenge - -\newlength\md@verticalmarginwhole@length - -\newlength\mdf@xmargin@length% -\newlength\mdf@ymargin@length% -\newlength\mdfboxheight% %% Berechnungsvariable tikz -\newlength\mdfboxwidth% %% Berechnungsvariable tikz - - \newlength\mdfboundingboxheight \newlength\mdfboundingboxwidth -\newlength\mdfpositionx -\newlength\mdfpositiony - +\newlength\md@freevspace@length +\newlength\md@horizontalwidthofbox@length +\newlength\md@verticalmarginwhole@length \providecommand*\ptTps{} - %%==================================================%% -%%=================== Kommentare ===================%% +%%==================Umgebung========================%% %%==================================================%% +\def\mdframed{\@ifnextchar[\mdframed@i\mdframed@ii}% +\def\mdframed@ii{\mdframed@i[]}% +\def\mdframed@i[#1]{% default-Umgebung +\begingroup +%check is needed? + \mdfsetup{#1}%% + \let\width\z@% + \let\height\z@% + \let\partopsep\z@ + \setlength{\topsep}{\mdf@skipabove@length}% + \begin{md@trivlist}\item\relax% + \md@checkntheorem% + \md@styledefinition% + \md@horizontalmargin@equation% + \begin{md@lrbox}{\@tempboxa}% + }% -\chardef\md@arrayparboxrestore=\catcode`\| % for debug -\catcode`\|=\catcode`\% % (debug: insert space after backslash) -%% Kommentare werden im Code mit | gekennzeichnet - +\def\endmdframed{% + \end{md@lrbox}% + \md@put@frame% + \end{md@trivlist}% + \hrule \@height\z@ \@width\hsize +\endgroup% +} %%==================================================%% %%================= Platz auf Seite ================%% %%==================================================%% -\newlength\md@freevspace@length -\def\md@freepagevspace{% +\newrobustcmd*\md@freepagevspace{% + \penalty\@M \vskip 2\baselineskip \vskip\height + \penalty9999 \vskip -2\baselineskip \vskip-\height + \penalty9999 \ifdimequal{\pagegoal}{\maxdimen}% - {% - \setlength{\md@freevspace@length}{\vsize}% - }{ - \setlength{\md@freevspace@length}{\pagegoal}% - \addtolength{\md@freevspace@length}{-\pagetotal}% + {\md@freevspace@length\vsize}% + {\md@freevspace@length=\pagegoal\relax% + \advance\md@freevspace@length by -\pagetotal\relax% }% } %%==================================================%% -%================= Breite der BOX =================%% +%================= Breite der Box =================%% %%==================================================%% +\newrobustcmd*\md@advancelength@orizontalmargin@add[1]{% + \advance\md@horizontalspaceofbox by -\csname mdf@#1@length\endcsname\relax% +} -% edge-leftmargin-outerlinewith-middlelinewidth-innerlinewidth-innerleftmargin-TEXTBREITE- -% innerrightmargin-innerlinewidth-middlelinewidth-outelinewith-edge \newlength\md@horizontalspaceofbox -\def\md@horizontalmargin@equation{% - \setlength{\md@horizontalspaceofbox}{\hsize} - \addtolength{\md@horizontalspaceofbox}{% - -\mdf@leftmargin@length% - -\mdf@outerlinewidth@length% - -\mdf@middlelinewidth@length% - -\mdf@innerlinewidth@length% - -\mdf@innerleftmargin@length% - -\mdf@innerrightmargin@length% - -\mdf@innerlinewidth@length% - -\mdf@middlelinewidth@length% - -\mdf@outerlinewidth@length% - -\mdf@rightmargin@length% - }% - \ifboolexpr{ test {\ifnumequal{\mdf@style}{0}} or test {\ifnumequal{\mdf@style}{3}}}% - { - \notbool{mdf@leftline}{\addtolength{\md@horizontalspaceofbox}{% - \mdf@innerlinewidth@length% - +\mdf@middlelinewidth@length% - +\mdf@outerlinewidth@length% - }}{}% - \notbool{mdf@rightline}{\addtolength{\md@horizontalspaceofbox}{% - \mdf@innerlinewidth@length% - +\mdf@middlelinewidth@length% - +\mdf@outerlinewidth@length% - }}{}% - }{}% - \advance\md@horizontalspaceofbox by - \width\md@arrayparboxrestore% +\newrobustcmd*\md@horizontalmargin@equation{% + \setlength{\md@horizontalspaceofbox}{\hsize}% + \mdf@dolist{\md@advancelength@orizontalmargin@add}{% + leftmargin,outerlinewidth,middlelinewidth,% + innerlinewidth,innerleftmargin,innerrightmargin,% + innerlinewidth,middlelinewidth,outerlinewidth,% + rightmargin}% + \notbool{mdf@leftline}{% + \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + }{}% + \notbool{mdf@rightline}{% + \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + }{}% + % \advance\md@horizontalspaceofbox by - \width\md@arrayparboxrestore% %%% Beruecksichtigung, dass Auszaehlung bzw. list-Umgebung enthalten \ifdimless{\md@horizontalspaceofbox}{3cm}{\md@PackageWarning{You have only a width of 3cm}}{} \hsize=\md@horizontalspaceofbox% } - - - %%==================================================%% -%%========= Seitenparameter und Strafpunkte ========%% -%%==================================================%% -\def\md@penalty@startenv{% - \begingroup% - \skip@\lastskip% %%% lastskip nur ungleich null nach section, list, figure, usw. - \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 -}% - +%%===========Beruecksichtige Linienausgabe==========%% +%%==================================================%% +\newrobustcmd*\md@keeplines@single{% + \notbool{mdf@topline}{% + \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + }{}% + \notbool{mdf@bottomline}{% + \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + }{}% +} %%==================================================%% -%%============Start der globalen Umgebung===========%% +%%===========Additionsalgorithmus fuer for==========%% %%==================================================%% -\newskip\md@temp@frame@hsize \md@temp@frame@hsize=0pt% -\newskip\md@temp@frame@vsize \md@temp@frame@vsize=0pt% +\newrobustcmd*\md@advancelength@verticalmarginwhole[1]{% + \advance\md@verticalmarginwhole@length by \csname mdf@#1@length\endcsname\relax% +} -\def\mdframed@global@env{\relax% - \let\width\z@% - \let\height\z@% - \md@penalty@startenv% - \def\@doendpe{\@endpetrue% %%% SIEHE LATEX.ltx -- ersten Absatz ignorieren - \def\par{\@restorepar\par\@endpefalse}% - \everypar{{\setbox\z@\lastbox}\everypar{}\@endpefalse}% - }% - \md@horizontalmargin@equation% - \setbox\@tempboxa% - \vbox\bgroup\@doendpe% - \begingroup% %%% zweites begingroup noetig, dass fontcolor gesetzt werden kann - \mdf@@fontcolor% %%% Setzen der Schriftfarbe - \textwidth\md@horizontalspaceofbox \columnwidth\md@horizontalspaceofbox% -}% - -\def\endmdframed@global@env{\par% - \kern\z@% - \hrule\@width\md@horizontalspaceofbox\@height\z@% - \penalty-100 % put depth into height - \endgroup% - \egroup% - \begingroup% - \mdf@@fontcolor% - \setbox\@tempboxa\vbox{\unvbox\@tempboxa} - \md@put@frame% - \endgroup% +\newrobustcmd*\md@advancelength@freevspace@sub[1]{% + \advance\dimen@ by -\csname mdf@#1@length\endcsname\relax% } +\newrobustcmd*\md@advancelength@freevspace@add[1]{% + \advance\dimen@ by \csname mdf@#1@length\endcsname\relax% +} %%==================================================%% -%%===========Ausgaberoutine -> Berechnung===========%% +%%====================Reset changes=================%% %%==================================================%% - -%% \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) - +\protected@edef\md@reset{\boxmaxdepth\the\boxmaxdepth + \splittopskip\the\splittopskip}% +%%==================================================%% +%%===========Ausgaberoutine -> Berechnung===========%% +%%==================================================%% \def\md@put@frame{\relax% - \md@freepagevspace - \ifdimless{\md@freevspace@length}{1.999\baselineskip} +\ifvoid\@tempboxa\relax +\md@PackageWarning{The environment is empty\MessageBreak}% +\else + \md@freepagevspace% + \ifdimless{\md@freevspace@length}{2\baselineskip} {\md@PackageInfo{Not enough space on this page}%die Seite hat nur noch minimal Platz - \clearpage% + \vfill\eject% \md@put@frame }{% %Hier berechnung Box-Inhalt+Rahmen oben und unten \setlength{\md@verticalmarginwhole@length}{\ht\@tempboxa+\dp\@tempboxa}% - \addtolength{\md@verticalmarginwhole@length}{% - \mdf@outerlinewidth@length% - +\mdf@middlelinewidth@length% - +\mdf@innerlinewidth@length% - +\mdf@innertopmargin@length% - +\mdf@innerbottommargin@length% - +\mdf@innerlinewidth@length% - +\mdf@middlelinewidth@length% - +\mdf@outerlinewidth@length% - }% - \ifnumequal{\mdf@style}{0}% - {\ifbool{mdf@topline}{}% - {\addtolength{\md@verticalmarginwhole@length}{-\mdf@middlelinewidth@length}% - }% - \ifbool{mdf@bottomline}{}% - {\addtolength{\md@verticalmarginwhole@length}{-\mdf@middlelinewidth@length}% - }% - }{} - \ifnumequal{\mdf@style}{3}% - {\ifbool{mdf@topline}{}% - {\addtolength{\md@verticalmarginwhole@length}{-\mdf@middlelinewidth@length}% - }% - \ifbool{mdf@bottomline}{}% - {\addtolength{\md@verticalmarginwhole@length}{-\mdf@middlelinewidth@length}% - }% - }{} - \ifdimless{\md@verticalmarginwhole@length}{\md@freevspace@length}% + \mdf@dolist{\md@advancelength@verticalmarginwhole}{% + outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, + innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% + \md@keeplines@single% + \ifdimless{\md@verticalmarginwhole@length}{\md@freevspace@length}% {\md@putbox@single}%passt auf Seite {\md@put@frame@i}%passt nicht auf Seite - } + }% +\fi } \def\md@put@frame@i{%Box muss gesplittet werden -- Ausgabe der ersten Teilbox %Berechnung der Splittgroesse -- Linien und Abstand oben - \md@freepagevspace - \setlength{\dimen@}{\md@freevspace@length}% - \addtolength{\dimen@}{% - -\mdf@outerlinewidth@length% - -\mdf@middlelinewidth@length% - -\mdf@innerlinewidth@length% - -\mdf@innertopmargin@length% - -\mdf@splitbottomskip@length% - }% - \ifnumequal{\mdf@style}{0}% - {\ifbool{mdf@topline}{}% - {\addtolength{\dimen@}{+\mdf@middlelinewidth@length}% - }% - }{} - \ifnumequal{\mdf@style}{3}% - {\ifbool{mdf@topline}{}% - {\addtolength{\dimen@}{\mdf@middlelinewidth@length}% - }% - }{} - \ifdimless{\ht\@tempboxa+\dp\@tempboxa}{\dimen@}% + \md@freepagevspace% + \dimen@=\the\md@freevspace@length% + \dimen@i=\mdf@innertopmargin@length% + \advance\dimen@i by \mdf@linewidth@length% + \advance\dimen@i by 2\baselineskip% + \ifdim\dimen@<\dimen@i\relax + \hrule \@height\z@ \@width\hsize% + \vfill\eject% + \md@put@frame + \else% + \mdf@dolist{\md@advancelength@freevspace@sub}{% + outerlinewidth,middlelinewidth,innerlinewidth,% + innertopmargin,splitbottomskip}% + \ifbool{mdf@topline}{}{\advance\dimen@ by \mdf@middlelinewidth@length}% + \ifdimless{\ht\@tempboxa+\dp\@tempboxa}{\dimen@}% {\md@PackageWarning{You got a bad break\MessageBreak you have to change it manually\MessageBreak by changing the text, the space\MessageBreak or something else}% - \addtolength{\dimen@}{-1.8\baselineskip} + \advance\dimen@ by -1.8\baselineskip\relax% }{}% - \addtolength{\dimen@}{-\pageshrink}%Box darf nicht zu Groß werden. - \boxmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \advance\dimen@ by -1pt\relax%Box darf nicht zu Groß werden. + \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% \setbox\tw@\vsplit\@tempboxa to \dimen@ - \setbox\tw@\vbox{\unvbox\tw@}% + \setbox\tw@\vbox{\unvbox\tw@}%needed? \ifdimgreater{\ht\tw@+\dp\tw@}{\dimen@}{%Falsch gesplittet - \setlength\dimen@i{\dimen@} - \addtolength{\dimen@}{-\ht\tw@-\dp\tw@} - \addtolength\dimen@i{0.5\dimen@} - \boxmaxdepth\z@ \splittopskip\z@% - \setbox\@tempboxa\vbox{\unvbox\tw@\unvbox\@tempboxa} - \boxmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \md@PackageInfo{Box was splittet wrong\MessageBreak}% + \dimen@i=\dimen@ + \advance\dimen@ by -\ht\tw@ + \advance\dimen@ by -\dp\tw@ + \advance\dimen@i by 0.5\dimen@ + \splittopskip\z@% + \setbox\@tempboxa\vbox{\unvbox\tw@% + \hrule \@height\dp\strutbox \@width\z@%benoetigt um Tiefe zu haben + \unvbox\@tempboxa} + \splittopskip\mdf@splittopskip@length% \setbox\tw@\vsplit\@tempboxa to \dimen@i \setbox\tw@\vbox{\unvbox\tw@}% }{}% @@ -798,39 +504,40 @@ because the splittet box is empty\MessageBreak You have to change the page settings\MessageBreak like enlargethispage or something else}% + \setbox\@tempboxa\vbox{\box\tw@\box\@tempboxa}% + \md@put@frame \fi - \ifdimequal{\wd\tw@}{0pt}%%pruefe, ob erste Box leer ist - {\clearpage% + \ifvoid\tw@%%pruefe, ob erste Box leer ist + \hrule \@height\z@ \@width\hsize + \vfill\eject% + \md@put@frame% + \else + \ifdimequal{\ht\tw@}{0pt} + {\hrule \@height\z@ \@width\hsize% + \vfill\eject% + \setbox\@tempboxa\vbox{\unvbox\tw@\unvbox\@tempboxa} \md@put@frame}% - {\md@putbox@first%%Groesse des Splittens passt - \eject%\clearpage% - \md@put@frame@ii}% + {% + \md@putbox@first%%Groesse des Splittens passt + \hrule \@height\z@ \@width\hsize + \vfill\eject% + \md@put@frame@ii% + } + \fi% + \fi } - \def\md@put@frame@ii{%Ausgabe der mittleren Box(en) wenn vorhanden \setlength{\md@freevspace@length}{\vsize}% \setlength{\dimen@}{\ht\@tempboxa+\dp\@tempboxa}% - \addtolength{\dimen@}{%%Addition der Linien unten - \mdf@outerlinewidth@length% - +\mdf@middlelinewidth@length% - +\mdf@innerlinewidth@length% - +\mdf@innerbottommargin@length% - }% - \ifboolexpr{( bool {mdf@bottomline} ) - and - ( test {\ifnumequal{\mdf@style}{0}} - or - test {\ifnumequal{\mdf@style}{3}} - ) - }% - {}{\addtolength{\dimen@}{-\mdf@middlelinewidth@length}}% - \ifdimgreater{\dimen@}{\md@freevspace@length}% + \mdf@dolist{\md@advancelength@freevspace@add}{% + outerlinewidth,middlelinewidth,innerlinewidth,% + innerbottommargin}%%%Addition der Linien unten + \ifbool{mdf@bottomline}{}{\advance\dimen@ by -\mdf@middlelinewidth@length\relax}% + \ifdimgreater{\dimen@}{\md@freevspace@length}% {% - \addtolength{\md@freevspace@length}{%%Abzug der Linien unten - -\mdf@splitbottomskip@length% - }% - \boxmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \advance\md@freevspace@length by -\mdf@splitbottomskip@length + \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% \setbox\tw@\vsplit\@tempboxa to \md@freevspace@length% \setbox\tw@\vbox{\unvbox\tw@}%PRUEFEN!!! \setbox\@tempboxa\vbox{\unvbox\@tempboxa}%PRUEFEN!!!! @@ -840,79 +547,30 @@ You have to change the settings}% \fi% \md@putbox@middle% - \clearpage\md@put@frame@ii% + \hrule \@height\z@ \@width\hsize + \vfill\eject + \md@put@frame@ii% }%Hier die Ausgabe der mittleren Box - {\ifdimequal{\wd\@tempboxa}{\z@}{\md@PackageWarning{You got a bad break\MessageBreak - because the splittet box is empty\MessageBreak + {\ifvoid\@tempboxa + \md@PackageWarning{You got a bad break\MessageBreak + because the last splittet box is empty\MessageBreak You have to change the settings}% - }{}% - \md@putbox@second}%Hier kommt die Ausgabe der letzten Box -} - - - - -\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\md@horizontalspaceofbox - \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=\md@horizontalspaceofbox - \fi - \sloppy + \fi% + \md@putbox@second% + }%Hier kommt die Ausgabe der letzten Box } %%==================================================%% %%= Sicherstellen, dass Optionen nur global setzbar=%% %%==================================================%% - \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{globalstyle}% - \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{xcolor}% - - \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -EOF -EOF -EOF - -- cgit v1.2.3