From 17c64171472e3210951167496fe1a0a3d82f79ab Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 23 Dec 2010 23:33:55 +0000 Subject: mdframed 0.6a (23dec10) git-svn-id: svn://tug.org/texlive/trunk@20841 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/mdframed/mdframed.sty | 1145 ++++++++++++--------- 1 file changed, 631 insertions(+), 514 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 c4501813fd9..e93dbda1ffe 100644 --- a/Master/texmf-dist/tex/latex/mdframed/mdframed.sty +++ b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty @@ -32,15 +32,25 @@ %% %% %%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%% + +%%$Id: mdframed.sty 103 2010-12-22 16:46:10Z marco $ +%%$Rev: 103 $ +%%$Author: marco $ +%%$Date: 2010-12-22 17:46:10 +0100 (Mi, 22. Dez 2010) $ + %% Allgemeine Angaben +\def\mdversion{v0.6a} +\def\mdframedpackagename{mdframed} +\def\md@maindate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{mdframed}[2010/05/14 v4a: mdframed] +\ProvidesPackage{mdframed}[\md@maindate@svn$Id: mdframed.sty 103 2010-12-22 16:46:10Z marco $ \mdversion: \mdframedpackagename] %%==================================================%% %%=============== Benoetigte Pakete ================%% %%==================================================%% -\newcommand*\mdframedpackagename{mdframed} + \newcommand*\md@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} +\newcommand*\md@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} \newcommand*\md@LoadFile@IfExist[1]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}% @@ -57,43 +67,15 @@ \md@LoadFile@IfExist{color} -\md@LoadFile@IfExist{tikz} + +%Eingearbeitet in Optionen +%\md@LoadFile@IfExist{pstricks} +%\md@LoadFile@IfExist{pstricks} \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 ==============%% @@ -117,311 +99,452 @@ } \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% +%%} %%==================================================%% -%%========Sicherstellen der key-value-Syntax========%% +%%==================== Optionen ====================%% %%==================================================%% -\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 - } -} +%Festlegung welcher Stildatei +%% 0 := tex-Kommandos -- rule +%% 1 := tikz +%% 2 := tikz-erweitert +%% 3 := pstricks-einfach +%% 4 := pstricks-erweitert +\DeclareStringOption[0]{style} -%%%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 +\define@key{mdf}{globalstyle}[\mdf@style]{% + \renewcommand*{\do}[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 + }% + \docsvlist{\mdf@style,#1}% + } -%%==================================================%% -%%========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 +%%%%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} } -\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 +\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} } -\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}} +\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} } -\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 +\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} +} -\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 +\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} } -\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 +\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} } -\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 +\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} } -\define@key{mdfl}{fontcolor}[\mdf@fontcolor]{% -\def\@tempa{#1} -\let\mdf@fontcolor\@tempa\relax +\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} } -\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 +\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} } -\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 +\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} } -\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 + +%% 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}% +}{}% } -\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 +\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} } -\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}} +\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} } -\define@key{mdfl}{middlelinecolor}[\mdf@middlelinecolor]{% -\def\@tempa{#1} -\let\mdf@middlelinecolor\@tempa\relax +\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} } -\define@key{mdfl}{outerlinecolor}[\mdf@outerlinecolor]{% -\def\@tempa{#1} -\let\mdf@outerlinecolor\@tempa\relax +\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} } -\define@key{mdfl}{innerlinecolor}[\mdf@innerlinecolor]{% -\def\@tempa{#1} -\let\mdf@innerlinecolor\@tempa\relax +%Unterstuetzung der Optionen fuer pstricks +\def\mdf@psset@local{} +\define@key{mdf}{pstrickssetting}{% + \def\mdf@psset@local{#1} } +%%Defaulunit +\DeclareStringOption[pt]{defaultunit} -%%==================================================%% -%%======= 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% - +%%mdframed umfasst ntheorem-Umgebung ja/nein +\DeclareBoolOption{ntheorem} -%%==================================================%% -%%==Deklaration diverser Eingabe und Hilfsparameter=%% -%%==================================================%% +\DeclareBoolOption[true]{topline} +\DeclareBoolOption[true]{leftline} +\DeclareBoolOption[true]{bottomline} +\DeclareBoolOption[true]{rightline} -\newcommand\mdframedabovespace[1]{\def\md@space@above@frame{#1}} -\mdframedabovespace{0pt} %% Abstand vor der Frame-Umgebung +%%FARBEN +\DeclareStringOption[none]{xcolor} +\DeclareStringOption[black]{linecolor} +\DeclareStringOption[white]{backgroundcolor} +\DeclareStringOption[black]{fontcolor} +\DeclareStringOption[\mdf@linecolor]{innerlinecolor} +\DeclareStringOption[\mdf@linecolor]{outerlinecolor} +\DeclareStringOption[\mdf@backgroundcolor]{middlelinecolor} -\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 +\DeclareDefaultOption{% + \md@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} -\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 +%%==================================================%% +%%========== ENDE DER OPTIONENDEKLARATION ==========%% +%%==================================================%% +\ProcessKeyvalOptions* +\newcommand*{\mdfsetup}{\setkeys{mdf}} +\mdfsetup{globalstyle=0} -\newlength{\mdf@tikz@linewidth} %% Liniendicke fuer tikz +%%==================================================%% +%%========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 + } +} -\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 +%%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}} +%%==================================================%% +%%======= 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 + mdframed ues instead style=0 \mdframedpackagename}% + \input{md-frame-1.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}% + \md@PackageWarning{The style number \mdf@style does not exist\MessageBreak + mdframed ues instead style=0 \mdframedpackagename}% + }% +\fi% -\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% +\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% - \ifnumless{\mdf@style}{1}% - {\renewcommand{\mdf@innerlinewidth}{\z@}% - \renewcommand{\mdf@middlelinewidth}{\mdf@linewidth}% - \renewcommand{\mdf@outerlinewidth}{\z@}% + \ifnumequal{\mdf@style}{0}% + {\deflength{\mdf@innerlinewidth@length}{\z@}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% + \deflength{\mdf@outerlinewidth@length}{\z@}% + \let\mdf@innerlinecolor\mdf@linecolor% + \let\mdf@middlelinecolor\mdf@linecolor% + \let\mdf@outerlinecolor\mdf@linecolor% + }{}% + \ifnumequal{\mdf@style}{3}% + {\deflength{\mdf@innerlinewidth@length}{\z@}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth}% + \deflength{\mdf@outerlinewidth@length}{\z@}% \let\mdf@innerlinecolor\mdf@linecolor% }{}% \mdframed@global@env% }% - {\endmdframed@global@env\addvspace{\mdf@skipbelow}} +\def\endmdframed{\endmdframed@global@env\endtrivlist% +\vspace{\mdf@skipbelow@length}}% + +%%==================================================%% +%%==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 + + + +\providecommand*\ptTps{} + %%==================================================%% %%=================== Kommentare ===================%% @@ -433,51 +556,69 @@ %%==================================================%% -%%================= 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 +%%================= Platz auf Seite ================%% +%%==================================================%% +\newlength\md@freevspace@length +\def\md@freepagevspace{% + \ifdimequal{\pagegoal}{\maxdimen}% + {% + \setlength{\md@freevspace@length}{\vsize}% + }{ + \setlength{\md@freevspace@length}{\pagegoal}% + \addtolength{\md@freevspace@length}{-\pagetotal}% + }% } %%==================================================%% -%%============Start der globalen Umgebung===========%% -%%==================================================%% +%================= Breite der BOX =================%% +%%==================================================%% + +% 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% + %%% Beruecksichtigung, dass Auszaehlung bzw. list-Umgebung enthalten + \ifdimless{\md@horizontalspaceofbox}{3cm}{\md@PackageWarning{You have only a width of 3cm}}{} + \hsize=\md@horizontalspaceofbox% +} + + -\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 + +%%==================================================%% +%%========= 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 @@ -490,59 +631,70 @@ \edef\@tempa{\the\skip@}% \edef\@tempb{\the\z@skip}% \ifx\@tempa\@tempb %%% ??????? - \penalty-30 + \penalty-30% \else - \vskip-\skip@ - \penalty-30 - \vskip\skip@ + \vskip-\skip@% + \penalty-30% + \vskip\skip@% \fi \fi \fi - \penalty\z@ + \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@ + \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 + \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% -} +}% + + +%%==================================================%% +%%============Start der globalen Umgebung===========%% +%%==================================================%% +\newskip\md@temp@frame@hsize \md@temp@frame@hsize=0pt% +\newskip\md@temp@frame@vsize \md@temp@frame@vsize=0pt% + +\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@ %%%\z@=0 - \hrule\@width\md@hsize\@height\z@% + \kern\z@% + \hrule\@width\md@horizontalspaceofbox\@height\z@% \penalty-100 % put depth into height \endgroup% \egroup% \begingroup% - \color{\mdf@fontcolor} + \mdf@@fontcolor% + \setbox\@tempboxa\vbox{\unvbox\@tempboxa} \md@put@frame% \endgroup% } - - %%==================================================%% %%===========Ausgaberoutine -> Berechnung===========%% %%==================================================%% @@ -555,188 +707,147 @@ %% 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 -} - +\def\md@put@frame{\relax% + \md@freepagevspace + \ifdimless{\md@freevspace@length}{1.999\baselineskip} + {\md@PackageInfo{Not enough space on this page}%die Seite hat nur noch minimal Platz + \clearpage% + \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}% + {\md@putbox@single}%passt auf Seite + {\md@put@frame@i}%passt nicht auf Seite + } +} -%%==================================================%% -%%======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 +\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@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} + }{}% + \addtolength{\dimen@}{-\pageshrink}%Box darf nicht zu Groß werden. + \boxmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \setbox\tw@\vsplit\@tempboxa to \dimen@ + \setbox\tw@\vbox{\unvbox\tw@}% + \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% + \setbox\tw@\vsplit\@tempboxa to \dimen@i + \setbox\tw@\vbox{\unvbox\tw@}% + }{}% + \setbox\@tempboxa\vbox{\unvbox\@tempboxa}%PRUEFEN!!!! + \ifvoid\@tempboxa + \md@PackageWarning{You got a bad break\MessageBreak + because the splittet box is empty\MessageBreak + You have to change the page settings\MessageBreak + like enlargethispage or something else}% + \fi + \ifdimequal{\wd\tw@}{0pt}%%pruefe, ob erste Box leer ist + {\clearpage% + \md@put@frame}% + {\md@putbox@first%%Groesse des Splittens passt + \eject%\clearpage% + \md@put@frame@ii}% } -%%==================================================%% -%%=====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 + +\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}% + {% + \addtolength{\md@freevspace@length}{%%Abzug der Linien unten + -\mdf@splitbottomskip@length% + }% + \boxmaxdepth\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!!!! + \ifvoid\@tempboxa\relax% + \md@PackageWarning{You got a bad break\MessageBreak + because the splittet box is empty\MessageBreak + You have to change the settings}% + \fi% + \md@putbox@middle% + \clearpage\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 + You have to change the settings}% + }{}% + \md@putbox@second}%Hier kommt die Ausgabe der letzten Box +} @@ -769,7 +880,7 @@ % 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 + \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. @@ -778,7 +889,7 @@ %%% 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 + \linewidth=\md@horizontalspaceofbox \fi \sloppy } @@ -790,12 +901,18 @@ \DisableKeyvalOption[% action=warning, package=mdframed, -]{mdf}{style}% +]{mdf}{globalstyle}% \DisableKeyvalOption[% action=warning, package=mdframed, ]{mdf}{xcolor}% + + \endinput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +EOF +EOF +EOF + -- cgit v1.2.3