From 17c64171472e3210951167496fe1a0a3d82f79ab Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
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

