|
|
%%
|
|
|
%% 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-2013 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___|
|
|
|
%%
|
|
|
%% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
|
%% ==================================================
|
|
|
%%
|
|
|
|
|
|
\def\mdversion{1.9b}
|
|
|
\def\mdframedpackagename{mdframed}
|
|
|
\def\mdfmaindate{2013/07/01}
|
|
|
\def\mdfrevision{ 212}% Done by github: git rev-list HEAD | wc -l
|
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
|
\ProvidesPackage{mdframed}%
|
|
|
[\mdfmaindate\space \mdversion: \mdframedpackagename]
|
|
|
\newcommand*\mdf@PackageError[1]{\PackageError{\mdframedpackagename}{#1}}
|
|
|
\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{needspace}
|
|
|
\RequirePackage{color}
|
|
|
\SetupKeyvalOptions{family=mdf,prefix=mdf@}
|
|
|
\def\mdf@definestyle@defaultoptions{}%
|
|
|
\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}{,}
|
|
|
\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}%
|
|
|
\gappto\mdf@definestyle@defaultoptions{#1=#2,}%
|
|
|
}
|
|
|
|
|
|
\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}}%
|
|
|
\setlength{\csname mdf@#1@length\endcsname}{\csname mdfl@#1\endcsname}%
|
|
|
}%
|
|
|
}
|
|
|
|
|
|
\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}%
|
|
|
}%
|
|
|
\gappto\mdf@definestyle@defaultoptions{#1=#2,}%
|
|
|
}
|
|
|
\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}%
|
|
|
}%
|
|
|
\gappto\mdf@definestyle@defaultoptions{#1=#2,}%
|
|
|
}
|
|
|
\newcounter{mdf@globalstyle@cnt}
|
|
|
\defcounter{mdf@globalstyle@cnt}{-99}
|
|
|
|
|
|
\define@key{mdf}{style}{%
|
|
|
\mdf@PackageWarning{package option style is depreciated^^J
|
|
|
at this point and will be ignored^^J
|
|
|
use framemethod instead\MessageBreak}%
|
|
|
}
|
|
|
|
|
|
\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}}%lowercase not expandable
|
|
|
\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}\mdf@LoadFile@IfExist{tikz}}%
|
|
|
{\xifinlist{\mdf@tempa}{\mdf@framemethod@iii}%
|
|
|
{\def\mdf@@framemethod{pstricks}%
|
|
|
\defcounter{mdf@globalstyle@cnt}{2}\mdf@LoadFile@IfExist{pst-node}}%
|
|
|
{\mdf@LoadFile@IfExist{#1}}%
|
|
|
}%
|
|
|
}%
|
|
|
\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%
|
|
|
}
|
|
|
\DeclareVoidOption{tikz}{\setkeys{mdf}{framemethod=tikz}}
|
|
|
\DeclareVoidOption{TikZ}{\setkeys{mdf}{framemethod=tikz}}
|
|
|
\DeclareVoidOption{ps}{\setkeys{mdf}{framemethod=pstricks}}
|
|
|
\DeclareVoidOption{pstricks}{\setkeys{mdf}{framemethod=pstricks}}
|
|
|
\DeclareVoidOption{PSTricks}{\setkeys{mdf}{framemethod=pstricks}}
|
|
|
|
|
|
\mdf@dolist{\mdf@do@lengthoption}{%
|
|
|
{skipabove==\topsep},%
|
|
|
{skipbelow==\topsep},%
|
|
|
{leftmargin==\z@},%
|
|
|
{rightmargin==\z@},%
|
|
|
{innerleftmargin==10pt},%
|
|
|
{innerrightmargin==10pt},%
|
|
|
{innertopmargin==0.4\baselineskip},%
|
|
|
{innerbottommargin==0.4\baselineskip},%
|
|
|
{splittopskip==10pt},%
|
|
|
{splitbottomskip==10pt},%
|
|
|
{outermargin==\z@},%
|
|
|
{innermargin==\z@},%
|
|
|
{linewidth==0.4pt},%
|
|
|
{innerlinewidth==\z@},%
|
|
|
{middlelinewidth==\expandafter\mdf@linewidth@length},%
|
|
|
{outerlinewidth==\z@},%
|
|
|
{roundcorner==\z@},%
|
|
|
{footenotedistance==\medskipamount},
|
|
|
{userdefinedwidth==\linewidth},
|
|
|
{needspace==\z@},
|
|
|
{frametitleaboveskip==5pt},
|
|
|
{frametitlebelowskip==5pt},
|
|
|
{frametitlerulewidth==.2pt},
|
|
|
{frametitleleftmargin==10pt},%
|
|
|
{frametitlerightmargin==10pt},%
|
|
|
{shadowsize==8pt},%
|
|
|
{extratopheight==\z@},%
|
|
|
{subtitleabovelinewidth==.8pt},%
|
|
|
{subtitlebelowlinewidth==.6pt},%
|
|
|
{subtitleaboveskip==\baselineskip},%
|
|
|
{subtitlebelowskip==1.2\baselineskip},%
|
|
|
{subtitleinneraboveskip==.5\baselineskip},%
|
|
|
{subtitleinnerbelowskip==.5\baselineskip},%
|
|
|
{subsubtitleabovelinewidth==.8pt},%
|
|
|
{subsubtitlebelowlinewidth==.6pt},%
|
|
|
{subsubtitleaboveskip==\baselineskip},%
|
|
|
{subsubtitlebelowskip==1.2\baselineskip},%
|
|
|
{subsubtitleinneraboveskip==.5\baselineskip},%
|
|
|
{subsubtitleinnerbelowskip==.5\baselineskip},%
|
|
|
}
|
|
|
\mdf@dolist{\mdf@do@stringoption}{%
|
|
|
{frametitle=={}},%
|
|
|
{firstframetitle=={}},%
|
|
|
{framefoot=={}},%
|
|
|
{lastframefoot=={}},%
|
|
|
{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}},%
|
|
|
{extra=={}},%
|
|
|
{singleextra=={}},%
|
|
|
{firstextra=={}},%
|
|
|
{middleextra=={}},%
|
|
|
{secondextra=={}},%
|
|
|
{beforesingleframe=={}},%
|
|
|
{aftersingleframe=={}},%
|
|
|
{beforebreak=={}},%
|
|
|
{afterbreak=={}},%
|
|
|
{beforelastframe=={}},%
|
|
|
{afterlastframe=={}},%
|
|
|
{startcode=={}},%
|
|
|
{startinnercode=={}},%
|
|
|
{endinnercode=={}},%
|
|
|
{endcode=={}},%
|
|
|
{subtitlefont==\normalfont\bfseries},%
|
|
|
{subsubtitlefont==\normalfont},%
|
|
|
{subtitlebackgroundcolor==white},%
|
|
|
{subsubtitlebackgroundcolor==white},%
|
|
|
{subtitleabovelinecolor==black},%
|
|
|
{subtitlebelowlinecolor==black},%
|
|
|
{subsubtitleabovelinecolor==black},%
|
|
|
{subsubtitlebelowlinecolor==black},%
|
|
|
}
|
|
|
\mdf@dolist{\mdf@do@booloption}{%
|
|
|
{ntheorem==false},%
|
|
|
{topline==true},%
|
|
|
{leftline==true},%
|
|
|
{bottomline==true},%
|
|
|
{rightline==true},%
|
|
|
{frametitletopline==true},%
|
|
|
{frametitleleftline==true},%
|
|
|
{frametitlebottomline==true},%
|
|
|
{frametitlerightline==true},%
|
|
|
{frametitlerule==false},%
|
|
|
{footnoteinside==true},%
|
|
|
{usetwoside==true},%
|
|
|
{repeatframetitle==false},%Noch nicht richtig implementiert
|
|
|
{shadow==false},%
|
|
|
{everyline==false},%
|
|
|
{ignorelastdescenders==false},%
|
|
|
{subtitleaboveline==false},
|
|
|
{subtitlebelowline==false},
|
|
|
{subsubtitleaboveline==false},
|
|
|
{subsubtitlebelowline==false},
|
|
|
{draft==false},
|
|
|
{suppressfirstparskip==true},
|
|
|
}
|
|
|
%%special boolflag hidealllines:
|
|
|
\newbool{mdf@hidealllines}%
|
|
|
\define@key{mdf}{hidealllines}[false]{%
|
|
|
\setbool{mdf@hidealllines}{#1}%
|
|
|
\ifbool{mdf@hidealllines}{%
|
|
|
\kvsetkeys{mdf}{leftline=false,topline=false,%
|
|
|
rightline=false,bottomline=false}%
|
|
|
}{%
|
|
|
\kvsetkeys{mdf}{leftline=true,topline=true,%
|
|
|
rightline=true,bottomline=true}%
|
|
|
}%
|
|
|
}
|
|
|
\appto\mdf@definestyle@defaultoptions{hidealllines=false,}%
|
|
|
%%special boolflag nobreak:
|
|
|
\DeclareBoolOption[true]{nobreak}
|
|
|
\boolfalse{mdf@nobreak}%
|
|
|
\appto\mdf@definestyle@defaultoptions{nobreak=false,}
|
|
|
\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}%
|
|
|
}
|
|
|
\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}[]{%
|
|
|
\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%
|
|
|
}%
|
|
|
\DeclareDefaultOption{%
|
|
|
\mdf@PackageError{Unknown Option '\CurrentOption' for mdframed}}
|
|
|
\ProcessKeyvalOptions*\relax
|
|
|
\ifnum\c@mdf@globalstyle@cnt<0
|
|
|
\kvsetkeys{mdf}{framemethod=default,}
|
|
|
\fi
|
|
|
\newrobustcmd*{\mdfsetup}{\kvsetkeys{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}}%
|
|
|
}%
|
|
|
\DeclareVoidOption{default}{%
|
|
|
\expandafter\expandafter\expandafter\mdfsetup\expandafter%
|
|
|
\expandafter\expandafter{\csname mdf@definestyle@defaultoptions\endcsname}%
|
|
|
}%
|
|
|
|
|
|
\ifnum\c@mdf@globalstyle@cnt>0
|
|
|
\define@key{mdf}{linewidth}{%
|
|
|
\def\@tempa{#1}
|
|
|
\mdf@iflength{\@tempa}%
|
|
|
{\csxdef{mdfl@linewidth}{\the\mdf@templength}}%
|
|
|
{\csxdef{mdfl@linewidth}{\the\mdf@templength}}%
|
|
|
\setlength{\csname mdf@middlelinewidth@length\endcsname}%
|
|
|
{\csname mdfl@linewidth\endcsname}%
|
|
|
}%
|
|
|
\fi
|
|
|
|
|
|
\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
|
|
|
\newsavebox\mdf@splitbox@save
|
|
|
|
|
|
\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
|
|
|
\newlength\mdf@horizontalspaceofbox
|
|
|
\newlength\mdfsubtitleheight
|
|
|
\newlength\mdfsubsubtitleheight
|
|
|
|
|
|
\newbool{mdfsingleframe}\boolfalse{mdfsingleframe}
|
|
|
\newbool{mdffirstframe}\boolfalse{mdffirstframe}
|
|
|
\newbool{mdfmiddleframe}\boolfalse{mdfmiddleframe}
|
|
|
\newbool{mdflastframe}\boolfalse{mdflastframe}
|
|
|
|
|
|
\newtoggle{mdf@notfirstframetitle}\togglefalse{mdf@notfirstframetitle}%
|
|
|
\newtoggle{mdflastframe}\togglefalse{mdflastframe}
|
|
|
|
|
|
\newcounter{mdfcountframes}\setcounter{mdfcountframes}{0}
|
|
|
\newrobustcmd\mdfcreateextratikz{}
|
|
|
|
|
|
\def\mdf@lrbox#1{%
|
|
|
\mdf@patchamsthm%patch amsthm
|
|
|
\setbox#1\vbox\bgroup%
|
|
|
\color@begingroup%
|
|
|
\mdf@horizontalmargin@equation%
|
|
|
\columnwidth=\hsize%
|
|
|
\textwidth=\hsize%
|
|
|
\let\if@nobreak\iffalse%
|
|
|
\let\if@noskipsec\iffalse%
|
|
|
\let\par\@@par%
|
|
|
\let\-\@dischyph%
|
|
|
\let\'\@acci\let\`\@accii\let\=\@acciii%
|
|
|
\parindent\z@ \parskip\z@skip%
|
|
|
\linewidth\hsize%
|
|
|
\@totalleftmargin\z@%
|
|
|
\leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip%
|
|
|
\parfillskip\@flushglue \lineskip\normallineskip%
|
|
|
\baselineskip\normalbaselineskip%
|
|
|
%% \sloppy%
|
|
|
\let\\\@normalcr%
|
|
|
\mdf@par@local%New feature to restore parskip/parindent local in save box
|
|
|
\ifbool{mdf@suppressfirstparskip}{\vspace*{-\parskip}}{}%
|
|
|
\@afterindentfalse%
|
|
|
%\@afterheading%
|
|
|
}
|
|
|
\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}
|
|
|
\let\mdf@patchamsthm\relax
|
|
|
\AtBeginDocument{%
|
|
|
\@ifpackageloaded{amsthm}%
|
|
|
{%
|
|
|
\newrobustcmd\mdf@patchamsthm{%
|
|
|
\let\mdf@deferred@thm@head\deferred@thm@head%
|
|
|
\pretocmd{\deferred@thm@head}{\@inlabelfalse}%
|
|
|
{\mdf@PackageInfo{mdframed detected package amsthm ^^J
|
|
|
changed the theorem header of amsthm\MessageBreak}%
|
|
|
}{%
|
|
|
\mdf@PackageError{mdframed detected package amsthm ^^J
|
|
|
changed the theorem header of amsthm
|
|
|
failed\MessageBreak}%
|
|
|
}%
|
|
|
}%
|
|
|
}{}%
|
|
|
}
|
|
|
\def\mdf@trivlist#1{%
|
|
|
\edef\mdf@temp{%
|
|
|
\topsep=\the\topsep\relax%
|
|
|
\partopsep=\the\partopsep\relax%
|
|
|
\parsep=\the\parsep\relax%
|
|
|
}%
|
|
|
\setlength{\topsep}{#1}%
|
|
|
\topskip\z@%
|
|
|
\partopsep\z@%
|
|
|
\parsep\z@%
|
|
|
\@nmbrlistfalse%
|
|
|
\@trivlist%
|
|
|
\labelwidth\z@%
|
|
|
\leftmargin\z@%
|
|
|
\itemindent\z@%
|
|
|
\let\@itemlabel\@empty%
|
|
|
\def\makelabel##1{##1}%
|
|
|
\item\relax\mdf@temp\relax%
|
|
|
}
|
|
|
\let\endmdf@trivlist\endtrivlist
|
|
|
\patchcmd\endmdf@trivlist\@endparenv\mdf@endparenv{%
|
|
|
\wlog{^^J****** mdframed patching \string\endmdf@trivlist}%
|
|
|
\wlog{^^J****** -- success******^^J}%
|
|
|
}{%
|
|
|
\wlog{^^J****** mdframed patching \string\endmdf@trivlist}%
|
|
|
\wlog{^^J****** -- failed******^^J}%
|
|
|
}
|
|
|
\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}}%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@thm@caption[2]{}
|
|
|
\AtBeginDocument{%
|
|
|
\@ifpackageloaded{ntheorem}%
|
|
|
{\renewrobustcmd*\mdf@thm@caption{\thm@thmcaption}}{}%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@checkntheorem{%
|
|
|
\ifbool{mdf@ntheorem}%
|
|
|
{\ifundef{\theorempreskipamount}%
|
|
|
{\mdf@PackageWarning{You have not loaded ntheorem yet}}%
|
|
|
{\setlength{\theorempreskipamount}{\z@}%
|
|
|
\setlength{\theorempostskipamount}{\z@}%
|
|
|
}%
|
|
|
}{}%
|
|
|
}
|
|
|
\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}%
|
|
|
\mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##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}%
|
|
|
\mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##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}%
|
|
|
\mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##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}%
|
|
|
\mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##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]{%
|
|
|
\mdf@lrbox{\mdf@frametitlebox}%
|
|
|
\begingroup
|
|
|
%%\parindent\z@\parskip\z@%
|
|
|
\@afterheading
|
|
|
\mdf@frametitlealignment%
|
|
|
\leavevmode\color{\mdf@frametitlefontcolor}%
|
|
|
\normalfont\mdf@frametitlefont{#1}%
|
|
|
\mdf@@ignorelastdescenders%
|
|
|
\par\unskip\ifvmode\nointerlineskip\hrule \@height\z@ \@width\hsize\fi%%
|
|
|
\endgroup
|
|
|
\endmdf@lrbox\relax%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@frametitlebox=\vbox{\unvbox\mdf@frametitlebox}%
|
|
|
\mdfframetitleboxwidth=\wd\mdf@frametitlebox\relax%
|
|
|
\mdfframetitleboxheight=\ht\mdf@frametitlebox\relax%
|
|
|
\mdfframetitleboxdepth=\dp\mdf@frametitlebox\relax%
|
|
|
\mdfframetitleboxtotalheight=\dimexpr
|
|
|
\ht\mdf@frametitlebox
|
|
|
+\dp\mdf@frametitlebox%
|
|
|
+\mdf@frametitleaboveskip@length
|
|
|
+\mdf@frametitlebelowskip@length
|
|
|
\relax%
|
|
|
\setbox\mdf@frametitlebox=%prevent frametitle to expand glue
|
|
|
\vbox to \dimexpr\mdfframetitleboxheight+\mdfframetitleboxdepth\relax%
|
|
|
{\unvbox\mdf@frametitlebox}%
|
|
|
}
|
|
|
|
|
|
\newrobustcmd\mdf@@frametitle@use{%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@one=\vbox{%
|
|
|
\parskip\z@\relax%
|
|
|
\parindent\z@\relax%
|
|
|
\offinterlineskip\relax%
|
|
|
\unvcopy\mdf@frametitlebox\relax%
|
|
|
\mdf@@frametitlerule\relax%
|
|
|
\unvbox\mdf@splitbox@one\relax%
|
|
|
}%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\mdfsetup{innertopmargin=\mdf@frametitleaboveskip@length}%
|
|
|
}
|
|
|
\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@styledefinition{%AVOID!!!Needed for framemethod=default
|
|
|
\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}%
|
|
|
\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%
|
|
|
\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%
|
|
|
}
|
|
|
\newcount\mdf@envdepth \mdf@envdepth=0
|
|
|
\@definecounter{mdf@env@i}
|
|
|
\@definecounter{mdf@env@ii}
|
|
|
\newrobustcmd*\mdf@preenvsetting{%
|
|
|
\needspace{\mdf@needspace@length}
|
|
|
\mdf@twoside@checklength%
|
|
|
\edef\mdf@par@local{%
|
|
|
\parskip=\the\parskip\relax%
|
|
|
\parindent=\the\parindent\relax}%
|
|
|
\parskip\z@%
|
|
|
\parindent\z@%
|
|
|
\let\width\z@%
|
|
|
\let\height\z@%
|
|
|
\mdf@checkntheorem%
|
|
|
\ifbool{mdf@draft}{%
|
|
|
\ifdimgreater{\overfullrule}{0pt}{}{\setlength\overfullrule{5pt}}}{}%
|
|
|
%% Nested environments and provide an extra counter.
|
|
|
\ifnum\mdf@envdepth >\tw@\@toodeep\else%
|
|
|
\advance\mdf@envdepth\@ne
|
|
|
\edef\mdf@depthctr{mdf@env@\romannumeral\the\mdf@envdepth}%
|
|
|
\fi
|
|
|
\mdf@styledefinition%
|
|
|
\mdf@footnoteinput%
|
|
|
\color{\mdf@fontcolor}%
|
|
|
\mdf@font%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@@ignorelastdescenders{%
|
|
|
\ifbool{mdf@ignorelastdescenders}%
|
|
|
{%
|
|
|
\par\strut\par%
|
|
|
\unskip\unskip\setbox0=\lastbox
|
|
|
\vspace*{\dimexpr\ht\strutbox-\baselineskip\relax}%
|
|
|
}{}%
|
|
|
}
|
|
|
\newenvironment{mdframed}[1][]{%
|
|
|
\color@begingroup%
|
|
|
\mdfsetup{userdefinedwidth=\linewidth,#1}%
|
|
|
\mdf@startcode%
|
|
|
\mdf@preenvsetting%
|
|
|
\ifdefempty{\mdf@firstframetitle}{}%
|
|
|
{\let\mdf@frametitlesave\mdf@frametitle%
|
|
|
\let\mdf@frametitle\mdf@firstframetitle%
|
|
|
}%
|
|
|
\ifvmode\nointerlineskip\fi%
|
|
|
\mdf@trivlist{\mdf@skipabove@length}%%
|
|
|
\mdf@settings%
|
|
|
\mdf@lrbox{\mdf@splitbox@one}%
|
|
|
\mdf@startinnercode%
|
|
|
}%
|
|
|
{%
|
|
|
\mdf@@ignorelastdescenders%
|
|
|
\par\unskip\ifvmode\nointerlineskip\hrule \@height\z@ \@width\hsize\fi%%
|
|
|
\ifmdf@footnoteinside%
|
|
|
\def\mdf@reserveda{%
|
|
|
\mdf@footnoteoutput%
|
|
|
\mdf@endinnercode%
|
|
|
\endmdf@lrbox%
|
|
|
\ifdefempty{\mdf@frametitle}{}%
|
|
|
{\mdfframedtitleenv{\mdf@frametitle}\mdf@@frametitle@use}%
|
|
|
\detected@mdf@put@frame}%
|
|
|
\else%
|
|
|
\def\mdf@reserveda{%
|
|
|
\mdf@endinnercode%
|
|
|
\endmdf@lrbox%
|
|
|
\ifdefempty{\mdf@frametitle}{}%
|
|
|
{\mdfframedtitleenv{\mdf@frametitle}\mdf@@frametitle@use}%
|
|
|
\detected@mdf@put@frame%
|
|
|
\mdf@footnoteoutput%
|
|
|
}%
|
|
|
\fi%
|
|
|
\mdf@reserveda%
|
|
|
\aftergroup\endmdf@trivlist%
|
|
|
\color@endgroup%
|
|
|
\mdf@endcode%
|
|
|
}
|
|
|
|
|
|
\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{%
|
|
|
\bgroup\@nobreakfalse\addpenalty\z@\egroup%added 29.5.12
|
|
|
\penalty\@M\relax\vskip 2\baselineskip\relax%
|
|
|
\penalty9999\relax\vskip -2\baselineskip\relax%
|
|
|
\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@sub[2]{%
|
|
|
\advance #1 by -\csname mdf@#2@length\endcsname\relax%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@advancelength@add[2]{%
|
|
|
\advance #1 by \csname mdf@#2@length\endcsname\relax%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@horizontalmargin@equation{%
|
|
|
\setlength{\mdf@horizontalspaceofbox}{\mdf@userdefinedwidth@length}%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\mdf@horizontalspaceofbox}}{%
|
|
|
leftmargin,outerlinewidth,middlelinewidth,%
|
|
|
innerlinewidth,innerleftmargin,innerrightmargin,%
|
|
|
innerlinewidth,middlelinewidth,outerlinewidth,%
|
|
|
rightmargin}%
|
|
|
\notbool{mdf@leftline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\mdf@horizontalspaceofbox}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\notbool{mdf@rightline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\mdf@horizontalspaceofbox}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\hsize=\mdf@horizontalspaceofbox%
|
|
|
}
|
|
|
\newrobustcmd*\mdf@keeplines@single{%
|
|
|
\notbool{mdf@topline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\mdf@verticalmarginwhole@length}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\notbool{mdf@bottomline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\mdf@verticalmarginwhole@length}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
}
|
|
|
\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}%
|
|
|
\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@add{\mdf@verticalmarginwhole@length}}{%
|
|
|
outerlinewidth,middlelinewidth,innerlinewidth,%
|
|
|
innertopmargin,innerbottommargin,innerlinewidth,%
|
|
|
middlelinewidth,outerlinewidth,extratopheight}%
|
|
|
\mdf@keeplines@single%
|
|
|
\begingroup%
|
|
|
\mdf@@setzref%
|
|
|
\booltrue{mdfsingleframe}%
|
|
|
\mdf@beforesingleframe%
|
|
|
\mdf@putbox@single%
|
|
|
\mdf@aftersingleframe%
|
|
|
\endgroup%Output no break
|
|
|
\fi%
|
|
|
}
|
|
|
\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@add{\mdf@verticalmarginwhole@length}}%
|
|
|
{%
|
|
|
outerlinewidth,middlelinewidth,innerlinewidth,%
|
|
|
innertopmargin,innerbottommargin,%
|
|
|
innerlinewidth,middlelinewidth,outerlinewidth,extratopheight}%
|
|
|
\mdf@keeplines@single%
|
|
|
\ifdimless{\mdf@verticalmarginwhole@length}{\mdf@freevspace@length}%
|
|
|
{%enough space / no break
|
|
|
\begingroup%
|
|
|
\mdf@@setzref%
|
|
|
\booltrue{mdfsingleframe}%
|
|
|
\mdf@beforesingleframe%
|
|
|
\mdf@putbox@single%
|
|
|
\mdf@aftersingleframe%
|
|
|
\endgroup%Output no break
|
|
|
\let\mdf@reserved@a\relax%
|
|
|
}%
|
|
|
{%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame@i}%need to split
|
|
|
}%
|
|
|
}%
|
|
|
\fi%
|
|
|
\mdf@reserved@a%
|
|
|
}
|
|
|
\def\mdf@put@frame@i{%Box must be splitted
|
|
|
\mdf@freepagevspace%gives \mdf@freevspace@length
|
|
|
\dimen@=\the\mdf@freevspace@length\relax%
|
|
|
\dimen@i=\mdf@innertopmargin@length\relax%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\dimen@i}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
\advance\dimen@i by 2\baselineskip\relax%
|
|
|
\ifdimless{\dimen@}{\dimen@i}%
|
|
|
{\hrule \@height\z@ \@width\hsize%
|
|
|
\vfill\eject%no room for two lines
|
|
|
\def\mdf@reserved@a{\mdf@put@frame}%
|
|
|
}%
|
|
|
{%enough space for first part
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\dimen@}}{%calculate with \dimen@
|
|
|
outerlinewidth,middlelinewidth,innerlinewidth,%width of top rule
|
|
|
innertopmargin,splitbottomskip}%width of length
|
|
|
\ifboolexpr{ bool {mdf@everyline} and bool {mdf@bottomline} }%
|
|
|
{%need space for bottomline
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\dimen@}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\ifbool{mdf@topline}{}%%no top line
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\dimen@}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}%
|
|
|
\advance\dimen@.8\pageshrink%
|
|
|
\ifdimless{\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}{\dimen@}%
|
|
|
{\mdf@PackageWarning{You got a bad break\MessageBreak
|
|
|
because the last box will be empty\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%needed????????????????????
|
|
|
}{}%
|
|
|
\setbox\mdf@splitbox@save=\vbox{\unvcopy\mdf@splitbox@one}%save original
|
|
|
\splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@\relax%
|
|
|
\setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%
|
|
|
\setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\ifdimgreater{\ht\mdf@splitbox@two+\dp\mdf@splitbox@two}{\dimen@}%
|
|
|
{%splitted wrong
|
|
|
\mdf@PackageInfo{Box was splittet wrong^^J
|
|
|
starting loop to iterate
|
|
|
the splitting point\MessageBreak}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\dimen@i=\dimen@\relax%
|
|
|
\@tempcnta=\z@\relax%
|
|
|
\loop
|
|
|
\ifdim\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax>\dimen@
|
|
|
\advance\dimen@i by -\p@\relax%
|
|
|
\advance\@tempcnta by \@ne\relax%
|
|
|
%% \wlog{***mdframed \string\@tempcnta=\the\@tempcnta***}
|
|
|
%% \wlog{***mdframed \string\dimen@i=\the\dimen@i***}
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@i\relax%
|
|
|
\setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%
|
|
|
\setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\ifnum\@tempcnta>100
|
|
|
\let\iterate\relax%
|
|
|
\mdf@PackageWarning{correct box splittet fails^^J
|
|
|
It seems you are using a non splittable
|
|
|
contents\MessageBreak}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\setbox\mdf@splitbox@two=\vbox{}%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame}%
|
|
|
\fi
|
|
|
\repeat%
|
|
|
}{}%
|
|
|
\ifvoid\mdf@splitbox@one\relax%
|
|
|
\mdf@PackageWarning{You got a bad break because the splittet box
|
|
|
is empty^^J
|
|
|
You have to change the page settings^^J
|
|
|
like enlargethispage or something else^^J
|
|
|
the package increases do
|
|
|
\enlargethispage{\baselineskip}\MessageBreak}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}
|
|
|
\enlargethispage{\baselineskip}%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame}%
|
|
|
\fi%
|
|
|
% Test if first splitted frame doesn't have the original with.
|
|
|
% occurs with math
|
|
|
\ifdim\wd\mdf@splitbox@two=\wd\mdf@splitbox@one\relax
|
|
|
\else%
|
|
|
\mdf@PackageInfo{You first box width is to small^^J
|
|
|
mdframed fixed it\MessageBreak}%
|
|
|
\setbox\mdf@splitbox@two=\vbox%
|
|
|
{%
|
|
|
\hrule \@height\z@ \@width\mdfboundingboxwidth\relax%
|
|
|
\unvcopy\mdf@splitbox@two%
|
|
|
}%
|
|
|
\fi%
|
|
|
\ifvoid\mdf@splitbox@two\relax%
|
|
|
{%
|
|
|
\hrule \@height\f@size pt \@width\z@%
|
|
|
\hrule \@height\z@ \@width\hsize}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\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{\unvcopy\mdf@splitbox@save}%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame}%
|
|
|
}%
|
|
|
{%
|
|
|
\begingroup%
|
|
|
\mdf@@setzref%
|
|
|
\mdf@beforebreak%
|
|
|
\booltrue{mdffirstframe}%
|
|
|
\mdf@putbox@first%
|
|
|
\mdf@afterbreak%
|
|
|
\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{%
|
|
|
\setlength{\mdf@freevspace@length}{\vsize}%
|
|
|
\ifbool{mdf@repeatframetitle}%
|
|
|
{%repeating title -- more robust using hooks.
|
|
|
\toggletrue{mdf@notfirstframetitle}%
|
|
|
\splitmaxdepth\z@ \splittopskip\z@%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\break\unvbox\mdf@splitbox@one}%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox0=\vsplit\mdf@splitbox@one to \z@\relax%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\setbox\mdf@splitbox@one\vbox%
|
|
|
{%
|
|
|
\parskip\z@\relax%
|
|
|
\parindent\z@\relax%
|
|
|
\vskip\mdf@frametitleaboveskip@length%
|
|
|
\unvcopy\mdf@frametitlebox\relax%
|
|
|
\mdf@@frametitlerule\relax%
|
|
|
\unvbox\mdf@splitbox@one\relax%
|
|
|
}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
}{}%
|
|
|
\setlength{\dimen@}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\dimen@}}%
|
|
|
{innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
\ifboolexpr { bool {mdf@everyline} and bool {mdf@topline} }%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\dimen@}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\notbool{mdf@bottomline}%remove bottom if neccessary
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\dimen@}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\ifdimgreater{\dimen@}{\mdf@freevspace@length}%
|
|
|
{%have a middle box
|
|
|
\advance\mdf@freevspace@length by -\mdf@splitbottomskip@length\relax%
|
|
|
\ifbool{mdf@everyline}%regard top and bottom if everyline is used
|
|
|
{%
|
|
|
\ifbool{mdf@topline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\mdf@freevspace@length}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
\ifbool{mdf@bottomline}%
|
|
|
{%
|
|
|
\mdf@dolist{\mdf@advancelength@sub{\mdf@freevspace@length}}%
|
|
|
{innerlinewidth,middlelinewidth,outerlinewidth}%
|
|
|
}{}%
|
|
|
}{}%
|
|
|
\setbox\mdf@splitbox@save=\vbox{\unvcopy\mdf@splitbox@one}%
|
|
|
\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}%
|
|
|
\setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\ifdimgreater{\ht\mdf@splitbox@two+\dp\mdf@splitbox@two}%
|
|
|
{\mdf@freevspace@length}%
|
|
|
{%splitted wrong
|
|
|
\mdf@PackageInfo{Box was splittet wrong^^J
|
|
|
starting loop to iterate
|
|
|
the splitting point\MessageBreak}%
|
|
|
\dimen@i=\mdf@freevspace@length%\relax
|
|
|
\@tempcnta=\z@\relax
|
|
|
\loop
|
|
|
\ifdim\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax>%
|
|
|
\mdf@freevspace@length\relax
|
|
|
\advance\dimen@i by -\p@\relax%
|
|
|
\advance\@tempcnta by \@ne\relax%
|
|
|
\ifnum\@tempcnta>100
|
|
|
\let\iterate\relax%
|
|
|
\mdf@PackageWarning{correct box splittet fails^^J
|
|
|
It seems you are using a non splittable
|
|
|
contents\MessageBreak}%
|
|
|
\fi
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length%
|
|
|
\mdf@ignorevbadness%
|
|
|
\setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@i\relax%
|
|
|
\setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%
|
|
|
\setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%
|
|
|
\repeat%
|
|
|
}{}%
|
|
|
\ifvoid\mdf@splitbox@one\relax%
|
|
|
\mdf@PackageWarning{You got a bad break because the splittet box is
|
|
|
empty^^J
|
|
|
You have to change the page settings^^J
|
|
|
like enlargethispage or something else^^J
|
|
|
the package increases do
|
|
|
\enlargethispage{\baselineskip}\MessageBreak}%
|
|
|
\setbox\mdf@splitbox@one=\vbox{\unvcopy\mdf@splitbox@save}%
|
|
|
\enlargethispage{\baselineskip}%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame@ii}%
|
|
|
\else
|
|
|
\setbox\mdf@splitbox@two=\vbox%
|
|
|
{%
|
|
|
\hrule \@height\z@ \@width\mdfboundingboxwidth\relax%
|
|
|
\unvcopy\mdf@splitbox@two%
|
|
|
}%
|
|
|
\begingroup%
|
|
|
\mdf@@setzref%
|
|
|
\booltrue{mdfmiddleframe}%
|
|
|
\mdf@beforebreak%
|
|
|
\mdf@putbox@middle%
|
|
|
\mdf@afterbreak%
|
|
|
\endgroup%
|
|
|
\hrule \@height\z@ \@width\hsize%
|
|
|
\vfill\eject%
|
|
|
\def\mdf@reserved@a{\mdf@put@frame@ii}%
|
|
|
\fi
|
|
|
}%End middle box case
|
|
|
{%start last box case
|
|
|
\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}%
|
|
|
|
|
|
\let\mdf@reserved@a\relax%
|
|
|
\setbox\mdf@splitbox@one=\vbox%
|
|
|
{%
|
|
|
\unvbox\mdf@splitbox@one%
|
|
|
\hrule \@height\z@ \@width\mdfboundingboxwidth
|
|
|
}%
|
|
|
}{}%
|
|
|
\begingroup%
|
|
|
\toggletrue{mdflastframe}%
|
|
|
\mdf@beforebreak%
|
|
|
\begingroup%
|
|
|
\mdf@@setzref%
|
|
|
\booltrue{mdflastframe}%
|
|
|
\mdf@beforelastframe%
|
|
|
\mdf@putbox@second%
|
|
|
\mdf@afterlastframe%
|
|
|
\endgroup%
|
|
|
\hrule \@height\z@ \@width\hsize%
|
|
|
\mdf@afterbreak%
|
|
|
\endgroup%
|
|
|
\let\mdf@reserved@a\relax%
|
|
|
}%
|
|
|
\mdf@reserved@a%
|
|
|
}
|
|
|
|
|
|
\newrobustcmd\mdfsubtitle[2][]%
|
|
|
{%
|
|
|
\begingroup
|
|
|
\penalty-9995%set a breakpoint before the subtitle
|
|
|
\parindent\z@\relax%
|
|
|
\parskip\z@\relax%
|
|
|
\mdfsetup{#1}%only for subtitle options
|
|
|
\par\addvspace{\mdf@subtitleaboveskip@length}%
|
|
|
\setbox\z@=\vbox{%
|
|
|
\mdf@frametitlealignment%
|
|
|
\mdf@subtitlefont{#2}%
|
|
|
\mdf@@ignorelastdescenders%
|
|
|
\relax}%
|
|
|
\setbox\z@=\vbox{\unvbox\z@}%
|
|
|
\setbox\z@=\vbox{%
|
|
|
\parskip\z@\relax%
|
|
|
\parindent\z@\relax%
|
|
|
\offinterlineskip\relax%
|
|
|
\vbox to \mdf@subtitleinneraboveskip@length{}%
|
|
|
\unvbox\z@\relax%
|
|
|
\vbox to \mdf@subtitleinnerbelowskip@length{}%
|
|
|
}%\z@ contains the subtitle+required length
|
|
|
\setlength{\mdfsubtitleheight}{\dimexpr\ht\z@+\dp\z@\relax}
|
|
|
\setbox\z@=\vbox to \mdfsubtitleheight {\unvbox\z@}%
|
|
|
% \dimen@ is now the complete width
|
|
|
\mdf@templength=\linewidth\relax%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\mdf@templength}}%
|
|
|
{innerleftmargin,innerrightmargin}%
|
|
|
\offinterlineskip\relax%
|
|
|
\ifbool{mdf@subtitleaboveline}{\mdf@drawsubtitleaboveline\par}{}%
|
|
|
\mdf@drawsubtitlebackground%
|
|
|
\box\z@%
|
|
|
\ifbool{mdf@subtitlebelowline}{\mdf@drawsubtitlebelowline}{}%
|
|
|
\par\unskip\ifvmode\nointerlineskip\hrule \@height\z@ \@width\hsize\fi%
|
|
|
\penalty 9995%
|
|
|
\addvspace{\mdf@subtitlebelowskip@length}%
|
|
|
\endgroup%
|
|
|
\@afterheading%
|
|
|
}
|
|
|
|
|
|
\newrobustcmd\mdfsubsubtitle[2][]%
|
|
|
{%
|
|
|
\begingroup
|
|
|
\penalty-9995%set a breakpoint before the subtitle
|
|
|
\parindent\z@\relax%
|
|
|
\parskip\z@\relax%
|
|
|
\mdfsetup{#1}%only for subtitle options
|
|
|
\par\addvspace{\mdf@subsubtitleaboveskip@length}%
|
|
|
\setbox\z@=\vbox{%
|
|
|
\mdf@frametitlealignment%
|
|
|
\mdf@subsubtitlefont{#2}%
|
|
|
\mdf@@ignorelastdescenders%
|
|
|
\relax}%
|
|
|
\setbox\z@=\vbox{\unvbox\z@}%
|
|
|
\setbox\z@=\vbox{%
|
|
|
\parskip\z@\relax%
|
|
|
\parindent\z@\relax%
|
|
|
\offinterlineskip\relax%
|
|
|
\vbox to \mdf@subsubtitleinneraboveskip@length{}%
|
|
|
\unvbox\z@\relax%
|
|
|
\vbox to \mdf@subsubtitleinnerbelowskip@length{}%
|
|
|
}%\z@ contains the subtitle+required length
|
|
|
\setlength{\mdfsubsubtitleheight}{\dimexpr\ht\z@+\dp\z@\relax}
|
|
|
\setbox\z@=\vbox to \mdfsubsubtitleheight {\unvbox\z@}%
|
|
|
% \dimen@ is now the complete width
|
|
|
\mdf@templength=\linewidth\relax%
|
|
|
\mdf@dolist{\mdf@advancelength@add{\mdf@templength}}%
|
|
|
{innerleftmargin,innerrightmargin}%
|
|
|
\offinterlineskip\relax%
|
|
|
\ifbool{mdf@subsubtitleaboveline}{\mdf@drawsubtitleaboveline\par}{}%
|
|
|
\mdf@drawsubtitlebackground%
|
|
|
\box\z@%
|
|
|
\ifbool{mdf@subsubtitlebelowline}{\mdf@drawsubtitlebelowline}{}%
|
|
|
\par\unskip\ifvmode\nointerlineskip\hrule \@height\z@ \@width\hsize\fi%
|
|
|
\penalty 9995%
|
|
|
\addvspace{\mdf@subsubtitlebelowskip@length}%
|
|
|
\endgroup%
|
|
|
\@afterheading%
|
|
|
}
|
|
|
%%%% _____t_____
|
|
|
%%%% | |
|
|
|
%%%% | |
|
|
|
%%%% | |
|
|
|
%%%% l| |r
|
|
|
%%%% | |
|
|
|
%%%% | |
|
|
|
%%%% |___________|
|
|
|
%%%% b
|
|
|
\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}{xcolor}%
|
|
|
|
|
|
\endinput
|
|
|
%%
|
|
|
%% ================================================================
|
|
|
%% Copyright (C) 2012 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'.
|
|
|
|