%% %% This is file `mdframed.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% mdframed.dtx (with options: `package') %% ---------------------------------------------------------------- %% Working with the command fbox or fcolorbox, one has to %% handle page breaks by hand. The present package defines the %% environment mdframed which automatically deals with page breaks. %% %% Author's name: Marco Daniel and Elke Schubert (!new) %% License type: lppl %% %% ================================================== %% ========Is based on the idea of framed.sty======== %% ================================================== %% ===== Currently the package has a beta-Status ==== %% ================================================== %% WITH THANKS TO (alphabetically): %% ROLF NIEPRASCHK %% HEIKO OBERDIEK %% HERBERT VOSS %% %% Copyright (c) 2010 Marco Daniel %% %% This package may be distributed under the terms of the LaTeX Project %% Public License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.0 or, at your option, any later version. %% %% %% ================================================= %% Erstellung eines Rahmens, der am Seitenende keine %% horizontale Linie einfuegt %% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %% _______________ %% | page 1 | %% | Text | %% | __Text__ | %% | | Text | | %% P A G E B R E A K %% | | Text | | %% | |_Text_| | %% | Text | %% |____page 2___| %% %% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> %% ================================================== %% %% CheckSum{5147} \def\mdversion{v1.3a} \def\mdframedpackagename{mdframed} \def\mdf@maindate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{mdframed}% [\mdf@maindate@svn$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $% \mdversion: \mdframedpackagename] \newcommand*\mdf@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} \newcommand*\mdf@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} \newcommand*\mdf@LoadFile@IfExist[1]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}% }{% \mdf@PackageWarning{The file #1 does not exist\MessageBreak but needed by \mdframedpackagename\MessageBreak see documentation fo further information }% } } \RequirePackage{kvoptions} \RequirePackage{xparse} \RequirePackage{etoolbox}[2011/01/03] \RequirePackage{zref-abspage} \RequirePackage{color} \SetupKeyvalOptions{family=mdf,prefix=mdf@} \newlength{\mdf@templength} \def\mdf@iflength#1{% \afterassignment\mdf@iflength@check% \mdf@templength=#1\mdf@defaultunit\relax\relax \expandafter\endgroup\next } \def\mdf@iflength@check#1{% \begingroup \ifx\relax#1\@empty \def\next{\@secondoftwo} \else \def\next{\@firstoftwo} \expandafter\mdf@iflength@cleanup \fi } \def\mdf@iflength@cleanup#1\relax{} \DeclareListParser*{\mdf@dolist}{,} \newrobustcmd*{\mdf@option@length}[2]{% \expandafter\newlength\csname mdf@#1@length\endcsname% \expandafter\setlength\csname mdf@#1@length\endcsname{#2}% } \newrobustcmd*{\mdf@define@key@length}[1]{% \define@key{mdf}{#1}{% \def\@tempa{##1} \mdf@iflength{\@tempa}% {\csxdef{mdfl@#1}{\the\mdf@templength}}% {\csxdef{mdfl@#1}{\the\mdf@templength}}% \expandafter\setlength\csname mdf@#1@length\endcsname{\csname mdfl@#1\endcsname}% }% } \def\mdf@do@lengthoption#1{% \mdf@lengthoption@doubledo#1\@nil% } \def\mdf@lengthoption@doubledo#1==#2\@nil{% \mdf@option@length{#1}{#2}% \mdf@define@key@length{#1}% } \def\mdf@do@stringoption#1{% \mdf@stringoption@doubledo#1\@nil% } \def\mdf@stringoption@doubledo#1==#2\@nil{% \expandafter\gdef\csname mdf@#1\endcsname{#2}% \define@key{mdf}{#1}{% \csdef{mdf@#1}{##1}% }% } \def\mdf@do@booloption#1{% \mdf@booloption@doubledo#1\@nil% } \def\mdf@booloption@doubledo#1==#2\@nil{% \newbool{mdf@#1}\setbool{mdf@#1}{#2}% \define@key{mdf}{#1}[#2]{% \setbool{mdf@#1}{##1}% }% } \def\mdf@do@alignoption#1{% \mdf@alignoption@tripledo#1\@nil% } \def\mdf@alignoption@tripledo#1==#2==#3\@nil{% \csdef{mdf@align@#1@left}{\null\hspace*{#2}}% \csdef{mdf@align@#1@right}{\hspace*{#3}\null}% } \newcounter{mdf@globalstyle@cnt} \defcounter{mdf@globalstyle@cnt}{0} \newcommand*\mdfglobal@style{0} \define@key{mdf}{style}{% \mdf@PackageWarning{package option style is depreciated^^J use framemethod instead\MessageBreak}% \renewcommand*\mdfglobal@style{#1}% \defcounter{mdf@globalstyle@cnt}{#1}% \ifcase\value{mdf@globalstyle@cnt}\relax %0 <- kein Grafikpaket \or\mdf@LoadFile@IfExist{tikz}% \or\mdf@LoadFile@IfExist{pstricks-add}% \or\defcounter{mdf@globalstyle@cnt}{2}% \mdf@LoadFile@IfExist{pst-node}% \or\mdf@LoadFile@IfExist{pst-node}% \else\mdf@PackageWarning{Unknown global style \value{mdf@globalstyle@cnt}}% \fi% } \providecommand*\mdf@framemethod{} \def\mdf@framemethod@i{}% \def\mdf@framemethod@ii{}% \def\mdf@framemethod@iii{}% \define@key{mdf}{framemethod}[default]{% \lowercase{\def\mdf@tempa{#1}} \forcsvlist{\listadd\mdf@framemethod@i}{default,tex,latex,none,0} \forcsvlist{\listadd\mdf@framemethod@ii}{pgf,tikz,1} \forcsvlist{\listadd\mdf@framemethod@iii}{pstricks,ps,2,postscript} \xifinlist{\mdf@tempa}{\mdf@framemethod@i}% {\def\mdf@@framemethod{default}\defcounter{mdf@globalstyle@cnt}{0}}% {\xifinlist{\mdf@tempa}{\mdf@framemethod@ii}% {\def\mdf@@framemethod{tikz}\defcounter{mdf@globalstyle@cnt}{1}}% {\xifinlist{\mdf@tempa}{\mdf@framemethod@iii}% {\def\mdf@@framemethod{pstricks}\defcounter{mdf@globalstyle@cnt}{2}}% {% \mdf@LoadFile@IfExist{#1}% }% }% }% \ifcase\value{mdf@globalstyle@cnt}\relax% %0 <- kein Grafikpaket \or\mdf@LoadFile@IfExist{tikz}% \or\mdf@LoadFile@IfExist{pst-node}% \or\mdf@LoadFile@IfExist{pst-node}% \fi% } \mdf@dolist{\mdf@do@lengthoption}{% {skipabove==\z@},% {skipbelow==\z@},% {leftmargin==\z@},% {rightmargin==\z@},% {innerleftmargin==10pt},% {innerrightmargin==10pt},% {innertopmargin==0.4\baselineskip},% {innerbottommargin==0.4\baselineskip},% {splittopskip==\z@},% {splitbottomskip==\z@},% {outermargin==\z@},% {innermargin==\z@},% {linewidth==0.4pt},% {innerlinewidth==\z@},% {middlelinewidth==\expandafter\mdf@linewidth@length},% {outerlinewidth==\z@},% {roundcorner==\z@},% {footenotedistance==\medskipamount}, {userdefinedwidth==\linewidth}, {frametitleaboveskip==5pt}, {frametitlebelowskip==5pt}, {frametitlerulewidth==.2pt}, {frametitleleftmargin==10pt},% {frametitlerightmargin==10pt},% {shadowsize==8pt},% } \mdf@dolist{\mdf@do@stringoption}{% {frametitle=={}},% {defaultunit==pt},% {linecolor==black},% {backgroundcolor==white},% {fontcolor==black},% {frametitlefontcolor==black},% {innerlinecolor==\mdf@linecolor},% {outerlinecolor==\mdf@linecolor},% {middlelinecolor==\mdf@linecolor},% {psroundlinecolor==\mdf@backgroundcolor},% {frametitlerulecolor==\mdf@linecolor}, {frametitlebackgroundcolor==\mdf@backgroundcolor},% {shadowcolor==black!50},% {settings=={}},% {frametitlesettings=={}},% {font=={}},% {frametitlefont==\normalfont\bfseries},% {printheight==none},% {alignment=={}},% {frametitlealignment=={}},% {theoremseparator=={:}},% {theoremcountersep=={.}},% {theoremtitlefont=={}},% {theoremspace=={\space}},% } \mdf@dolist{\mdf@do@booloption}{% {ntheorem==false},% {topline==true},% {leftline==true},% {bottomline==true},% {rightline==true},% {frametitletopline==true},% {frametitleleftline==true},% {frametitlebottomline==true},% {frametitlerightline==true},% {hidealllines==false},% {frametitlerule==false},% {nobreak==false},% {footnoteinside==true},% {usetwoside==true},% {repeatframetitle==false},%Noch nicht richtig implementiert {shadow==false},% } \mdf@dolist{\mdf@do@alignoption}{% {left==\mdf@leftmargin@length==\z@},% {center==\fill==\fill},% {right==\fill==\mdf@rightmargin@length},% {outer==\fill==\mdf@rightmargin@length},%not supported yet {outer==\mdf@leftmargin@length==\fill},%not supported yet } \newcommand*\mdf@align{}% \newcommand*\mdf@makeboxalign@left{\null\hspace*{\mdf@leftmargin@length}}% \newcommand*\mdf@makeboxalign@right{}% \define@key{mdf}{align}[left]{% \ifcsundef{mdf@align@#1@left}{% \mdf@PackageWarning{Unknown alignment #1\MessageBreak}% \letcs\mdf@makeboxalign@left{mdf@align@left@left}% \letcs\mdf@makeboxalign@right{mdf@align@left@right}% }{% \def\mdf@makeboxalign@left{\csuse{mdf@align@#1@left}}% \def\mdf@makeboxalign@right{\csuse{mdf@align@#1@right}}% }% } \def\mdf@tikzset@local{\tikzset{tikzsetting/.style={}}} \define@key{mdf}{tikzsetting}{% \def\mdf@tikzset@local{\tikzset{tikzsetting/.style={#1}}}% } \define@key{mdf}{apptotikzsetting}{% \appto\mdf@tikzset@local{#1}% } \def\mdf@psset@local{} \define@key{mdf}{pstrickssetting}{% \def\mdf@psset@local{#1} } \def\mdfpstricks@appendsettings{} \define@key{mdf}{pstricksappsetting}{% \def\mdfpstricks@appendsettings{#1}% } \def\mdf@xcolor{} \define@key{mdf}{xcolor}[none]{% \def\@tempa{#1}% \@ifpackageloaded{xcolor}{% \let\mdf@xcolor\@empty %ignoriere die Eingabe der Optionen \def\@tempa{}% }{}% \ifx\relax\@tempa\relax\else \PassOptionsToPackage{\mdf@xcolor}{xcolor}% \RequirePackage{xcolor}% \fi% }% \define@key{mdf}{needspace}[\z@]{% \begingroup% \setlength{\dimen@}{#1}% \vskip\z@\@plus\dimen@% \penalty -100\vskip\z@\@plus -\dimen@% \vskip\dimen@% \penalty 9999% \vskip -\dimen@% \vskip\z@skip % hide the previous |\vskip| from |\addvspace| \endgroup% } \DeclareDefaultOption{% \mdf@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} \ProcessKeyvalOptions*\relax \newrobustcmd*{\mdfsetup}{\setkeys{mdf}} \define@key{mdf}{style}{% \ifcsundef{mdf@definestyle@#1}{% \mdf@PackageWarning{Unknown definedstyle #1^^J You have to define a style ^^J via \string\mdfdefinedstyle\MessageBreak }% }% {\expandafter\expandafter\expandafter\mdfsetup% \expandafter\expandafter\expandafter{\csname mdf@definestyle@#1\endcsname}}% }% \let\mdf@PackageNoInfo\@gobble \newrobustcmd*\mdf@ifstrequal@expand{% \expandafter\ifstrequal\expandafter{\mdf@printheight}% } \newrobustcmd*\mdf@print@space{% %case "none" \mdf@ifstrequal@expand{none}{\def\mdf@tempa{NoInfo}}{% %case "info" \mdf@ifstrequal@expand{info}{\def\mdf@tempa{Info}}{% %case "warning" \mdf@ifstrequal@expand{warning}{\def\mdf@tempa{Warning}}{% %case "unknown" \mdf@PackageWarning{Unknown key for printheight=\mdf@printheight^^J use none, info or warning}% \def\mdf@tempa{none}% }% }% }% \def\mdf@PackageInfoSpace{\csname mdf@Package\mdf@tempa\endcsname}% } \newsavebox\mdf@frametitlebox \newsavebox\mdf@footnotebox \newsavebox\mdf@splitbox@one \newsavebox\mdf@splitbox@two \newlength\mdfsplitboxwidth \newlength\mdfsplitboxtotalwidth \newlength\mdfsplitboxheight \newlength\mdfsplitboxdepth \newlength\mdfsplitboxtotalheight \newlength\mdfframetitleboxwidth \newlength\mdfframetitleboxtotalwidth \newlength\mdfframetitleboxheight \newlength\mdfframetitleboxdepth \newlength\mdfframetitleboxtotalheight \newlength\mdffootnoteboxwidth \newlength\mdffootnoteboxtotalwidth \newlength\mdffootnoteboxheight \newlength\mdffootnoteboxdepth \newlength\mdffootnoteboxtotalheight \newlength\mdftotallinewidth \newlength\mdfboundingboxwidth \newlength\mdfboundingboxtotalwidth \newlength\mdfboundingboxheight \newlength\mdfboundingboxdepth \newlength\mdfboundingboxtotalheight \newlength\mdf@freevspace@length \newlength\mdf@horizontalwidthofbox@length \newlength\mdf@verticalmarginwhole@length \newrobustcmd\mdfcreateextratikz{} \def\mdf@lrbox#1{% %%patch to work with amsthm \mdf@patchamsthm %%end patch \edef\mdf@restoreparams{% \parindent=\the\parindent \parskip=\the\parskip} \setbox#1\vbox\bgroup \color@begingroup% \mdf@horizontalmargin@equation% \columnwidth=\hsize% \textwidth=\hsize% \@parboxrestore% \mdf@restoreparams% %SETZE \@afterindentfalse% \@afterheading% %STREICHE %\@doendpe } \def\endmdf@lrbox{\color@endgroup\egroup} \newrobustcmd*\mdf@ignorevbadness{% \edef\mdf@currentvbadness{\the\vbadness}% \vbadness=\@M% \afterassignment\mdf@restorevbadness} \newrobustcmd*\mdf@restorevbadness{\vbadness=\mdf@currentvbadness\relax} \@ifpackageloaded{amsthm}{% \newrobustcmd\mdf@patchamsthm{% \let\mdf@deferred@thm@head\deferred@thm@head \patchcmd{\deferred@thm@head}{\indent}{}{}{} }% }{\let\mdf@patchamsthm\relax}% \def\mdf@trivlist#1{% \setlength{\topsep}{#1}% \partopsep\z@% \parsep\z@% \@nmbrlistfalse% \@trivlist% \labelwidth\z@% \leftmargin\z@% \itemindent\z@% \let\@itemlabel\@empty% \def\makelabel##1{##1}% %% \item\leavevmode\hrule \@height\z@ \@width\linewidth\relax% %% \item\mbox{}\relax% second version \item\relax% first Version } \let\endmdf@trivlist\endtrivlist \patchcmd\endmdf@trivlist\@endparenv\mdf@endparenv{}{} \def\mdf@endparenv{% \addpenalty\@endparpenalty\addvspace\mdf@skipbelow@length\@endpetrue} \newrobustcmd*\mdf@makebox@out[2][\linewidth]{% \noindent\hb@xt@\z@{% \noindent\makebox[\dimexpr #1\relax][l]{#2}% \hss}% }% \newrobustcmd*\mdf@makebox@in[2][\mdf@userdefinedwidth@length]{% \noindent\makebox[\dimexpr #1\relax][l]{#2}% } \newrobustcmd*\mdfdefinestyle[2]{% \csdef{mdf@definestyle@#1}{#2}% } \newrobustcmd*\mdfapptodefinestyle[2]{% \ifcsundef{mdf@definestyle@#1}% {\mdf@PackageWarning{Unknown style #1}}% {\csappto{mdf@definestyle@#1}{,#2}}% } \newrobustcmd*{\mdflength}[1]{\csuse{mdf@#1@length}} \newrobustcmd*{\surroundwithmdframed}[2][]{% \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% \AfterEndEnvironment{#2}{\end{mdframed}}% } \newrobustcmd*\newmdenv[2][]{% \newenvironment{#2}{% \mdfsetup{#1}% \begin{mdframed}% }{% \end{mdframed}% }% } \newrobustcmd*\renewmdenv[2][]{% \expandafter\let\csname #2\endcsname\relax% \expandafter\let\csname end#2\endcsname\relax% \newmdenv[#1]{#2}% }% \DeclareDocumentCommand\newmdtheoremenv{O{} m o m o }{% \ifboolexpr{ test {\IfNoValueTF {#3}} and test {\IfNoValueTF {#5}} }% {\newtheorem{#2}{#4}}{% \IfValueTF{#3}{\newtheorem{#2}[#3]{#4}}{}% \IfValueTF{#5}{\newtheorem{#2}{#4}[#5]}{}% }% \BeforeBeginEnvironment{#2}{% \begin{mdframed}[#1]}% \AfterEndEnvironment{#2}{% \end{mdframed}}% } \DeclareDocumentCommand{\mdtheorem}{ O{} m o m o }% {\ifcsdef{#2}% {\mdf@PackageWarning{Environment #2 already exits\MessageBreak}}% {% \IfNoValueTF {#3}% {%#3 not given -- number relationship \IfNoValueTF {#5} {%#3+#5 not given \@definecounter{#2}% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} \newenvironment{#2}[1][]{% \refstepcounter{#2} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% {%#5 given -- reset counter \@definecounter{#2}\@newctr{#2}[#5]% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} \expandafter\xdef\csname the#2\endcsname{% \expandafter\noexpand\csname the#5\endcsname \@thmcountersep \@thmcounter{#2}}% \newenvironment{#2}[1][]{% \refstepcounter{#2} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% {%#3 given -- number relationship \global\@namedef{the#2}{\@nameuse{the#3}}% \newenvironment{#2}[1][]{% \refstepcounter{#3} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% } \newrobustcmd\mdfframedtitleenv[1]{% \begingroup% \color@setgroup% \mdf@frametitlefont\color{\mdf@frametitlefontcolor}% \mdf@lrbox{\mdf@frametitlebox}% \mdf@frametitlealignment% #1\par\unskip \endmdf@lrbox% \mdf@ignorevbadness% \global\setbox\mdf@frametitlebox\vbox{\unvbox\mdf@frametitlebox}% \global\mdfframetitleboxwidth=\wd\mdf@frametitlebox\relax% \global\mdfframetitleboxheight=\ht\mdf@frametitlebox\relax% \global\mdfframetitleboxdepth=\dp\mdf@frametitlebox\relax% \global\mdfframetitleboxtotalheight=\dimexpr\ht\mdf@frametitlebox+\dp\mdf@frametitlebox +\mdf@frametitleaboveskip@length+\mdf@frametitlebelowskip@length\relax% \color@endgroup% \endgroup% } \newrobustcmd*\mdf@@frametitle{% \mdfframedtitleenv{\mdf@frametitle}% } \newrobustcmd*\mdf@@frametitle@use{% \begingroup \parskip\z@ \parindent\z@ \offinterlineskip \mdf@ignorevbadness% \global\setbox\mdf@splitbox@one\vbox{% \unvcopy\mdf@frametitlebox% \mdf@@frametitlerule% \unvbox\mdf@splitbox@one }% \mdf@ignorevbadness% \global\setbox\mdf@splitbox@one\vbox{% \unvbox\mdf@splitbox@one}% \endgroup \mdfsetup{innertopmargin=\mdf@frametitleaboveskip@length}% } \newrobustcmd*\mdf@checkntheorem{% \ifbool{mdf@ntheorem}% {\ifundef{\theorempreskipamount}% {\mdf@PackageWarning{You have not loaded ntheorem yet}}% {\setlength{\theorempreskipamount}{\z@}% \setlength{\theorempostskipamount}{\z@}% }% }{}% } \newrobustcmd*\mdf@footnoterule{% \kern0\p@% \hrule \@width 1in \kern 2.6\p@} \newrobustcmd*\mdf@footnoteoutput{% \ifvoid\@mpfootins\else \nobreak% \vskip\mdf@footenotedistance@length% \normalcolor% \mdf@footnoterule \unvbox\@mpfootins \fi% } \newrobustcmd*\mdf@footnoteinput{% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}% \c@mpfootnote\z@% \let\@footnotetext\@mpfootnotetext% } \newrobustcmd*\mdf@load@style{% \ifcase\value{mdf@globalstyle@cnt}\relax% \input{md-frame-0.mdf}% \or\input{md-frame-1.mdf}% \or\input{md-frame-2.mdf}% \or\input{md-frame-3.mdf}% \else% \IfFileExists{md-frame-\value{mdf@globalstyle@cnt}.mdf}% {\input{md-frame-\value{mdf@globalstyle@cnt}.mdf}}% {% \input{md-frame-0.mdf}% \mdf@PackageWarning{The style number \value{mdf@globalstyle@cnt} does not exist^^J mdframed ues instead style=0 \mdframedpackagename}% }% \fi% }% \mdf@load@style \newrobustcmd*\mdf@styledefinition{%AVOID!!! \ifnumequal{\value{mdf@globalstyle@cnt}}{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% }{}% } \let\mdf@reserved@a\@empty \newrobustcmd*\detected@mdf@put@frame{% \ifmdf@nobreak%Option nobreak=true? \def\mdf@reserved@a{\mdf@put@frame@standalone}% \else \def\mdf@reserved@a{\mdf@put@frame}% \ifnum\@floatpenalty<0\relax%Detecting float \if@twocolumn% \ifx\@captype\@undefined \def\mdf@reserved@a{\mdf@put@frame}% \else \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi \else \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% \if@minipage% \mdf@PackageInfo{mdframed inside minipage ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \ifinner% \mdf@PackageInfo{mdframed inside a box ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% \mdf@reserved@a% } \newrobustcmd*\mdf@hidealllines@check{% \ifbool{mdf@hidealllines}{% \boolfalse{mdf@leftline}\boolfalse{mdf@rightline}% \boolfalse{mdf@topline}\boolfalse{mdf@bottomline}% \boolfalse{mdf@frametitleleftline}\boolfalse{mdf@frametitlerightline}% \boolfalse{mdf@frametitletopline}\boolfalse{mdf@frametitlebottomline}% }{}% } \newenvironment{mdframed}[1][]{% \begingroup% \color@setgroup% \mdfsetup{userdefinedwidth=\linewidth,#1}% \mdf@hidealllines@check% \mdf@twoside@checklength% \let\width\z@% \let\height\z@% \mdf@checkntheorem% \mdf@styledefinition% \mdf@footnoteinput% \color{\mdf@fontcolor}% \ifvmode\nointerlineskip\fi% \mdf@trivlist{\mdf@skipabove@length}%% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle}% \mdf@settings% \mdf@lrbox{\mdf@splitbox@one}% }% {\par\unskip% \ifmdf@footnoteinside% \def\mdf@reserveda{% \mdf@footnoteoutput% \endmdf@lrbox% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} \detected@mdf@put@frame}% \else% \def\mdf@reserveda{% \endmdf@lrbox% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} \detected@mdf@put@frame% \mdf@footnoteoutput% }% \fi% \mdf@reserveda% \endmdf@trivlist% \color@endgroup\endgroup\@doendpe%\@endparenv% } \newtoggle{md:checktwoside} \settoggle{md:checktwoside}{false} \newrobustcmd*\mdf@twoside@checklength{% \if@twoside \ifbool{mdf@usetwoside}% {\mdf@PackageInfo{mdframed works in twoside mode}% \settoggle{md:checktwoside}{true}% \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% }% {\mdf@PackageInfo{mdframed inside twoside mode but\MessageBreak works with oneside mode}% \settoggle{md:checktwoside}{false}% }% \fi% } \newcounter{mdf@zref@counter}%keine doppelten laebes \zref@newprop*{mdf@pagevalue}[0]{\number\value{page}} \zref@addprop{\ZREF@mainlist}{mdf@pagevalue} \newrobustcmd*\mdf@zref@label{% \stepcounter{mdf@zref@counter} \zref@label{mdf@pagelabel-\number\value{mdf@zref@counter}}% } \newrobustcmd*\if@mdf@pageodd{% \zref@refused{mdf@pagelabel-\the\value{mdf@zref@counter}}% \ifodd\zref@extract{mdf@pagelabel-\the\value{mdf@zref@counter}}{mdf@pagevalue}% \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% \else \setlength\mdf@rightmargin@length{\mdf@innermargin@length}% \setlength\mdf@leftmargin@length{\mdf@outermargin@length}% \fi% } \newrobustcmd*\mdf@@setzref{% \iftoggle{md:checktwoside}{\mdf@zref@label\if@mdf@pageodd}{}% } \newrobustcmd*\mdf@freepagevspace{% \penalty\@M \vskip 2\baselineskip \penalty9999 \vskip -2\baselineskip \penalty9999 \ifdimequal{\pagegoal}{\maxdimen}% {\mdf@freevspace@length\vsize}% {\mdf@freevspace@length=\pagegoal\relax% \advance\mdf@freevspace@length by -\pagetotal\relax% \addtolength\mdf@freevspace@length{\dimexpr-\parskip\relax}\relax% }% } \newrobustcmd*\mdf@advancelength@horizontalmargin@sub[1]{% \advance\mdf@horizontalspaceofbox by -\csname mdf@#1@length\endcsname\relax% } \newlength\mdf@horizontalspaceofbox \newrobustcmd*\mdf@horizontalmargin@equation{% \setlength{\mdf@horizontalspaceofbox}{\mdf@userdefinedwidth@length}% \mdf@dolist{\mdf@advancelength@horizontalmargin@sub}{% leftmargin,outerlinewidth,middlelinewidth,% innerlinewidth,innerleftmargin,innerrightmargin,% innerlinewidth,middlelinewidth,outerlinewidth,% rightmargin}% \notbool{mdf@leftline}{% \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% }{}% \notbool{mdf@rightline}{% \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% }{}% \ifdimless{\mdf@horizontalspaceofbox}{3cm}% {\mdf@PackageWarning{You have only a width of 3cm}}{} \hsize=\mdf@horizontalspaceofbox% } \newrobustcmd*\mdf@keeplines@single{% \notbool{mdf@topline}{% \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% \notbool{mdf@bottomline}{% \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% } \newrobustcmd*\mdf@advancelength@verticalmarginwhole[1]{% \advance\mdf@verticalmarginwhole@length by \csname mdf@#1@length\endcsname\relax% } \newrobustcmd*\mdf@advancelength@freevspace@sub[1]{% \advance\dimen@ by -\csname mdf@#1@length\endcsname\relax% } \newrobustcmd*\mdf@advancelength@freevspace@add[1]{% \advance\dimen@ by \csname mdf@#1@length\endcsname\relax% } \protected@edef\mdf@reset{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}% \newrobustcmd*\mdf@put@frame@standalone{\relax% \ifvoid\mdf@splitbox@one\relax \mdf@PackageWarning{The environment is empty\MessageBreak}% \let\mdf@reserved@a\relax% \else %Hier berechnung Box-Inhalt+Rahmen oben und unten \setlength{\mdf@verticalmarginwhole@length}% {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% \mdf@keeplines@single% \def\mdf@reserved@a{\mdf@putbox@single}% \fi \mdf@reserved@a% } \def\mdf@put@frame{\relax% \ifvoid\mdf@splitbox@one\relax \mdf@PackageWarning{The environment is empty\MessageBreak}% \let\mdf@reserved@a\relax% \else \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \mdf@print@space% \mdf@freepagevspace%gives \mdf@freevspace@length \mdf@PackageInfoSpace{\the\mdf@freevspace@length before the beginning of \MessageBreak the environment ending on input line \MessageBreak}% \ifdimless{\mdf@freevspace@length}{2\baselineskip} {\mdf@PackageInfo{Not enough space on this page} \vfill\eject% \def\mdf@reserved@a{\mdf@put@frame}% }{% %Hier berechnung Box-Inhalt+Rahmen oben und unten \setlength{\mdf@verticalmarginwhole@length}% {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% \mdf@keeplines@single% \ifdimless{\mdf@verticalmarginwhole@length}{\mdf@freevspace@length}% {%passt auf Seite% \begingroup \mdf@@setzref \mdf@putbox@single% \endgroup \let\mdf@reserved@a\relax}% {\def\mdf@reserved@a{\mdf@put@frame@i}}%passt nicht auf Seite }% \fi \mdf@reserved@a% } \def\mdf@put@frame@i{%Box muss gesplittet werden -- Ausgabe der ersten Teilbox %Berechnung der Splittgroesse -- Linien und Abstand oben %\vbox to 0pt{}% %\rlap{\smash{\the\mdf@freevspace@length}}%\hrule \@height\z@ \@width\hsize \mdf@freepagevspace%gives \mdf@freevspace@length %Berechnung ob nur oberen Linien nur auf die Seite passe \dimen@=\the\mdf@freevspace@length% \dimen@i=\mdf@innertopmargin@length% \advance\dimen@i by \mdf@innerlinewidth@length% \advance\dimen@i by \mdf@middlelinewidth@length% \advance\dimen@i by \mdf@outerlinewidth@length% \advance\dimen@i by 2\baselineskip% \ifdimless{\dimen@}{\dimen@i}% {\hrule \@height\z@ \@width\hsize% \vfill\eject% \def\mdf@reserved@a{\mdf@put@frame}% }{% \mdf@freepagevspace% \dimen@=\the\mdf@freevspace@length% \mdf@dolist{\mdf@advancelength@freevspace@sub}{%calculate with \dimen@ outerlinewidth,middlelinewidth,innerlinewidth,% innertopmargin,splitbottomskip}% \ifbool{mdf@topline}{}{% \advance\dimen@ by \mdf@innerlinewidth@length% \advance\dimen@ by \mdf@middlelinewidth@length% \advance\dimen@ by \mdf@outerlinewidth@length% }% \advance\dimen@.8\pageshrink \ifdimless{\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}{\dimen@}% {\mdf@PackageWarning{You got a bad break\MessageBreak you have to change it manually\MessageBreak by changing the text, the space\MessageBreak or something else}% \advance\dimen@ by -1.8\baselineskip\relax% }{}% \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% \mdf@ignorevbadness% \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@ \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% \ifbool{mdf@repeatframetitle}{% \setbox\mdf@splitbox@one\vbox{% \vbox to \mdf@splittopskip@length{\hsize\z@} %\par\unskip\nointerlineskip \unvcopy\mdf@frametitlebox% \mdf@@frametitlerule% \vbox to\dimexpr -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox +\mdf@innertopmargin@length\relax{\hsize\z@}% \unvbox\mdf@splitbox@one}% }{}% \ifdimgreater{\ht\mdf@splitbox@two+\dp\mdf@splitbox@two}{\dimen@}% {%Falsch gesplittet \mdf@PackageInfo{Box was splittet wrong\MessageBreak}% \dimen@i=\dimen@ \advance\dimen@ by -\ht\mdf@splitbox@two \advance\dimen@ by -\dp\mdf@splitbox@two \advance\dimen@i by 0.5\dimen@ \splittopskip\z@% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two% %benoetigt um Tiefe zu haben \hrule \@height\dp\strutbox \@width\z@ \unvbox\mdf@splitbox@one} \splittopskip\mdf@splittopskip@length% \mdf@ignorevbadness% \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@i \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% \ifbool{mdf@repeatframetitle}{% \setbox\mdf@splitbox@one\vbox{% \vbox to \mdf@splittopskip@length{\hsize\z@} %\par\unskip\nointerlineskip \unvcopy\mdf@frametitlebox% \mdf@@frametitlerule% \vbox to\dimexpr -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox +\mdf@innertopmargin@length\relax{\hsize\z@}% \unvbox\mdf@splitbox@one}% }{}% }{}% \ifvoid\mdf@splitbox@one \mdf@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}% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two% %benoetigt um Tiefe zu haben \hrule \@height\dp\strutbox \@width\z@ \unvbox\mdf@splitbox@one}% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% \enlargethispage{\baselineskip}% \def\mdf@reserved@a{\mdf@put@frame}% \fi \ifvoid\mdf@splitbox@two%%pruefe, ob erste Box leer ist \hrule \@height\z@ \@width\hsize \vfill\eject% \def\mdf@reserved@a{\mdf@put@frame}% \else \ifdimequal{\ht\mdf@splitbox@two}{0pt}% {\hrule \@height\z@ \@width\hsize% \vfill\eject% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two\unvbox\mdf@splitbox@one} \def\mdf@reserved@a{\mdf@put@frame}% }% {% \begingroup% \mdf@@setzref \mdf@putbox@first%%%Groesse des Splittens passt \endgroup% \hrule \@height\z@ \@width\hsize% \vfill\eject% \def\mdf@reserved@a{\mdf@put@frame@ii}% }% \fi% }% \mdf@reserved@a% } \def\mdf@put@frame@ii{%Ausgabe der mittleren Box(en) wenn vorhanden \setlength{\mdf@freevspace@length}{\vsize}% \setlength{\dimen@}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@freevspace@add}{%used \dimen@ outerlinewidth,middlelinewidth,innerlinewidth,% innerbottommargin}%%%Addition der Linien unten \ifbool{mdf@bottomline}{}{% \advance\dimen@i by \mdf@innerlinewidth@length% \advance\dimen@i by \mdf@middlelinewidth@length% \advance\dimen@i by \mdf@outerlinewidth@length% \relax}% \ifdimgreater{\dimen@}{\mdf@freevspace@length}% {% \advance\mdf@freevspace@length by -\mdf@splitbottomskip@length\relax% \ifbool{mdf@bottomline}{}{% \advance\dimen@i by -\mdf@innerlinewidth@length% \advance\dimen@i by -\mdf@middlelinewidth@length% \advance\dimen@i by -\mdf@outerlinewidth@length% \relax}% \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% \mdf@ignorevbadness% \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \mdf@freevspace@length% \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%PRUEFEN!!! \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%PRUEFEN!!!! \ifbool{mdf@repeatframetitle}{% \setbox\mdf@splitbox@one\vbox{% \vbox to \mdf@splittopskip@length{\hsize\z@} %\par\unskip\nointerlineskip \unvcopy\mdf@frametitlebox% \mdf@@frametitlerule% \vbox to\dimexpr -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox +\mdf@innertopmargin@length\relax{\hsize\z@}% \unvbox\mdf@splitbox@one}% }{}% \ifvoid\mdf@splitbox@one\relax% \mdf@PackageWarning{You got a bad break\MessageBreak because the split box is empty\MessageBreak You have to change the settings}% \setbox\mdf@splitbox@one{\unvbox\mdf@splitbox@two}% \def\mdf@reserved@a{\enlargethispage{\baselineskip}\mdf@put@frame@ii}% \else \begingroup \mdf@@setzref \mdf@putbox@middle% \endgroup \hrule \@height\z@ \@width\hsize \vfill\eject \def\mdf@reserved@a{\mdf@put@frame@ii}% \fi }%Hier die Ausgabe der mittleren Box {\ifvoid\mdf@splitbox@one \mdf@PackageWarning{You got a bad break\MessageBreak because the last split box is empty\MessageBreak You have to change the settings}%% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% \fi% \ifdimless{\ht\mdf@splitbox@one}{1sp}{% \mdf@PackageWarning{You got a bad break\MessageBreak because the last split box is empty\MessageBreak You have to change the settings}% %\hb@xt@\z@{\box\mdf@splitbox@one}% \let\mdf@reserved@a\relax% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% }{}% \begingroup% \mdf@@setzref \mdf@putbox@second% \hrule \@height\z@ \@width\hsize% \endgroup% \let\mdf@reserved@a\relax% }%Hier kommt die Ausgabe der letzten Box \mdf@reserved@a% } %%%% _____t_____ %%%% | | %%%% | | %%%% | | %%%% l| |r %%%% | | %%%% | | %%%% |___________| %%%% b %%Zusammenhaenge abfragen: \newrobustcmd*\mdf@test@ltrb{% \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) and (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@ltr{% \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) and (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@ltb{% \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@trb{% \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@lrb{% \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) and (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@lb{% \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@rb{% \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@tr{% \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@lt{% \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@lr{% \ifboolexpr{not (bool {mdf@topline}) and not (bool {mdf@bottomline}) and (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@tb{% \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@l{% \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@r{% \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@t{% \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@b{% \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@noline{% \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} \newrobustcmd*\mdf@test@single{% \ifboolexpr{ not (test {\mdf@test@ltrb} or test {\mdf@test@ltr} or test {\mdf@test@ltb} or test {\mdf@test@trb} or test {\mdf@test@lrb} or test {\mdf@test@lb} or test {\mdf@test@rb} or test {\mdf@test@tr} or test {\mdf@test@lt} ) }} \DisableKeyvalOption[action=warning,package=mdframed]{mdf}{framemethod}% \DisableKeyvalOption[action=warning,package=mdframed]{mdf}{xcolor}% \endinput %% %% ================================================================ %% Copyright (C) 2011 by Marco Daniel %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License (LPPL), either %% version 1.3c of this license or (at your option) any later %% version. The latest version of this license is in the file: %% %% http://www.latex-project.org/lppl.txt %% %% This work is "maintained" (as per LPPL maintenance status) by %% Marco Daniel. %% %% Have fun! %% %% ================================================================ %% %% End of file `mdframed.sty'.