summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/mdframed/mdframed.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-12-23 23:33:55 +0000
committerKarl Berry <karl@freefriends.org>2010-12-23 23:33:55 +0000
commit17c64171472e3210951167496fe1a0a3d82f79ab (patch)
tree6f63bc16d2303aa00daf58d4068cf8633763f820 /Master/texmf-dist/tex/latex/mdframed/mdframed.sty
parenteb04e7ac6c596539e9d0eb28ab8300aacd2e72ae (diff)
mdframed 0.6a (23dec10)
git-svn-id: svn://tug.org/texlive/trunk@20841 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/mdframed/mdframed.sty')
-rw-r--r--Master/texmf-dist/tex/latex/mdframed/mdframed.sty1145
1 files changed, 631 insertions, 514 deletions
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,44 +67,16 @@
\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
+