diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/mdframed |
Initial commit
Diffstat (limited to 'macros/latex/contrib/mdframed')
16 files changed, 9826 insertions, 0 deletions
diff --git a/macros/latex/contrib/mdframed/Makefile b/macros/latex/contrib/mdframed/Makefile new file mode 100644 index 0000000000..fd9d5b99a3 --- /dev/null +++ b/macros/latex/contrib/mdframed/Makefile @@ -0,0 +1,246 @@ +################################################################ +## Makefile for mdframed project folder +## $Id: Makefile 428 2012-06-06 12:30:18Z marco $ +################################################################ +## Definitions +################################################################ +.SILENT: +SHELL := /bin/bash +.PHONY: all clean ctan allwithoutclean +################################################################ +## Name list +################################################################ +PACKAGE = mdframed +EXAMPLED = mdframed-example-default +EXAMPLET = mdframed-example-tikz +EXAMPLEP = mdframed-example-pstricks +EXAMPLESX = mdframed-example-texsx +STYLE_I = md-frame-0 +STYLE_II = md-frame-1 +STYLE_III = md-frame-2 +STYLE_IV = md-frame-3 +EXAMPLLIST= $(EXAMPLED) $(EXAMPLET) $(EXAMPLEP) $(EXAMPLESX) +FILELIST = $(PACKAGE) $(EXAMPLED) $(EXAMPLET) $(EXAMPLEP) $(EXAMPLESX) +STYLELIST = $(STYLE_I) $(STYLE_II) $(STYLE_III) $(STYLE_IV) +AUXFILES = aux dtxe glo glolog gls hd ins idx idxlog ilg ind log out ps thm tmp toc xdv + + +################################################################ +## Colordefinition +################################################################ +NO_COLOR = \x1b[0m +OK_COLOR = \x1b[32;01m +WARN_COLOR = \x1b[33;01m +ERROR_COLOR = \x1b[31;01m +################################################################ +## make help +################################################################ +help: + @echo + @echo -e "$(WARN_COLOR)The following definitions provided by this Makefile" + @echo -e "$(OK_COLOR)\tmake docsty\t\t--\ttypesets the documenation and the package" + @echo -e "$(OK_COLOR)\tmake all\t\t--\trun docsty examples clean" + @echo -e "\tmake examples\t\t--\tcompiles all example files" + @echo -e "\tmake clean\t\t--\tremove all helpfiles created by mdframed" + @echo -e "\tmake changeversion\t--\tmaintaner tool to change the version" + @echo -e "\tmake changerevision\t--\tmaintaner tool to change the revision" + @echo -e "\tmake changedate\t--\tmaintaner tool to change the date" + @echo -e "\tmake localinstall\t--\tinstall the package in TEXMFHOME" + @echo -e "$(WARN_COLOR)End help$(NO_COLOR)" + +################################################################ +## Compilation +################################################################ +$(EXAMPLED).pdf: $(EXAMPLED).tex +$(EXAMPLET).pdf: $(EXAMPLET).tex +$(EXAMPLEP).ps: $(EXAMPLEP).tex +$(EXAMPLESX).pdf: $(EXAMPLESX).tex + +%.pdf: + NAME=`basename $< .tex` ;\ + echo -e "" ;\ + echo -e "\t$(WARN_COLOR)Typesetting $$NAME$(NO_COLOR)" ;\ + pdflatex --draftmode --interaction=nonstopmode $< > /dev/null ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)compilation in draftmode without errors$(NO_COLOR)" ;\ + echo -e "\t$(OK_COLOR)Run PDFLaTeX again on $$NAME.tex$(NO_COLOR)" ;\ + pdflatex --interaction=nonstopmode $< > /dev/null ;\ + else \ + echo -e "\t$(ERROR_COLOR)compilation in draftmode with errors$(NO_COLOR)" ;\ + exit 0;\ + fi ;\ + echo -e "\t$(OK_COLOR)Typesetting $$NAME finished $(NO_COLOR)" ;\ + +%.ps: + NAME=`basename $< .tex` ;\ + echo -e "" ;\ + echo -e "\t$(WARN_COLOR)Typesetting $$NAME$(NO_COLOR)" ;\ + xelatex --no-pdf --interaction=nonstopmode $< > /dev/null ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)compilation in draftmode without errors$(NO_COLOR)" ;\ + echo -e "\t$(OK_COLOR)Run XeLaTeX again on $$NAME.tex$(NO_COLOR)" ;\ + xelatex --interaction=nonstopmode $< > /dev/null ;\ + else \ + echo -e "\t$(ERROR_COLOR)compilation in draftmode with errors$(NO_COLOR)" ;\ + exit 0;\ + fi ;\ + echo -e "\t$(OK_COLOR)Typesetting $$NAME done$(NO_COLOR)" ;\ + +# latex -draftmode -interaction=nonstopmode $< > /dev/null ;\ +# if [ $$? = 0 ] ; then \ +# echo -e "\t$(OK_COLOR)compilation in draftmode without errors$(NO_COLOR)" ;\ +# echo -e "\t$(OK_COLOR)Run LaTeX again on $$NAME.tex$(NO_COLOR)" ;\ +# latex -interaction=nonstopmode $< > /dev/null ;\ +# latex -interaction=nonstopmode $< > /dev/null ;\ +# dvips -q $$NAME.dvi ;\ +# ps2pdf $$NAME.ps ;\ +# else \ +# echo -e "\t$(ERROR_COLOR)compilation in draftmode with errors$(NO_COLOR)" ;\ +# exit 0;\ +# fi ;\ +# echo -e "\t$(OK_COLOR)Typesetting $$NAME done$(NO_COLOR)" ;\ +################################################################ +## Compilation +################################################################ +docsty: $(PACKAGE).dtx + echo -e "" ;\ + echo -e "\t$(WARN_COLOR)Typesetting $(PACKAGE).dtx$(NO_COLOR)" ;\ + pdflatex --draftmode --interaction=nonstopmode $(PACKAGE).dtx > /dev/null ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)compilation in draftmode without errors$(NO_COLOR)" ;\ + if [ -f $(PACKAGE).glo ] ; then \ + echo -e "\t$(WARN_COLOR)Typesetting $(PACKAGE).glo$(NO_COLOR)" ;\ + makeindex -q -t $(PACKAGE).glolog -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)compilation of Glossar without errors$(NO_COLOR)" ;\ + else \ + echo -e "\t$(ERROR_COLOR)compilation of Glossar with errors$(NO_COLOR)" ;\ + fi ;\ + fi ;\ + if [ -f $(PACKAGE).idx ] ; then \ + echo -e "\t$(WARN_COLOR)Typesetting $(PACKAGE).idx$(NO_COLOR)" ;\ + makeindex -q -t $(PACKAGE).idxlog -s gind.ist $(PACKAGE).idx ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)compilation of Index without errors$(NO_COLOR)" ;\ + else \ + echo -e "\t$(ERROR_COLOR)compilation of Index with errors$(NO_COLOR)" ;\ + fi ;\ + fi ;\ + pdflatex $(PACKAGE).dtx > /dev/null ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)Second pdflatex compilation without errors$(NO_COLOR)" ;\ + else \ + echo -e "\t$(ERROR_COLOR)Second pdflatex compilation with errors$(NO_COLOR)" ;\ + exit 0;\ + fi ;\ + pdflatex $(PACKAGE).dtx > /dev/null ;\ + else \ + echo -e "\t$(ERROR_COLOR)compilation in draftmode with errors$(NO_COLOR)" ;\ + exit 0;\ + fi ;\ + +exampled: $(EXAMPLED).pdf +examplet: $(EXAMPLET).pdf +examplep: $(EXAMPLEP).ps +examplesx:$(EXAMPLESX).pdf + +examples: exampled examplet examplep examplesx + +clean: + echo "" ;\ + echo -e "\t$(WARN_COLOR)Start removing help files$(NO_COLOR)" ;\ + for I in $(FILELIST) ;\ + do \ + for J in $(AUXFILES) ;\ + do \ + rm -rf $$I.$$J ;\ + done ;\ + done ;\ + echo -e "\t$(OK_COLOR)Removing finished$(NO_COLOR)" ;\ + +all: docsty examples clean + +################################################################ +## personal setting +################################################################ +localinstall: docsty examples makelocalinstall clean + +makelocalinstall: + echo "" ;\ + echo -e "\t$(ERROR_COLOR)Start local install$(NO_COLOR)" ;\ + PATHTEXHOME=`kpsewhich --var-value=TEXMFHOME` ;\ + echo -e "\t$(ERROR_COLOR)Creating folders if don't exist$(NO_COLOR)" ;\ + mkdir -p $$PATHTEXHOME/doc/latex/$(PACKAGE)/ ;\ + mkdir -p $$PATHTEXHOME/tex/latex/$(PACKAGE)/ ;\ + for I in $(FILELIST) ;\ + do \ + cp $$I.pdf $$PATHTEXHOME/doc/latex/$(PACKAGE)/ ;\ + done ;\ + for I in $(STYLELIST) ;\ + do \ + cp $$I.mdf $$PATHTEXHOME/tex/latex/$(PACKAGE)/ ;\ + done ;\ + cp $(PACKAGE).sty $$PATHTEXHOME/tex/latex/$(PACKAGE)/ ;\ + cp ltxmdf.cls $$PATHTEXHOME/tex/latex/$(PACKAGE)/ ;\ + echo -e "\t$(OK_COLOR)Installation done$(NO_COLOR)" ;\ + +################################################################ +## maintainer tool +################################################################ +changeversion: + @echo + @echo -e "$(OK_COLOR)Aktuell wird die folgende Version verwendet" + @sed '/\\def\\mdversion/!d' $(PACKAGE).sty + @echo -e "$(WARN_COLOR)" + @read -p "Bitte neue Version eingeben: " REPLY && sed -Eie "s/(\\\\def\\\\mdversion\{).*(})/\1$$REPLY\2/" $(PACKAGE).dtx&&\ + echo -e "$(OK_COLOR)Version geändert zu $$REPLY$(NO_COLOR)" + @echo + +changerevision: + @echo + @echo -e "$(OK_COLOR)Aktuell wird die folgende Revision verwendet" + @sed '/\\def\\mdfrevision/!d' $(PACKAGE).dtx + @echo -e "$(WARN_COLOR)" + @REPLY=`git rev-list HEAD | wc -l` && sed -Eie "s/(\\\\def\\\\mdfrevision\{).*(})/\1$$REPLY\2/" $(PACKAGE).dtx&&\ + echo -e "$(OK_COLOR)Revision geändert zu $$REPLY$(NO_COLOR)" + @echo + +changedate: + @echo + @echo -e "$(OK_COLOR)Aktuell wird die folgendes Datum verwendet" + @sed '/\\def\\mdfmaindate/!d' $(PACKAGE).dtx + @echo -e "$(WARN_COLOR)" + @REPLY=`date +"%Y\/%m\/%d"` && sed -Eie "s/(\\\\def\\\\mdfmaindate\{).*(})/\1$$REPLY\2/" $(PACKAGE).dtx&&\ + echo -e "$(OK_COLOR)Datum geändert zu $$REPLY$(NO_COLOR)" + @echo + +change: changeversion changerevision changedate + +usectanify: + echo "" ;\ + echo -e "\t$(ERROR_COLOR)Start ctanify$(NO_COLOR)" ;\ + ctanify $(PACKAGE).ins $(PACKAGE).pdf README.txt ltxmdf.cls \ + ctan-lion.png=doc/latex/mdframed/ \ + $(EXAMPLED).tex=doc/latex/mdframed/ \ + $(EXAMPLED).pdf=doc/latex/mdframed/ \ + $(EXAMPLET).tex=doc/latex/mdframed/ \ + $(EXAMPLET).pdf=doc/latex/mdframed/ \ + $(EXAMPLEP).tex=doc/latex/mdframed/ \ + $(EXAMPLEP).pdf=doc/latex/mdframed/ \ + $(EXAMPLESX).tex=doc/latex/mdframed/ \ + $(EXAMPLESX).pdf=doc/latex/mdframed/ \ + Makefile=source/latex/mdframed/ \ + mdframedmake.bat=source/latex/mdframed/ \ + md-frame-0.mdf=tex/latex/mdframed/ \ + md-frame-1.mdf=tex/latex/mdframed/ \ + md-frame-2.mdf=tex/latex/mdframed/ \ + md-frame-3.mdf=tex/latex/mdframed/ ;\ + if [ $$? = 0 ] ; then \ + echo -e "\t$(OK_COLOR)ctanify without errors$(NO_COLOR)" ;\ + echo -e "" ;\ + else \ + echo -e "\t$(ERROR_COLOR)ctanify with errors$(NO_COLOR)" ;\ + exit 0;\ + fi ;\ + +ctan: docsty examples usectanify clean diff --git a/macros/latex/contrib/mdframed/README b/macros/latex/contrib/mdframed/README new file mode 100644 index 0000000000..3f53c02ae5 --- /dev/null +++ b/macros/latex/contrib/mdframed/README @@ -0,0 +1,71 @@ +================================================================ +================================================================ +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 (supports tikz implementation) +License type: lppl + +================================================================ +The revision history is printed in the documentation. + +================================================================ +The current development is available at github: +https://github.com/marcodaniel/mdframed + +================================================================ +The package provides + * one dtx files, + * one Makefile (compiling for Linux/Mac), + * one mdframedmake.bat (compiling for Windows) + * one personal documentclass ltxmdf.cls + * one example picture donald-duck.jpg + +By running the script `make all` you will +produce the following files: +- README.txt +- mdframed.sty +- mdframed.pdf +- md-frame-0.mdf +- md-frame-1.mdf +- md-frame-2.mdf +- md-frame-3.mdf +- mdframed-example-default.tex +- mdframed-example-default.pdf +- mdframed-example-tikz.tex +- mdframed-example-tikz.pdf +- mdframed-example-pstricks.tex +- mdframed-example-pstricks.pdf +- mdframed-example-texsx.tex +- mdframed-example-texsx.pdf + +I recommend the following installation in your texmf-tree: + +/doc/latex/mdframed/ +- README.txt +- mdframed.pdf +- mdframed-example-default.tex +- mdframed-example-default.pdf +- mdframed-example-tikz.tex +- mdframed-example-tikz.pdf +- mdframed-example-pstricks.tex +- mdframed-example-pstricks.pdf +- mdframed-example-texsx.tex +- mdframed-example-texsx.pdf +- ctan-lion.png "CTAN lion drawing by Duane Bibby; thanks to www.ctan.org". + +/source/latex/mdframed/ +- Makefile +- mdframed.dtx + +/tex/latex/mdframed +- mdframed.sty +- md-frame-0.mdf +- md-frame-1.mdf +- md-frame-2.mdf +- md-frame-3.mdf +- ltxmdf.cls +================================================================ +================================================================ + diff --git a/macros/latex/contrib/mdframed/ctan-lion.png b/macros/latex/contrib/mdframed/ctan-lion.png Binary files differnew file mode 100644 index 0000000000..c24d9a98f2 --- /dev/null +++ b/macros/latex/contrib/mdframed/ctan-lion.png diff --git a/macros/latex/contrib/mdframed/ltxmdf.cls b/macros/latex/contrib/mdframed/ltxmdf.cls new file mode 100644 index 0000000000..cad31bf5c8 --- /dev/null +++ b/macros/latex/contrib/mdframed/ltxmdf.cls @@ -0,0 +1,538 @@ +%% documentclass only for the documentation of mdframed +%% This documentclass isn't maintanened or efficient for writing +%% +%% +%% Copyright (c) 2012 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. + + +%%$Id: ltxmdf.cls 431 2012-06-20 16:40:42Z marco $ +%%$Rev: 431 $ +%%$Author: marco $ +%%$Date: 2012-06-20 18:40:42 +0200 (Mi, 20 Jun 2012) $ + +\RequirePackage{expl3} +\GetIdInfo$Id: ltxmdf.cls 431 2012-06-20 16:40:42Z marco $ + {documentation class for Marco Daniel} + +\ProvidesExplClass{\ExplFileName} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} + +\RequirePackage{l3keys2e,xparse} +\keys_define:nn { ltxmdf } + { + tocdepth .int_set:N = \l_ltxmdf_tocdepth_int , + lipsum .bool_set:N = \l_ltxmdf_lipsum_bool , + showframe .bool_set:N = \l_ltxmdf_showframe_bool , + } +\keys_set:nn { ltxmdf } + { + tocdepth = 2 + } + +\ProcessKeysOptions { ltxmdf } + +\LoadClassWithOptions { scrartcl } +\cs_set_eq:NN \c_keys_code_root_tl \c__keys_code_root_tl + +\RequirePackage{ifxetex,ifluatex} + +\RequirePackage{etoolbox} +\RequirePackage[left=2.5cm,right=2.5cm,top=3cm,bottom=3cm]{geometry} + +\pdftex_if_engine:TF + { + \RequirePackage{selinput} + \SelectInputMappings{ + adieresis = {ä} , + germandbls = {ß} , + Euro = {€} , + } + \RequirePackage[T1]{fontenc} + \RequirePackage[scaled=0.82]{beramono} + \RequirePackage{microtype} + } + { + \RequirePackage{fontspec} + \setmonofont[Mapping=tex-text]{DejaVu Sans} + } +\ExplSyntaxOff +\RequirePackage[french=quotes]{csquotes} +\RequirePackage{xspace} +\begingroup + \text@command\relax + \global\let\xspace@check@icr\check@icr +\endgroup +\xspaceaddexceptions{\xspace@check@icr} +\RequirePackage{multicol}\columnseprule0.4pt +\RequirePackage{scrpage2} +\RequirePackage[inline]{enumitem} +\RequirePackage{amsmath} +\RequirePackage{listings} +\RequirePackage[amsmath]{ntheorem} +\RequirePackage{array,booktabs} +\RequirePackage{xcolor,tikz} +\RequirePackage{graphicx} +\RequirePackage[numbered]{hypdoc} +\ExplSyntaxOn +%set columns of index +\c@IndexColumns = 2 + +\hypersetup{% + breaklinks=true, + pdftitle={Documenation of mdframed},% + pdfauthor={Marco Daniel},% + colorlinks=true,% + linkcolor=ltxmdfblue, + urlcolor=cyan, + bookmarksdepth= \int_use:N \l_ltxmdf_tocdepth_int, +} +\bool_if:NT \l_ltxmdf_showframe_bool + { + \RequirePackage{showframe} + } +\bool_if:NT \l_ltxmdf_lipsum_bool + { + \RequirePackage{lipsum} + \RequirePackage{kantlipsum} + } + +%Kopf- und Fusszeilen +\clearscrheadfoot +\pagestyle{scrheadings} +\automark[subsection]{section} +\renewcommand{\sectionmark}[1]{\markboth{\sectionmarkformat #1}{}}% +\renewcommand{\subsectionmark}[1]{\markright{\subsectionmarkformat #1}} +\ihead{\rightmark} +\ohead{\leftmark} +\ofoot{\pagemark} +\providecommand\mdfmaindate{2012/09/20} +\providecommand\mdfrevision{1} +\ifoot{{\mdfmaindate}\qquad revision:~{\mdfrevision}\qquad{\jobname}} + +%%Maketitle angepasst: +\prop_new:N \l_ltxmdf_maketitleinformation_prop +\cs_set:Npn \title #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { title } { #1 } + } +\cs_set:Npn \subtitle #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { subtitle } { #1 } + } +\cs_set:Npn \author #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { author } { #1 } + } +\cs_set:Npn \version #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { version } { #1 } + } +\cs_set:Npn \date #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { date } { #1 } + } +\cs_set:Npn \introduction #1 + { + \prop_put:Nnn \l_ltxmdf_maketitleinformation_prop { introduction } { #1 } + } + +\def\maketitle{% + \clearpage + \thispagestyle{empty} + \group_begin: + \group_begin: + \pdfbookmark[1]{Title}{titlebook} + \parindent\c_zero_dim + \centering + \color{ltxmdfblue}\Large\bfseries\sffamily + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { title } + \par + \skip_vertical:n {.5\baselineskip} + \normalfont\large\normalcolor + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { subtitle } + \par\kern.5\baselineskip\null\quad + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { author } + \hfill + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { version } + \hfill + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { date } + \hfill\quad\null + \group_end: + \par + \skip_vertical:n {.5\baselineskip} + \begin{abstract} + \prop_get:Nn \l_ltxmdf_maketitleinformation_prop { introduction } + \end{abstract} + \par + \skip_vertical:n {.2\baselineskip} + \pdfbookmark[1]{\contentsname}{tocbook} + \tableofcontents + \group_end: +} + +%table of contens anpassen: +\renewcommand\tableofcontents{% + \int_set_eq:NN \c@tocdepth \l_ltxmdf_tocdepth_int +%\int_use:N \l_ltxmdf_tocdepth_int +%\setcounter{tocdepth}{\l_ltxmdf_tocdepth_int}% + \begin{multicols}{2}[\centering\textbf{\sffamily\Large\contentsname}] + \@starttoc{toc} + \end{multicols} +} + + +%Modifkation of code +\tl_gput_left:Nn \theCodelineNo { \color{gray} } +\dim_set:Nn \MacroTopsep { 10pt } +\tl_gput_right:Nn \MacroFont { \color{ltxmdfblue} } +\NewDocumentCommand \MacroFontExpl {} + { + \MacroFont\color{ltxmdfblue}\bfseries + } + +%Anweisung zur Darstellung + +\NewDocumentCommand \Opt { m } + { + {\MacroFont #1}\xspace + } + +\NewDocumentCommand \Env { m } + { + {\MacroFont #1}\xspace + } + +\NewDocumentCommand \Cmd { m } + { + {\MacroFont\textbackslash #1}\xspace + } + +\NewDocumentCommand \Pack { m } + { + \texttt { #1 } \xspace + } + +\NewDocumentCommand \NOTE {} + { + \minisec{Note} + } + +\NewDocumentCommand \limitation { O{TikZ} } + { + \newline{\small~This~works~only~with~\Opt{framemethod=#1}.} + } + +\NewDocumentCommand \ExplOpt { o m } + { + \par + \skip_vertical:n { .2\baselineskip } + \noindent + \hbox_to_wd:nn { \c_zero_dim } + { + \skip_horizontal:n { -2em } + \@bsphack + \MacroFontExpl #2 + \SpecialOptIndex{#2} + \@esphack + } + \hfill\null + \IfNoValueF { #1 } + { + \hbox:n { \small default=\ttfamily #1 } + } + \par + \skip_vertical:n { .5ex } + \noindent\ignorespaces + } + +\NewDocumentCommand \ExplEnv { o m } + { + \par + \skip_vertical:n { .2\baselineskip } + \noindent + \hbox_to_wd:nn { \c_zero_dim } + { + \skip_horizontal:n { -2em } + \@bsphack + \MacroFontExpl #2 + \SpecialEnvIndex{#2} + \@esphack + } + \hfill\null + \IfNoValueF { #1 } + { + \hbox:n { \small default=\ttfamily #1 } + } + \par + \skip_vertical:n { .5ex } + \noindent\ignorespaces + } + +\NewDocumentCommand \ExplCmd { o m } + { + \par + \skip_vertical:n { .2\baselineskip } + \noindent + \hbox_to_wd:nn { \c_zero_dim } + { + \skip_horizontal:n { -2em } + \@bsphack + \MacroFontExpl\textbackslash #2 + \SpecialUsageIndex{#2} + \@esphack + } + \hfill\null + \IfNoValueF { #1 } + { + \hbox:n { \small default=\ttfamily #1 } + } + \par + \skip_vertical:n { .5ex } + \noindent\ignorespaces + } + + +\IndexPrologue{ + \section*{Index}% + \markboth{Index}{Index} + The~index~only~collect~package~relevant~words. +} + + +\ExplSyntaxOff +%Tikz und Farbe +%tikzlibrary needs special handling + + + +\usetikzlibrary{calc,backgrounds,arrows,matrix} + +\colorlet{ltxmdfblue}{blue!30!black} + + +\lst@RequireAspects{writefile} + +\lstset{keywordstyle=\bfseries} +\lstdefinestyle{lstltxmdf}{% + basicstyle=\small\ttfamily, + language={[LaTeX]TeX}, + basicstyle=\small,% + xleftmargin=20pt,% + xrightmargin=20pt,% + frame=none,% + rulecolor=\color{ltxmdfblue},% + framesep=5pt,% + framerule=1.2pt,% + texcsstyle=*\color{red!50!black}\bfseries, + moretexcs=intertext, + keywordstyle=\color{blue!60!black}\bfseries,% + columns=fullflexible,% + fontadjust=true,% + basewidth=0.65em,% + breakatwhitespace=true, + morekeywords=[2]{@length}, + keywordstyle=[2]\color{red!50!black}\bfseries, + morekeywords={outerlinewidth,leftmargin,rightmargin,backgroundcolor, + outerlinecolor,innertopmargin,splittopskip,skipbelow, + skipabove,ntheorem,theorem,lemma,mdframed,linecolor, + frametitle,infobox,innerlinewidth,roundcorner,leftline, + topline,splitbottomskip,middlelinewidth,middlelinecolor, + tikzsetting,rightline,bottomline,innerrightmargin,style, + linewidth,lem,section,definedstyle,mdfapptodefinestyle, + needspace,mdf@globalstyle@cnt,framemethod,ExampleText, + titregris,draw,gray,thick,fill,white,shading,exersicetitle, + exersicebackground,color,green,black,exercise,exercisepoints, + text,rectangle,rounded,corners,right,minimum,height,xshift, + at,exercisestyle,settings,frametitlefont,innerbottommargin, + innerleftmargin,frametitlerule,frametitlebelowskip, + frametitleaboveskip,frametitlebackgroundcolor, + frametitlerulecolor,picins,figure,hidealllines,fontcolor, + firstextra,secondextra,middleextra,singleextra,overlay,node, + pstricksappsetting,apptotikzsetting,frametitlerulewidth, + userdefinedwidth,mdfbackground,append,mdfframetitlebackground, + left,shade,align,exampledefault}, + moretexcs={newmdtheoremenv,newmdenv,theoremstyle,mdfsetup,@length, + md@putbox@single,@tempboxa,mdf@,mdf@linewidth, + mdf@leftmargin@length,interruptlength,setlength,newrobustcmd, + overlaplines,appto,md@frame@leftline@singe,color, + md@frame@leftline@single,mdf@innerbottommargin@length, + mdf@middlelinewidth@length,mdfboundingboxheight, + md@frame@rightline@single,mdfboundingboxwidth, + mdf@innerrightmargin@length,mdfdefinestyle, + mdfapptodefinestyle,defcounter,tikzstyle, + pgfdeclarehorizontalshading,theexercise,mdf@@exercisepoints, + define@key,renewrobustcmd,mdfcreateextratikz,node,ifdefempty, + mdf@frametitlefont,dimexpr,mdframedtitleenv,ifstrempty, + @undefined,mdtheorem,surroundwithmdframed,@captype,@dblarg, + @newcaption,newcaption,mdflength,tikzset,path,p1,p2, + IfFileExists,includegraphics,mdfsubtitle,lipsum,kant,% + Examplesec,% + },% +} + + +\lstnewenvironment{tltxmdfexample}[1][] + {\lstset{style=lstltxmdf,#1}}% + {} + +\def\mdf@sampleInput#1{% + \MakePercentComment\catcode`\^^M=10\relax% + {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% + {\lst@ProcessTabulator}}% + \leavevmode \input{#1}}\MakePercentIgnore} +\def\highlightinputenv{flushleft} +\lstnewenvironment{tltxmdfexample*}[1][]% + {% + \begingroup% + \lstset{style=lstltxmdf,#1}% + \setbox\@tempboxa\hbox\bgroup + \lst@BeginWriteFile{\jobname.tmp}% + }% + { + \lst@EndWriteFile\egroup% + \begin{\highlightinputenv} + \lstinputlisting{\jobname.tmp}% + \end{\highlightinputenv} + \mdf@sampleInput{\jobname.tmp}% + \endgroup% + } + + +\lstnewenvironment{exltxmdfexample}[1][] + {\lstset{style=lstltxmdf,#1}}% + {} + + +\lstMakeShortInline[basicstyle=\small\ttfamily\color{blue!60!black}]{|} +\def\macro#1{% + \MakePrivateLetters + \topsep\MacroTopsep \trivlist + \edef\saved@macroname{#1}% + \def\makelabel##1{\makebox[0pt][l]{\kern-2em ##1}}% + \if@inlabel + \let\@tempa\@empty \count@\macro@cnt + \loop \ifnum\count@>\z@ + \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat + \edef\makelabel##1{\llap{\vtop to\baselineskip + {\@tempa\hbox{##1}\vss}}}% + \advance \macro@cnt \@ne + \else \macro@cnt\@ne \fi + \toks@={\@gobble}% + \@for\next:=#1\do + {\toks@=\expandafter{\the\expandafter\toks@% + \expandafter\\% + \expandafter\PrintMacroName\expandafter{\next}}}% + \item[\fbox{\begin{tabular}{@{\textbackslash}>{}l} + \the\toks@ + \end{tabular}}]% + \leavevmode\par\kern\MacroTopsep\noindent\ignorespaces + \global\advance\c@CodelineNo\@ne + \@for\next:=#1\do + {% + \expandafter\SpecialMainIndex\expandafter{\next}\nobreak + \expandafter\DoNotIndex\expandafter{\next}}% + \global\advance\c@CodelineNo\m@ne + \ignorespaces} + + +\def\SpecialOptIndex#1{\@bsphack + \index{#1\actualchar{\protect\ttfamily#1} + (option)\encapchar usage}% + \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar + usage}\@esphack} + + + +%%NOT IN INDEX +%@ +\DoNotIndex{\@captype,\@endparenv,\@endparpenalty,\@endpetrue,\@floatpenalty, + \@footnotetext,\@ifnextchar,\@undefined,\@tempboxa,\@M,\@empty, + \@height,\@mpfn,\@mpfootins,\@mpfootnotetext,\@nil,\@plus,\@width, + \@afterheading,\@afterindentfalse,\@firstoftwo,\@gobble, + \@ifpackageloaded,\@nobreaktrue,\@nobreakfalse,\@secondoftwo, + \@tempa,\@tempdima} +%A +\DoNotIndex{\addpenalty,\addvspace,\advance,\afterassignment, + \AfterEndEnvironment,\appto} +%B +\DoNotIndex{\baselineskip,\begin,\boolfalse,\begingroup,\box, + \BeforeBeginEnvironment,\bfseries,\bgroup,\boxmaxdepth} +%C +\DoNotIndex{\color@endgroup,\color@setgroup,\columnwidth,\csdef,\c@mpfootnote, + \csname,\clip,\color,\color@begingroup,\coordinate,\csappta,\csuse, + \csxdef,\Currentoption} +%D +\DoNotIndex{\dimexpr,\DeclareBoolOption,\DeclareListParser,\def,\define@key, + \dimen@,\dimen@i,\dp,\deflength,\DeclareDefaultOption,\defcounter, + \DisableKeyvaloption} +%E +\DoNotIndex{\eject,\end,\endtrivlist,\edef,\endcsname,\endinput + \expandafter,\endgroup,\egroup,\enlargethispage} +%F +\DoNotIndex{\fwd@reserved@a,\fwd@reserveda,\fill,\forcsvlist} +%G +\DoNotIndex{\gdef} +%H +\DoNotIndex{\hbox,\height,\hrule,\hsize,\hspace,\ht,\hb@xt@,\hss} +%I +\DoNotIndex{\if@minipage,\if@twocolumn,\if@twoside,\ifbool,\ifdim,\ifdimequal, + \ifdimgreater,\ifdimless,\iffwd@footnoteinside,\ifinner,\ifnum, + \ifodd,\ifblank,\ifboolexpr,\ifcase,\ifcsundef,\IfFileExists, + \ifnumequal,\ifstrequal,\iftoggle,\ifundef,\input, + \kernel@ifnextchar,\ifvoid,\ifx,\item} +%J +\DoNotIndex{} +%K +\DoNotIndex{\kern} +%L +\DoNotIndex{\leftline,\let,\linewidth,\lrbox,\large,\letcs,\listadd,\llap, + \lowercase} +%M +\DoNotIndex{\maxdimen,\medskipamount,\MessageBreak,\makebox} +%N +\DoNotIndex{\NeedsTeXFormat,\newcounter,\newlength,\newrobustcmd,\nobreak, + \normalcolor,\number,\newbool,\newcommand,\newenvironment, + \newtheorem,\newtoggle,\node,\noindent,\notblank,\notbool,\null, + \newpsstyle,\next} +%O +\DoNotIndex{\or} +%P +\DoNotIndex{\p@,\PackageInfo,\PackageWarning,\pagegoal,\pagetotal,\partopsep, + \patchcmd,\penalty,\ProcessKeyvalOptions,\ProvidesPackage, + \providecommand,\path,\protected@edef,\ProvidesFile,\psframe, + \psline,\psset,\pst@number,\psxunit,\par,\parfillskip,\parindent, + \PassOptionsToPackage,\pgfmathsetlengthmacro} +%Q +\DoNotIndex{} +%R +\DoNotIndex{\relax,\RequirePackage,\raggedright,\renewcommand,\rlap,\rput,\rule} +%S +\DoNotIndex{\setbox,\setkeys,\setlength,\SetupKeyvalOptions,\splitmaxdepth, + \splittopskip,\stepcounter,\strutbox,\setbool,\settoggle,\space, + \string} +%T +\DoNotIndex{\textwidth,\the,\thempfn,\thempfootnote,\topsep,\trivlist,\tw@, + \tikzset} +%U +\DoNotIndex{\unskip,\unvbox} +%V +\DoNotIndex{\value,\vbox,\vfill,\vsize,\vskip,\vsplit,\vspace,\version} +%W +\DoNotIndex{\width,\wd} +%X +\DoNotIndex{\xifinlist,\xdef,\x} +%Y +\DoNotIndex{\y} +%Z +\DoNotIndex{\z@,\z@skip,\zref@addprop,\zref@extract,\zref@label,\zref@newprop, + \zref@refused,\ZREF@mainlist} + +%%%% + +\endinput +%\tex_endinput:D + diff --git a/macros/latex/contrib/mdframed/mdframed-example-default.pdf b/macros/latex/contrib/mdframed/mdframed-example-default.pdf Binary files differnew file mode 100644 index 0000000000..c979090324 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-default.pdf diff --git a/macros/latex/contrib/mdframed/mdframed-example-default.tex b/macros/latex/contrib/mdframed/mdframed-example-default.tex new file mode 100644 index 0000000000..2a2d4156f1 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-default.tex @@ -0,0 +1,231 @@ + +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + +\lstset{style=lstltxmdf} + +\newcommand\Loadedframemethod{default} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} with the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage +\Examplesec{very simple} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,linewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,bottomline=false} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{colored frame title} +\begin{tltxmdfexample*} + +\global\mdfapptodefinestyle{exampledefault}{% + rightline=true,innerleftmargin=10,innerrightmargin=10, + frametitlerule=true,frametitlerulecolor=green, + frametitlebackgroundcolor=yellow, + frametitlerulewidth=2pt} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{framed picture which is centered} +\begin{tltxmdfexample*}[morekeywords=width] +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,linewidth=4pt] +\textit{CTAN lion drawing by Duane Bibby; thanks to \url{www.ctan.org}} +\IfFileExists{ctan-lion.png}% + {\includegraphics[width=\linewidth]{ctan-lion.png}}% + {\rule{\linewidth}{4cm}}% +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Theorem environments} +\begin{tltxmdfexample*}[morekeywords={theoremstyle,definition}] +\mdfdefinestyle{theoremstyle}{% + linecolor=red,linewidth=2pt,% + frametitlerule=true,% + frametitlebackgroundcolor=gray!20, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition} +\ExampleText +\end{definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{tltxmdfexample*} + +\Examplesec{theorem with separate header and the help of TikZ (complex)} +\begin{tltxmdfexample*}[% + morekeywords={theo,baseline,anchor,outer,sep,current,bounding,box,east},% + moretexcs=tikz] +\newcounter{theo}[section] +\newenvironment{theo}[1][]{% + \stepcounter{theo}% + \ifstrempty{#1}% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo};}} + }% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo:~#1};}}% + }% + \mdfsetup{innertopmargin=10pt,linecolor=blue!20,% + linewidth=2pt,topline=true, + frametitleaboveskip=\dimexpr-\ht\strutbox\relax,} + \begin{mdframed}[]\relax% + }{\end{mdframed}} +\begin{theo}[Inhomogeneous Linear] +\ExampleText +\end{theo} + +\begin{theo} +\ExampleText +\end{theo} +\end{tltxmdfexample*} + +\Examplesec{hide only a part of a line} +The example below is inspired by the following post on StackExchange +\href{http://tex.stackexchange.com/questions/24101/theorem-decorations^^A + -that-stay-with-theorem-environment}% + {Theorem decorations that stay with theorem environment} +\begin{tltxmdfexample*}[morekeywords={mdf@frame@leftline@single,mdf@frame@rightline@single,% + mdf@frame@leftline@first,mdf@frame@rightline@first,% + mdf@frame@leftline@second,mdf@frame@rightline@second,% + mdf@frame@leftline@middle,mdf@frame@rightline@middle,% + mdfboundingboxdepth,mdfboundingboxtotalheight,% + mdf@topline,ifbool,interruptrule,everyline}] +\makeatletter +\newlength{\interruptlength} +\newrobustcmd\interruptrule[3]{% + \color{#1}% + \hspace*{\dimexpr\mdfboundingboxwidth+ + \mdf@innerrightmargin@length\relax}% + \rule[\dimexpr-\mdfboundingboxdepth+ + #2\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight-#3\interruptlength\relax}% +} +\newrobustcmd\overlaplines[2][white]{% + \mdfsetup{everyline=false}% + \setlength{\interruptlength}{#2} + \appto\mdf@frame@leftline@single{\llap{\interruptrule{#1}{1}{2}}} + \appto\mdf@frame@rightline@single{\rlap{\interruptrule{#1}{1}{2}}} + \appto\mdf@frame@leftline@first{\llap{\interruptrule{#1}{0}{1}}} + \appto\mdf@frame@rightline@first{\rlap{\interruptrule{#1}{0}{1}}} + \appto\mdf@frame@leftline@second{\llap{\interruptrule{#1}{1}{1}}} + \appto\mdf@frame@rightline@second{\rlap{\interruptrule{#1}{1}{1}}} + \appto\mdf@frame@leftline@middle{\llap{\interruptrule{#1}{0}{0}}} + \appto\mdf@frame@rightline@middle{\rlap{\interruptrule{#1}{0}{0}}} +} +\makeatother + +\overlaplines{2.5ex} +\begin{mdframed}[linecolor=blue,linewidth=8pt] +\ExampleText +\end{mdframed} +\overlaplines[blue!70!black!20]{2.5ex} +\begin{mdframed}[linecolor=blue,linewidth=8pt] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} +\end{document} + \endinput diff --git a/macros/latex/contrib/mdframed/mdframed-example-pstricks.pdf b/macros/latex/contrib/mdframed/mdframed-example-pstricks.pdf Binary files differnew file mode 100644 index 0000000000..4c1ba1ac2d --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-pstricks.pdf diff --git a/macros/latex/contrib/mdframed/mdframed-example-pstricks.tex b/macros/latex/contrib/mdframed/mdframed-example-pstricks.tex new file mode 100644 index 0000000000..e347be7342 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-pstricks.tex @@ -0,0 +1,146 @@ + +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + +\lstDeleteShortInline{|} +\newcommand\Loadedframemethod{PSTricks} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage + +\Examplesec{very simple} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,middlelinewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault,roundcorner=5] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*}[morekeywords={innerlinecolor,addtopsstyle,mdfouterlinestyle, + linestyle}] +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,rightline=false,bottomline=false, + frametitlerule=true,innertopmargin=6pt, + outerlinewidth=6pt,outerlinecolor=blue, + pstricksappsetting={\addtopsstyle{mdfouterlinestyle}{linestyle=dashed}}, + innerlinecolor=yellow,innerlinewidth=5pt}% +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Dash Lines}[morekeywords={pstrickssetting,linestyle,dashed}] +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + pstrickssetting={linestyle=dashed,},linecolor=red,middlelinewidth=2pt} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Double Lines} +\begin{tltxmdfexample*}[morekeywords={addtopsstyle,mdfmiddlelinestyle, + doubleline,doublesep}] +\global\mdfdefinestyle{exampledefault}{% + pstricksappsetting={\addtopsstyle{mdfmiddlelinestyle}{% + doubleline=true,doublesep=6pt,linewidth=4pt}},% + linecolor=red,middlelinewidth=16pt} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Shadow frame} +\begin{tltxmdfexample*}[morekeywords={shadow,shadowsize,myshadowbox}] +\newmdenv[shadow=true, + shadowsize=11pt, + linewidth=8pt, + frametitlerule=true, + roundcorner=10pt, + ]{myshadowbox} +\begin{myshadowbox}[frametitle={Inhomogeneous linear}] +\ExampleText +\end{myshadowbox} +\end{tltxmdfexample*} +\end{document} + \endinput diff --git a/macros/latex/contrib/mdframed/mdframed-example-texsx.pdf b/macros/latex/contrib/mdframed/mdframed-example-texsx.pdf Binary files differnew file mode 100644 index 0000000000..3bf9c0ed49 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-texsx.pdf diff --git a/macros/latex/contrib/mdframed/mdframed-example-texsx.tex b/macros/latex/contrib/mdframed/mdframed-example-texsx.tex new file mode 100644 index 0000000000..6f34f23d9a --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-texsx.tex @@ -0,0 +1,270 @@ + + +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt,lipsum=true]{ltxmdf} + +\usepackage{tikz} +\usetikzlibrary{calc,arrows,shadings,shadows} +\newcommand\Loadedframemethod{tikz} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} +\clearpage +\Examplesec{Package listings} +The example below is inspired by the following post on StackExchange +\href{http://tex.stackexchange.com/questions/27673/background-overflows-^^A + when-using-rounded-corners-for-listings-package-listings}% + {Background overflows when using rounded corners for listings + (package: `listings`)} + +Here the solution which can be decorate as usual. + +\begin{tltxmdfexample}[moretexcs={BeforeBeginEnvironment,AfterEndEnvironment}, + morekeywords={lstlisting}] +\BeforeBeginEnvironment{lstlisting}{% + \begin{mdframed}[<modification>]% + \vspace{-0.7em}} +\AfterEndEnvironment{lstlisting}{% + \vspace{-0.5em}% + \end{mdframed}} +\end{tltxmdfexample} + +With the new command \Cmd{surroundwithmdframed} you can use +\begin{tltxmdfexample}[moretexcs={BeforeBeginEnvironment,AfterEndEnvironment}, + morekeywords={listings}] +\surroundwithmdframed{listings} +\end{tltxmdfexample} + +\clearpage +\Examplesec{Package multicol} +How I wrote in \enquote{Known Problems} you can't combine \Pack{multicol} with +\Pack{mdframed}. In a simple way without any breaks you can use: + +\begin{tltxmdfexample*}[morekeywords={multicols}] + \begin{multicols}{2} + \lipsum[1] + \begin{mdframed} + \ExampleText + \end{mdframed} + \lipsum[2] + \end{multicols} +\end{tltxmdfexample*} + +\clearpage +\twocolumn[\Examplesec{Working in twocolumn mode}] +\begin{tltxmdfexample*}[moretexcs={Examplesec}] +\lipsum[1]\lipsum[2] +\begin{mdframed}[% + leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\end{tltxmdfexample*} + +\clearpage +\onecolumn +\Examplesec{Working inside enumerate} +\begin{tltxmdfexample*}[morekeywords={enumerate}] +Text Text Text Text Text Text Text Text +\begin{enumerate} +\item in the following \ldots + \begin{mdframed}[linecolor=blue,middlelinewidth=2] + \ExampleText + \end{mdframed} +\item \lipsum[2] +\end{enumerate} +Text Text Text Text Text Text +\end{tltxmdfexample*} + +\Examplesec{Position a specific symbol at a line} +\begin{tltxmdfexample*} +\tikzset{ + warningsymbol/.style={ + rectangle,draw=red, + fill=white,scale=1, + overlay}} +\mdfdefinestyle{warning}{% + hidealllines=true,leftline=true, + skipabove=12,skipbelow=12pt, + innertopmargin=0.4em,% + innerbottommargin=0.4em,% + innerrightmargin=0.7em,% + rightmargin=0.7em,% + innerleftmargin=1.7em,% + leftmargin=0.7em,% + middlelinewidth=.2em,% + linecolor=red,% + fontcolor=red,% + firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% +} +\begin{mdframed}[style=warning] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{digression-environement inspired by Tobias Weh} +\begin{tltxmdfexample*}[morekeywords={% + font,anchor,let,in,arrow,round,cap,controls,coordinate,% + excursus,head,arrows,calc,line,width,and,to,digressionarrows,% + base,west},% + moretexcs={usetikzlibrary}] +\usetikzlibrary{calc,arrows} +\tikzset{ + excursus arrow/.style={% + line width=2pt, + draw=gray!40, + rounded corners=2ex, + }, + excursus head/.style={ + fill=white, + font=\bfseries\sffamily, + text=gray!80, + anchor=base west, + }, +} +\mdfdefinestyle{digressionarrows}{% + singleextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path let \p1=(Q), \p2=(O) in (\x1,{(\y1-\y2)/2}) coordinate (M); + \path [excursus arrow, round cap-to] + ($(O)+(5em,0ex)$) -| (M) |- % + ($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. % + ++(23em,2ex); + \node [excursus head] at ($(Q)+(2.5em,-0.75pt)$) {Digression};}, + firstextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow,-to] + (O) |- % + ($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. % + ++(23em,2ex); + \node [excursus head] at ($(Q)+(2.5em,-2pt)$) {Digression};}, + secondextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow,round cap-] + ($(O)+(5em,0ex)$) -| (Q);}, + middleextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow] + (O) -- (Q);}, + middlelinewidth=2.5em,middlelinecolor=white, + hidealllines=true,topline=true, + innertopmargin=0.5ex, + innerbottommargin=2.5ex, + innerrightmargin=2pt, + innerleftmargin=2ex, + skipabove=0.87\baselineskip, + skipbelow=0.62\baselineskip, +} + +\begin{mdframed}[style=digressionarrows] + \ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Theorem style shading background} +\begin{tltxmdfexample*}[morekeywords={top,bottom,Theorem,shadow,alternativtheorem}] +\mdtheorem[% + apptotikzsetting={% + \tikzset{mdfbackground/.append style ={% + top color=yellow!40!white, + bottom color=yellow!80!black}, + mdfframetitlebackground/.append style={ + top color=purple!40!white, + bottom color=purple!80!black + } + }% + }, + ,roundcorner=10pt,middlelinewidth=2pt, + shadow=true,frametitlerule=true,frametitlerulewidth=4pt, + innertopmargin=10pt,% + ]{alternativtheorem}{Theorem} +\begin{alternativtheorem}[Inhomogeneous linear] +\ExampleText +\end{alternativtheorem} +\end{tltxmdfexample*} +\end{document} + \endinput diff --git a/macros/latex/contrib/mdframed/mdframed-example-tikz.pdf b/macros/latex/contrib/mdframed/mdframed-example-tikz.pdf Binary files differnew file mode 100644 index 0000000000..e48aac7e7c --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-tikz.pdf diff --git a/macros/latex/contrib/mdframed/mdframed-example-tikz.tex b/macros/latex/contrib/mdframed/mdframed-example-tikz.tex new file mode 100644 index 0000000000..64462bf143 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed-example-tikz.tex @@ -0,0 +1,212 @@ + +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + +\newcommand\Loadedframemethod{TikZ} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage +\Examplesec{round corner} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + outerlinewidth=5pt,innerlinewidth=0pt, + outerlinecolor=red,roundcorner=5pt +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,leftline=false,} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{framed picture which is centered} +\begin{tltxmdfexample*} +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,middlelinewidth=4pt,roundcorner=5pt] +\textit{CTAN lion drawing by Duane Bibby; thanks to \url{www.ctan.org}} +\IfFileExists{ctan-lion.png}% + {\includegraphics[width=\linewidth]{ctan-lion.png}}% + {\rule{\linewidth}{4cm}}% +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Gimmick} +\begin{tltxmdfexample*}[morekeywords={line,width,dash,dashed,pattern}] +\mdfsetup{splitbottomskip=0.8cm,splittopskip=0cm, + innerrightmargin=2cm,innertopmargin=1cm,% + innerlinewidth=2pt,outerlinewidth=2pt, + middlelinewidth=10pt,backgroundcolor=red, + linecolor=blue,middlelinecolor=gray, + tikzsetting={draw=yellow,line width=3pt,% + dashed,% + dash pattern= on 10pt off 3pt}, + rightline=false,bottomline=false} +\begin{mdframed} +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\clearpage +\Examplesec{complex example with TikZ} + +\begin{tltxmdfexample*}[morekeywords={mdf}] +\tikzset{titregris/.style = + {draw=gray, thick, fill=white, shading = exersicetitle, % + text=gray, rectangle, rounded corners, right,minimum height=.7cm}} +\pgfdeclarehorizontalshading{exersicebackground}{100bp} + {color(0bp)=(green!40); color(100bp)=(black!5)} +\pgfdeclarehorizontalshading{exersicetitle}{100bp} + {color(0bp)=(red!40);color(100bp)=(black!5)} +\newcounter{exercise} +\renewcommand*\theexercise{Exercise~n\arabic{exercise}} +\makeatletter +\def\mdf@@exercisepoints{}%new mdframed key: +\define@key{mdf}{exercisepoints}{% + \def\mdf@@exercisepoints{#1} +} +\mdfdefinestyle{exercisestyle}{% + outerlinewidth=1em,outerlinecolor=white,% + leftmargin=-1em,rightmargin=-1em,% + middlelinewidth=1.2pt,roundcorner=5pt,linecolor=gray, + apptotikzsetting={\tikzset{mdfbackground/.append style ={% + shading = exersicebackground}}}, + innertopmargin=1.2\baselineskip, + skipabove={\dimexpr0.5\baselineskip+\topskip\relax}, + skipbelow={-1em}, + needspace=3\baselineskip, + frametitlefont=\sffamily\bfseries, + settings={\global\stepcounter{exercise}}, + singleextra={% + \node[titregris,xshift=1cm] at (P-|O) % + {~\mdf@frametitlefont{\theexercise}\hbox{~}}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}\hbox{~}};}% + }, + firstextra={% + \node[titregris,xshift=1cm] at (P-|O) % + {~\mdf@frametitlefont{\theexercise}\hbox{~}}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}\hbox{~}};}% + }, +} +\makeatother + +\begin{mdframed}[style=exercisestyle] +\ExampleText +\end{mdframed} + +\begin{mdframed}[style=exercisestyle,exercisepoints=10] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\clearpage +\Examplesec{Theorem environments} +\begin{tltxmdfexample*}[morekeywords={theoremstyle,definition}] +\mdfdefinestyle{theoremstyle}{% + linecolor=red,middlelinewidth=2pt,% + frametitlerule=true,% + apptotikzsetting={\tikzset{mdfframetitlebackground/.append style={% + shade,left color=white, right color=blue!20}}}, + frametitlerulecolor=green!60, + frametitlerulewidth=1pt, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{tltxmdfexample*} +\end{document} + \endinput + diff --git a/macros/latex/contrib/mdframed/mdframed.dtx b/macros/latex/contrib/mdframed/mdframed.dtx new file mode 100644 index 0000000000..f053b814d5 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed.dtx @@ -0,0 +1,7895 @@ +% \iffalse meta-comment +% !TEX program = pdfLaTeX +%<*internal> +\iffalse +%</internal> +%<*readme> +================================================================ +================================================================ +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 (supports tikz implementation) +License type: lppl + +================================================================ +The revision history is printed in the documentation. + +================================================================ +The current development is available at github: +https://github.com/marcodaniel/mdframed + +================================================================ +The package provides + * one dtx files, + * one Makefile (compiling for Linux/Mac), + * one mdframedmake.bat (compiling for Windows) + * one personal documentclass ltxmdf.cls + * one example picture donald-duck.jpg + +By running the script `make all` you will +produce the following files: +- README.txt +- mdframed.sty +- mdframed.pdf +- md-frame-0.mdf +- md-frame-1.mdf +- md-frame-2.mdf +- md-frame-3.mdf +- mdframed-example-default.tex +- mdframed-example-default.pdf +- mdframed-example-tikz.tex +- mdframed-example-tikz.pdf +- mdframed-example-pstricks.tex +- mdframed-example-pstricks.pdf +- mdframed-example-texsx.tex +- mdframed-example-texsx.pdf + +I recommend the following installation in your texmf-tree: + +/doc/latex/mdframed/ +- README.txt +- mdframed.pdf +- mdframed-example-default.tex +- mdframed-example-default.pdf +- mdframed-example-tikz.tex +- mdframed-example-tikz.pdf +- mdframed-example-pstricks.tex +- mdframed-example-pstricks.pdf +- mdframed-example-texsx.tex +- mdframed-example-texsx.pdf +- ctan-lion.png "CTAN lion drawing by Duane Bibby; thanks to www.ctan.org". + + +/source/latex/mdframed/ +- Makefile +- mdframed.dtx + +/tex/latex/mdframed +- mdframed.sty +- md-frame-0.mdf +- md-frame-1.mdf +- md-frame-2.mdf +- md-frame-3.mdf +- ltxmdf.cls +================================================================ +================================================================ +%</readme> +%<*internal> +\fi +\def\nameofplainTeX{plain} +\ifx\fmtname\nameofplainTeX\else + \expandafter\begingroup +\fi +%</internal> +%<*install> +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +---------------------------------------------------------------- +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___| + +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +================================================== + +\endpreamble +\postamble + +================================================================ +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! + +================================================================ +\endpostamble +\usedir{tex/latex/mdframed} +\generate{\file{mdframed.sty}{\from{mdframed.dtx}{package}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-0.mdf}{\from{mdframed.dtx}{mdframedefault}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-1.mdf}{\from{mdframed.dtx}{mdframetikz}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-2.mdf}{\from{mdframed.dtx}{mdframepstricks}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-3.mdf}{\from{mdframed.dtx}{mdframepstricks}}} +\Msg{*********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the} +\Msg{* following file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space documentation.sty} +\Msg{*} +\Msg{* To produce the documentation run the file mdframed.dtx} +\Msg{* once through LaTeX. Then, run} +\Msg{*} +\Msg{* \space\space makeindex -s gglo.ist -o mdframed.gls mdframed.glo} +\Msg{* \space\space makeindex -s gind.ist mdframed.idx} +\Msg{*} +\Msg{* through makeIndex to produce the glossary.} +\Msg{* Finally, run PdfLaTeX once again.} +\Msg{*} +\Msg{* To create the examples run (pdf)latex on the tex-files.} +\Msg{*} +\Msg{* That's all!} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*********************************************************} +%</install> +%<install>\endbatchfile +%<*internal> +\usedir{source/latex/mdframed} +\generate{\file{mdframed.ins} + {\from{mdframed.dtx}{install}}} + +\nopreamble\nopostamble\usedir{doc/latex/mdframed} +\generate{\file{README.txt} + {\from{mdframed.dtx}{readme}}} +\nopreamble\nopostamble\usedir{source/latex/mdframed} +\generate{\file{mdframed-example-default.tex} + {\from{mdframed.dtx}{mdframed-example-default}}} +\nopreamble\nopostamble\usedir{source/latex/mdframed} +\generate{\file{mdframed-example-tikz.tex} + {\from{mdframed.dtx}{mdframed-example-tikz}}} +\nopreamble\nopostamble\usedir{source/latex/mdframed} +\generate{\file{mdframed-example-pstricks.tex} + {\from{mdframed.dtx}{mdframed-example-pstricks}}} +\nopreamble\nopostamble\usedir{source/latex/mdframed} +\generate{\file{mdframed-example-texsx.tex} + {\from{mdframed.dtx}{mdframed-example-texsx}}} + +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +%</internal> +%<*driver> + +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,11pt,]{ltxmdf} +\usepackage{pdfpages} +\usepackage[framemethod=TikZ]{mdframed} +\usetikzlibrary{shadows} +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\EnableCrossrefs +\CodelineIndex +\OnlyDescription +%%\RecordChanges +\begin{document} + \DocInput{mdframed.dtx} +\end{document} +%</driver> +% \fi +% +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{mdframed.sty} +% +% +% \title{The \Pack{mdframed} package +% \footnote{Extending the package \texttt{framed.sty}}} +% \subtitle{auto-split frame environment} +% \author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}, +% \href{mailto:marco.daniel@mada-nada.de}{Elke Schubert}} +% \version{\mdversion} +% \date{\mdfmaindate} +% \introduction{The standard methods for framing text (\Cmd{fbox} +% or \Cmd{fcolorbox}) require you to handle page breaks +% by hand, meaning that you have to split the \Cmd{fbox} +% into two. The present package defines the environment +% \Pack{mdframed} which automatically deals with pagebreaks +% in framed text.\par +% By defining new environments the user may choose between +% several individual designs.% +% \par\kern.5\baselineskip\noindent +% Linked files:\quad +% \begin{tabular}[t]{ll} +% \url{mdframed-example-default.pdf} & +% \url{mdframed-example-tikz.pdf} \\ +% \url{mdframed-example-pstricks.pdf} & +% \url{mdframed-example-texsx.pdf} +% \end{tabular} +% \par\kern.5\baselineskip\noindent +% FYI:\quad\parbox[t]{.8\linewidth}{% +% I create a repository for \Pack{mdframed} +% on \href{https://github.com/marcodaniel/mdframed}{github} +% where you can +% \href{https://github.com/marcodaniel/mdframed}{download} +% the current development status.}% +% } +% +% \maketitle +% +% \vspace*{2\baselineskip} +% +% \section{Motivation} +% Many users wish to (further) emphasize lemmata, definitions, proofs, etc. The +% package \Pack{mdframed} allows you to create environments with breakable +% frames. I think an example is the best way to demonstrate its properties. +% +% \newmdtheoremenv[% +% outerlinewidth = 2 ,% +% roundcorner = 10pt ,% +% leftmargin = 40 ,% +% rightmargin = 40 ,% +% backgroundcolor = yellow!40 ,% +% outerlinecolor = blue!70!black ,% +% innertopmargin = \topskip ,% +% splittopskip = \topskip ,% +% ntheorem = true ,% +% ]{theorem}{Theorem}[section] +% +% \begin{theorem}[Pythagorean theorem] +% In any right triangle, the area of the square whose side is the hypotenuse +% is equal to the sum of the areas of the squares whose sides are the two +% legs. +% +% \[ a^2+b^2=c^2 \] +% \end{theorem} +% +% The frame was defined with the following settings. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[columns=fixed,fontadjust=false] + \newmdtheoremenv[% + outerlinewidth = 2 ,% + roundcorner = 10pt ,% + leftmargin = 40 ,% + rightmargin = 40 ,% + backgroundcolor = yellow!40 ,% + outerlinecolor = blue!70!black ,% + innertopmargin = \topskip ,% + splittopskip = \topskip ,% + ntheorem = true ,% + ]{theorem}{Theorem}[section] + \begin{theorem}[Pythagorean theorem] + ... + \end{theorem} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% \section{Syntax}\label{sec:syntax} +% +% \minisec{Required packages by \Pack{mdframed}} +% The package itself loads the packages +% \begin{center} +% \Pack{kvoptions}\qquad\Pack{xparse}\qquad\Pack{etoolbox} +% \quad\Pack{color}. +% \end{center} +% Depending on the option \Opt{framemthod} \Pack{mdframed} will load +% \begin{center} +% \Pack{xcolor}\qquad\Pack{tikz}\qquad\Pack{pstricks}. +% \end{center} +% +% Load the package as usual: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \usepackage[<GLOBAL OPTIONS>]{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% Only the option \Opt{framemethod} should be loaded by the +% optional argument of \Cmd{usepackage}. All other options +% should be loaded with \Cmd{mdfsetup} or related environments. +% The package should be loaded after \Pack{amsthm} if you need the package. +% \minisec{Provided environment} +% The package defines only one environment with the following syntax: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \begin{mdframed}[<LOCAL OPTIONS>] + <CONTENT> + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% To create own environments with \Pack{mdframed} see section \ref{sec:cmds}. +% +% \minisec{Autodetecting floats} +% \Pack{mdframed} detects whether the environment is used inside \Pack{float} +% or \Pack{minipage} environments. If you use \Pack{mdframed} in such +% an environment \Pack{mdframed} will use the option \Opt{nobreak} +% automatically. +% +% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% \section{The frames}\label{sec:frames} +% +% Normally you can say \Pack{mdframed} draws only some lines. +% To allow page breaks the following designs are supported. +% If you load the package with \Opt{framemethod=default} you +% can only draw a single line. Inside the gray boxes of the images below +% the text will be printed. +% \newcommand\Punkt[2][below]{% +% \node[label=#1:#2] at (#2){\tikz\fill(0,0)circle(0.05);};} +% \newcommand\Single[1][]{\path[#1] (O)--(O|-P)--(P)--(P|-O)--cycle;} +% \newcommand\FirstSecond[1][]{\path[#1] (O|-P)--(O)--(P|-O)--(P);} +% \newcommand\MiddleFlaeche[1][]{\path[#1] (O)--(O|-P)--(P)--(P|-O);} +% \newcommand\MiddleLinien[1][]{\path[#1] (O)--(O|-P)(P)--(P|-O);} +% \begin{center} +% \vspace*{2\baselineskip} +% \null\hfill +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm+2mm+6mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \Single[line width=3mm,draw=blue!20] +% \Single[clip] +% \Single[fill=gray!70] +% \Single[line width=7mm,draw=green!20] +% \end{scope} +% \Single[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] % +% at (24mm,35mm) {Frame of a single page}; +% \end{tikzpicture}% +% \hfill% +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{-2cm-1mm-3mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \FirstSecond[line width=3mm,draw=blue!20] +% \FirstSecond[clip] +% \FirstSecond[fill=gray!70] +% \FirstSecond[line width=7mm,draw=green!20] +% \end{scope} +% \FirstSecond[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] +% at (2.4,0.7) {First box -- first part of the output}; +% \end{tikzpicture} +% \hfill\null +% +% \vspace{3\baselineskip} +% +% \null\hfill +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm+1mm+3mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \FirstSecond[line width=3mm,draw=blue!20] +% \FirstSecond[clip] +% \FirstSecond[fill=gray!70] +% \FirstSecond[line width=7mm,draw=green!20] +% \end{scope} +% \FirstSecond[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] % +% at (24mm,25mm) {Second box -- last part of the output}; +% \end{tikzpicture}% +% \hfill% +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \MiddleLinien[line width=3mm,draw=blue!20] +% \MiddleFlaeche[clip] +% \MiddleFlaeche[fill=gray!70] +% \MiddleLinien[line width=7mm,draw=green!20] +% \end{scope} +% \MiddleLinien[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] +% at (24mm,20mm) {Middle box -- middle part of the output}; +% \end{tikzpicture} +% \hfill\null +% +% \captionof{figure}{The basic frames}\label{fig:basicframes} +%\end{center} +% %%%%%%%%%%%%%%%%%%%%%%% +% \section{Commands}\label{sec:cmds} +% +% The following commands should countenance your by the handling with +% \Pack{mdframed}. +% +% \ExplCmd{newmdenv[options]\{env-name\}} The command allows the definition of a new environment +% which is surrounded by \Env{mdframed}. The command has the following syntax: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \newmdenv[<MDFRAMED OPTIONS>]{Name of the environment} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% In this way you can say: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \newmdenv[linecolor=red,frametitle=Infobox]{infobox} + + \begin{infobox}[backgroundcolor=yellow] + Some Infos\ldots + \end{infobox} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \ExplCmd{renewmdenv[options]\{env-name\}} +% By using this command you can redefine environments which are created by +% \Cmd{newmdenv}. +% +% \ExplCmd{surroundwithmdframed[options]\{environment\}} +% Sometimes you have predefined environments. This commands allows you to +% surround an predefined \Env{environment} with \Env{mdframed} without +% changing the original name. To set a \Env{mdframed} around the +% environment \Env{verbatim} you can simple say. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \surroundwithmdframed[linewidth=2pt]{verbatim} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% \ExplCmd{mdflength\{options\}} +% If you want to work with length defined by \Pack{mdframed} (for example +% \Opt{innerleftmargin}) you can use the command \Cmd{mdflength}. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + The distance is \hspace{\mdflength{innerleftmargin}} + \the\mdflength{innerleftmargin} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The result will be: +% \begin{center} +% The distance is \hspace{\mdflength{innerleftmargin}} \the\mdflength{innerleftmargin} +% \end{center} +% +% +% \ExplCmd{mdfsetup\{options\}}To set the options +% you can use the optional argument of \Cmd{usepackage} or +% you can use the command \Cmd{mdfsetup} which is not limited to the preamble. +% Inside a group the settings work only local.\par +% \textbf{\color{red!70!black}At this point I want to recommend the usage of +% the command \Cmd{mdfsetup} instead of setting package option via the optional +% argument of \Cmd{usepackage}. So you are avoiding breaking of non robust +% commands.}^^A +% \footnote{Thanks to Heiko Oberdiek and Philipp Stephani +% \href{https://groups.google.com/group/de.comp.text.tex/^^A +% browse_thread/thread/15c5ad290490d426?hl=de}^^A +% {kvoptions-Declaration von Optionen schl\"agt fehl}} +% The sole exception is the option \Opt{framemethod} which must given as an optional +% argument of \Cmd{usepackage}. +% +% +% +% +% \section{Defining your own style} +% In the next section all options are introduced. However instead of +% passing them global or as an optional argument of the environment +% you can define your own styles. The method is as follows +% \ExplCmd{mdfdefinestyle\{style name\}\{options\}} +% \Cmd{mdfdefinestyle} allows the user to define different styles which can +% be used as an option of \Pack{mdframed} via \Opt{style}. +% \ExplCmd{mdfapptodefinestyle\{style name\}\{options\}} +% This commands add options to a defined style.\footnote{Thanks +% to Martin Scharrer and Enrico Gregorio:\newline +% \href{http://tex.stackexchange.com/questions/34684/argument-of-setkeys} +% {http://tex.stackexchange.com/questions/34684/argument-of-setkeys}} +% \ExplOpt{style} +% If you define a special style with \Cmd{mdfdefinestyle} you can use +% the key \Opt{style} to load the style. \Pack{mdframed} has +% no predefined styles yet. +% +% Here a small example: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={mystyle}] + \mdfdefinestyle{mystyle}{leftmargin=1cm,linecolor=blue} + \begin{mdframed}[style=mystyle] + foo + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% \section{Options} +% The package provides various options to manipulate frames. In the following +% section all options are listed. Some internal macros which can be manipulated +% are not shown in this documentation. +% The listed options are divided in global and local options. The global +% options can not be used inside \Cmd{mdfsetup}. +% +% \subsection{Global Options}\label{globopt} +% The following options are only global options. +% +% \ExplOpt[none]{xcolor} +% By setting this key, the package \Pack{xcolor} will +% be loaded with the given value(s). Without any value \mbox{\Pack{mdframed}} +% loads the package \Pack{color} without any options. If the package +% \Pack{xcolor} is already loaded the given option will be ignored. +% I recommend to load \Pack{xcolor} before \Pack{mdframed}. +% +% \ExplOpt[default]{framemethod} +% With this key you can change the way frames are drawn. You can decide +% whether the frame is drawn with +% \begin{enumerate} +% \item \LaTeX-commands {\small\Cmd{hrule}, \Cmd{vrule}, \Cmd{rule}}, +% \item \Pack{TikZ} {\small(the package \Pack{TikZ} will be loaded)} or +% \item \Pack{PSTricks} {\small(the package \Pack{pstricks} will be loaded)}. +% \end{enumerate} +% The option \Opt{framemethod} requires a string. Allowed combinations are +% listed in the following table. +% \begin{center} +% \renewcommand*\arraystretch{1.3} +% \captionof{table}{Allowed keys for \Opt{framemethod}} +% \begin{tabular}{@{}>{\small\bfseries}l>{\small\ttfamily}l@{}} +% \toprule +% \multicolumn{1}{@{}l}{\textbf{Method}} & \multicolumn{1}{l}{Allowed keys}\\ +% \midrule +% \LaTeX-commands & default, tex, latex, none, 0 \\ +% \Pack{TikZ} & tikz, pgf, 1 \\ +% \Pack{PSTricks} & pstricks, ps, postscript, 2 \\ +% \bottomrule +% \end{tabular} +% \end{center} +% +% If you are lazy you can also work with the following short forms: +% \Opt{tikz}, \Opt{TikZ}, \Opt{pstricks}, \Opt{PSTricks} or \Opt{ps}. Of +% course for the default method exists no key. +% +% \minisec{FYI} +% It is independently whether the \texttt{method} is +% written with no, one or more capital letter. +% +% All other options listed below can be set globally or locally and they are not +% limited to the preamble. I was trying to define self explained names. +% +% \subsection{Restoring the settings} +% Sometimes it's useful to remove all done settings. Every default value +% is saved in a style wich can be called by the option \Opt{default} or +% a more suitable +% name \Opt{style=defaultoptions}. Both do the same. +% +% Here a small example: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={mystyle}] + \mdfsetup{% + middlelinecolor=red, + middlelinewidth=2pt, + backgroundcolor=red!10, + roundcorner=10pt} + \begin{mdframed} + Text\par Text + \end{mdframed} + + \begin{mdframed}[default] + Text\par Text + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% \begin{mdframed}[% +% backgroundcolor=yellow!70!brown,linewidth=1.5pt, +% roundcorner=8pt,linecolor=brown!70!black,innerleftmargin=10pt] +% \mdfsetup{default, +% middlelinecolor=red, +% middlelinewidth=2pt, +% backgroundcolor=red!10, +% roundcorner=10pt} +% \begin{mdframed} +% Text\par Text +% \end{mdframed} +% +% \begin{mdframed}[default] +% Text\par Text +% \end{mdframed} +% \end{mdframed} +% +% +% +% \subsection{Options with lengths}\label{optlength} +% +% In figure \eqref{fig:laengen} you can see the adjustable lengths +% (compare also figure \eqref{fig:basicframes}). +% +% \begin{center} +% \begin{tikzpicture}[scale=0.9] +% %Declaration +% \newlength{\linew} +% \setlength{\linew}{5pt} +% \tikzstyle{every node}=[font=\bfseries\large\sffamily] +% \coordinate (innersep) at (3.2,2.25); +% \coordinate (outersep) at (3.2,2); +% %Center +% \node[fill=green!10,draw=black,framed,rounded corners, +% minimum width=3cm,minimum height=1.5cm]% +% (CenterNode) {Contents}; +% +% %frames +% \draw[draw=red!70!black,line width=\linew] % +% ($(CenterNode)+(innersep)$) % +% rectangle ($(CenterNode)-(innersep)$); +% \draw[draw=blue!70!black,line width=\linew] % +% ($(CenterNode)+(innersep)+(\linew,\linew)$)% +% rectangle ($(CenterNode)-(innersep)+(-\linew,-\linew)$); +% \draw[draw=yellow!70!black,line width=\linew] +% ($(CenterNode)+(innersep)+(2\linew,2\linew)$)% +% rectangle ($(CenterNode)-(innersep)+(-2\linew,-2\linew)$); +% \draw[draw=black,line width=1] ($(CenterNode)+(innersep)+(outersep)$)% +% rectangle ($(CenterNode)-(innersep)-(outersep)$); +% +% +% \tikzstyle{every node}=[font=\small\ttfamily] +% %%innertopmargin +% \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in +% (CenterNode.north) -- ($(CenterNode)+(0,\y1)-(0,.5\linew)$) ; +% \path let \p1=(innersep) in +% (CenterNode.north) +% edge +% node[align=center,framed,fill=white,draw=white]{innertopmargin} +% ($(CenterNode)+(0,\y1)-(0,.5\linew)$) ; +% %%innerbottommargin +% \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in +% (CenterNode.south) -- ($(CenterNode)-(0,\y1)+(0,.5\linew)$) ; +% \path let \p1=(innersep) in +% (CenterNode.south) +% edge +% node[align=center,framed,fill=white,draw=white]{innerbottommargin} +% ($(CenterNode)-(0,\y1)+(0,.5\linew)$) ; +% +% %%innerleftmargin +% \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in +% (CenterNode.west) -- ($(CenterNode)-(\x1,0)+(.5\linew,0)$) ; +% \path let \p1=(innersep) in +% (CenterNode.west) edge +% node[align=center,rotate=90,framed,fill=white,draw=white] +% {innerleftmargin} +% ($(CenterNode)-(\x1,0)+(.5\linew,0)$) ; +% %%innerrightmargin +% \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in +% (CenterNode.east) -- ($(CenterNode)+(\x1,0)-(.5\linew,0)$) ; +% \path let \p1=(innersep) in +% (CenterNode.east) edge +% node[align=center,rotate=90,framed,fill=white,draw=white] +% {innerrightmargin} +% ($(CenterNode)+(\x1,0)-(.5\linew,0)$) ; +% +% +% %%leftmargin +% \draw[draw=black,triangle 45-triangle 45] +% let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)-(\x1,0)-(2.5\linew,0)$) -- +% ($(CenterNode)-(\x1,0)-(\x2,0)$) ; +% \path let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)-(\x1,0)-(2.5\linew,0)$) edge +% node[align=center,rotate=0,framed,fill=white,draw=white] +% {leftmargin} +% ($(CenterNode)-(\x1,0)-(\x2,0)$) ; +% %%rightmargin +% \draw[draw=black,triangle 45-triangle 45] +% let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)+(\x1,0)+(2.5\linew,0)$) -- +% ($(CenterNode)+(\x1,0)+(\x2,0)$) ; +% \path let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)+(\x1,0)+(2.5\linew,0)$) edge +% node[align=center,rotate=0,framed,fill=white,draw=white] +% {rightmargin} +% ($(CenterNode)+(\x1,0)+(\x2,0)$) ; +% +% %%skipabove +% \draw[draw=black,triangle 45-triangle 45] +% let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)+(0,\y1)+(0,2.5\linew)$) -- +% ($(CenterNode)+(0,\y1)+(0,\y2)$) ; +% \path let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)+(0,\y1)+(0,2.5\linew)$) edge +% node[align=center,rotate=0,framed,fill=white,draw=white] +% {skipabove} +% ($(CenterNode)+(0,\y1)+(0,\y2)$) ; +% %%skipbelow +% \draw[draw=black,triangle 45-triangle 45] +% let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)-(0,\y1)-(0,2.5\linew)$) -- +% ($(CenterNode)-(0,\y1)-(0,\y2)$) ; +% \path let \p1=(innersep) , \p2=(outersep) in +% ($(CenterNode)-(0,\y1)-(0,2.5\linew)$) edge +% node[align=center,rotate=0,framed,fill=white,draw=white] +% {skipbelow} +% ($(CenterNode)-(0,\y1)-(0,\y2)$) ; +% \end{tikzpicture} +% +% \captionof{figure}{adjustable lengths of \Pack{mdframed}} +% \label{fig:laengen} +% \end{center} +% +% \ExplOpt[pt]{defaultunit} +% All lengths accept two kinds of input. The first one is a length (e.g. 2pt) +% and the second one is a number (e.g. 2) which will be multiplied by +% \Opt{1 defaultunit}. To get a better overview, all length options with their +% default value are listet in a table. I think the names are self explained +% so that don't describe it anymore. Although special hints and length are +% described below +% +% +% The first table lists the length for the geometry of the frame. +% \begin{center} +% \def\arraystretch{1.4} +% \begin{tabular}{@{}% +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{\qquad} +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{}} +% \hline +% skipabove & 0pt & skipbelow & 0pt \\ +% leftmargin & 0pt & rightmargin & 0pt \\ +% innerleftmargin & 10pt & innerrightmargin & 10pt \\ +% innertopmargin & 5pt & innerbottommargin & 5pt \\ +% \hline +% \end{tabular} +% \end{center} +% Before the next options are introduced here an example where the described +% length are used. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={mystyle}] + \mdfdefinestyle{mdfexample1}{leftmargin=1cm,rightmargin=2cm,% + innerleftmargin=1cm,innerrightmargin=1cm,roundcorner=10pt} + \begin{mdframed}[style=mdfexample1] + In any right triangle, the area of the square whose side is the hypotenuse + is equal to the sum of the areas of the squares whose sides are the two + legs. + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \begin{mdframed}[% +% backgroundcolor=yellow!70!brown,linewidth=1.5pt, +% roundcorner=8pt,linecolor=brown!70!black,innerleftmargin=10pt] +% \mdfdefinestyle{mdfexample1}{default,leftmargin=1cm,rightmargin=2cm,% +% innerleftmargin=2cm,innerrightmargin=1cm,roundcorner=10pt} +% \begin{mdframed}[style=mdfexample1] +% In any right triangle, the area of the square whose side is the hypotenuse +% is equal to the sum of the areas of the squares whose sides are the two +% legs. +% \end{mdframed} +% \end{mdframed} +% +% +% The next table lists the options to manipulate the lines of \Env{mdframed}. +% If you are working with \Opt{framemethod=default} you have only one line +% for framing. +% \begin{center} +% \def\arraystretch{1.4} +% \begin{tabular}{@{}% +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{\qquad} +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{\qquad} +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{}} +% \hline +% linewidth & 0.4pt & innerlinewidth & 0pt & +% middlelinewidth & 0.4pt \\ +% outerlinewidth & 0pt & roundcorner & 0pt & +% \multicolumn{2}{c}{} \\ +% \hline +% \end{tabular} +% \end{center} +% If you are working width \Opt{framemethod=tikz} or \Opt{framemethod=pstricks} +% the option \Opt{linewidth} is an alias for the option \Opt{middlelinewidth}. +% +% +% \subsection{Colored Options} +% Now we want to bring some color on your frames. The limitation is equal +% the the length options. For \Opt{framemethod=default} you have only one +% line. +% \begin{center} +% \def\arraystretch{1.4} +% \begin{tabular}{@{}% +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{\qquad} +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{}} +% \hline +% linecolor & black & innerlinecolor & black \\ +% middlelinecolor & black & outerlinecolor & black \\ +% backgroundcolor & white & fontcolor & black \\ +% \hline +% \end{tabular} +% \end{center} +% +% \ExplOpt[\{\}]{font} +% Although it's no really a color options you can also specify the font +% of the contents. Therefor the option \Opt{font} can be used. +% +% Ok after we have some lengths and some colors we can improve our example. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={example1}] + \mdfapptodefinestyle{example1}{backgroundcolor=brown!20,% + linecolor=red!40!black,linewidth=4pt} + \begin{mdframed}[style=mdfexample1] + In any right triangle, the area of the square whose side is the hypotenuse + is equal to the sum of the areas of the squares whose sides are the two + legs. + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \begin{mdframed}[% +% backgroundcolor=yellow!70!brown,linewidth=1.5pt, +% roundcorner=8pt,linecolor=brown!70!black,innerleftmargin=10pt] +% \mdfdefinestyle{mdfexample1}{default,leftmargin=1cm,rightmargin=2cm,% +% innerleftmargin=2cm,innerrightmargin=1cm,roundcorner=10pt,% +% backgroundcolor=brown!20,linecolor=red!40!black, linewidth=4pt} +% \begin{mdframed}[style=mdfexample1] +% In any right triangle, the area of the square whose side is the hypotenuse +% is equal to the sum of the areas of the squares whose sides are the two +% legs. +% \end{mdframed} +% \end{mdframed} +% +% +% +% \subsection{Shadows}\label{sec:shadow} +% Another possibility to highlight a frame can be a shadow. The package +% \Pack{mdframed} supports some elementary options to add a shadow. For +% \Opt{framemethod=tikz} the library \Pack{shadows} is needed which must be +% loaded by the user by \verb+\usetikzlibrary{shadows}+. +% \ExplOpt[8\,pt]{shadowsize} +% \ExplOpt[black!50]{shadowcolor} +% If a shadow is used depends on the option \Opt{shadow} which can be either +% \texttt{true} or \texttt{false}. The option shadows enables two new options +% \Opt{shadowsize} and \Opt{shadowcolor}. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={example1}] + \begin{mdframed}[backgroundcolor=gray!40,shadow=true,roundcorner=8pt] + In any right triangle, the area of the square whose side is the hypotenuse + is equal to the sum of the areas of the squares whose sides are the two + legs. + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \begin{mdframed}[backgroundcolor=gray!40!white,shadow=true,roundcorner=8pt] +% In any right triangle, the area of the square whose side is the hypotenuse +% is equal to the sum of the areas of the squares whose sides are the two +% legs. +% \end{mdframed} +% +% +% \subsection{Hidden Lines} +% The default behaoiur of the output was shown in a previous picture. +% \Pack{mdframed} offers the possibility to print only requested lines. If +% you don't want any right line you can say \Opt{rightline=false}. The +% table below listed all keys to this topic and shows their default setting. +% \begin{center} +% \def\arraystretch{1.4} +% \begin{tabular}{@{}% +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{\qquad} +% >{\Opt\bgroup}l<{\egroup}@{${}={}$}>{\ttfamily}l% +% @{}} +% \hline +% topline & true & rightline & true \\ +% leftline & true & bottomline & true \\ +% \hline +% \end{tabular} +% \end{center} +% \ExplOpt[false]{hidealllines} +% If you want to disable all lines you can use the short from +% \Opt{hidealllines}. +% +% +% \subsection{Working in twoside-mode} +% +% Many books are written in \texttt{twoside} mode. In those cases it's +% better to set the margins related to the site. Instead of the +% explained options \Opt{leftmargin} and \Opt{rightmargin} you can work with the +% options \Opt{outermargin} and \Opt{innermargin}. Of course if you working +% in \texttt{oneside} mode the options have no effect. If you don't want to +% work with \Opt{outermargin} and \Opt{innermargin} whether the document is +% done in \texttt{twoside} mode you can disable the behaviour by the option +% \Opt{usetwoside}. Allowed values for this key are \texttt{true} or +% \texttt{false}. +% +% +% \subsection{Footnotes} +% Inside the environment you can use the command \Cmd{footnote} as usual. +% \Pack{mdframed} uses the syntax of environment \Pack{minipage} with +% the same counter. +% +% Every footnote text will be collected inside a box and will be displayed +% at the end of the environment \Pack{mdframed}. +% +% \ExplOpt[\mbox{} \Cmd{bigskipamount}]{footnotedistance} +% The length is the distance between the end of the environment +% \Pack{mdframed} and the displaying of the \Cmd{footnoterule}. +% \ExplOpt[true]{footnoteinside} +% The position of the footnotes can be changed with the option +% \Opt{footnoteinside}. The footnotes will be displayed at the end +% of the environment but you can decide whether the output is inside +% \Pack{mdframed} or after. +% +% \minisec{Note} +% The output of the footnotes with the option \Opt{footnoteinside=false} +% are not in a splitted frame. I think it isn't useful because the first line +% of a new page shouldn't be a footnote. +% +% +% +% +%\subsection{Page breaks} +% The package \Pack{mdframed} splits its content if neccessary. In figure +% \ref{fig:basicframes} the default style for splitting is presented. However +% there a sevaral situations where no page preak should occur. +% \ExplOpt[false]{nobreak} +% For this case you can use the option \Opt{nobreak} which is either +% \texttt{true} or \texttt{false}. As you can see in figure +% \ref{fig:basicframes} the different elements have different ways of drawing. +% E.g. the middle part of \Pack{mdframed} has only a left and a right line. +% +% \ExplOpt[false]{everyline} +% If you want that all parts of \Pack{mdframed} get a whole frame you can work +% with the option \Opt{everyline}. Then all parts are displayed as a single +% frame. +% +% In a previous section the options \Opt{innertopmargin} and +% \Opt{innerbottommaring} were introduced. However if a page break occurs +% you have two new length options which influence the space at the breaking +% point. +% \ExplOpt[0\,pt]{splittopskip} +% Sets the length of the skip above the split part of the environment. +% \ExplOpt[0\,pt]{splitbottomskip} +% Sets the length of the skip below the split part of the environment. +% +% \subsection{Frametitle} +% In this section all relevant options of the frame title will be presented. +% They are not divided in their properties. +% +% \ExplOpt[none]{frametitle} +% The environment gets a title. To set a title use +% \Opt{frametitle=\{The Title of the frame\}} as an option of the +% environment. +% \ExplOpt[\Cmd{normalfont}\Cmd{bfseries}]{frametitlefont} +% Sets the format of the \Opt{frametitle}. +% \ExplOpt[\Cmd{raggedleft}]{frametitlealignment} +% Align the \Opt{frametitle}. This option must be set via \Cmd{mdfsetup}. +% \ExplOpt[false]{frametitlerule} +% Set this key to \Opt{true} to get a line between the frame title +% and the text. +% \ExplOpt[.2\,pt]{frametitlerulewidth} +% Sets the width of the line between the text and the title of +% \Env{mdframed}. +% \ExplOpt[5\,pt]{frametitleaboveskip} +% Sets the skip of the frame title to the margin above of \Env{mdframed}. +% \ExplOpt[5\,pt]{frametitlebelowskip} +% Sets the skip of the frame title to the rule of the frame title. +% \ExplOpt[backroundcolor]{frametitlebackgroundcolor} +% Sets the color of the background of the frametitle +% \ExplOpt[false]{repeatframetitle} +% Repeat the frame title on every frame. +% +% +% The following picture demonstrates the behaviour of the lengths if the option +% \Opt{frametitle} is used. +% +% \begin{center} +% \begin{tikzpicture}[scale=0.9] +% %Declaration +% \tikzstyle{every node}=[font=\bfseries\large\sffamily] +% \coordinate (innersep) at (3.2,2.25); +% \coordinate (outersep) at (3.2,2); +% %Center box +% \node[fill=green!10,draw=red!70!black,very thick,fill opacity=.2, +% text opacity=1,minimum width=9cm,minimum height=3cm,]% +% (CenterNode) {Contents of the box}; +% %frametitle box +% \node[fill=yellow!70,draw=red!70!black,very thick,fill opacity=.2, +% text opacity=1,minimum width=9cm,minimum height=3cm,anchor=south]% +% at (CenterNode.north) (frametitle) {frame title}; +% % frametitlerule +% \draw[line width=3pt,blue!60!black] (frametitle.south west) +% -- (frametitle.south east) +% node[pos=1,anchor=west,text width=4cm] +% {\Opt{frametitlerulewidth}\\\Opt{frametitlerule=true}}; +% % frametitlebelowskip +% \draw[very thick,blue!60!black,latex-latex,shorten >=0.2cm] +% (frametitle.south) -- (frametitle.center) +% node[pos=0.5,anchor=west] +% {\Opt{ frametitlebelowskip}}; +% % frametitleaboveskip +% \draw[very thick,blue!60!black,latex-latex,shorten >=0.2cm] +% (frametitle.north) -- (frametitle.center) +% node[pos=0.5,anchor=west] {\Opt{ frametitleaboveskip}}; +% % innertopmargin +% \draw[very thick,blue!60!black,latex-latex,shorten >=0.2cm] +% (CenterNode.north) -- (CenterNode.center) +% node[pos=0.5,anchor=west] {\Opt{ innertopmargin}}; +% % splittopskip +% \draw[very thick,blue!60!black,latex-latex,shorten >=0.2cm] +% (CenterNode.north) -- (CenterNode.center) +% node[pos=0.5,anchor=east] {\Opt{splittopskip}}; +% % global frame +% \draw[thick] (-5.5,-2.1) rectangle (9.4,5.5); +% \end{tikzpicture} +% \captionof{figure}{Behavior of the lengths if \Opt{frametitle} is used} +% \label{fig:frametitlelaengen} +% \end{center} +% +% +% \minisec{FYI and Note} +% The splitting of the frame title is really a fiddly issue. If you want to use +% the option \Opt{repeatframetitle} a splitting is more than wrong. On the +% other hand if you use the option \Opt{repeatframetitle} the user must prepare +% the contents well. +% +% \subsection{Title commands inside the environment} +% +% To provide titles inside the environment \Pack{mdframed} you can use +% \Cmd{mdfsubtitle}. The relavant options are listed below. +% +% \ExplCmd{mdfsubtitle} +% Set a title inside \Pack{mdframed} of the internal level 1. +% +% The command accepts one optional and one +% mandatory argument. The optional argument sets the option of \Pack{mdframed} +% whereby everything will be local. The second argument of subtitle also allows +% paragraph breaking. +% +% Breaks inside the \Cmd{mdfsubtitle} are not supported. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \mdfsubtitle[<options>]{the subtitle} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% \subsubsection{Options related to the title of level 1} +% \ExplOpt[false]{subtitleaboveline} +% Decide to draw a line above the subtile. +% \ExplOpt[false]{subtitlebelowline} +% Decide to draw a line below the subtitle. +% \ExplOpt[\string\normalfont\string\bfseries]{subtitlefont} +% Sets the font for subtitles. +% \ExplOpt[white]{subtitlebackgroundcolor} +% Sets the background color of the subtitle between the above and below +% line. +% \ExplOpt[black]{subtitleabovelinecolor} +% Sets the line color of the line above. +% \ExplOpt[black]{subtitlebelowlinecolor} +% Sets the line color of the line below. +% \ExplOpt[0.8\,pt]{subtitleabovelinewidth} +% Sets the line width of the line above. +% \ExplOpt[0.6\,pt]{subtitlebelowlinewidth} +% Sets the line width of the line below. +% \ExplOpt[\string\baselineskip]{subtitleaboveskip} +% Sets the skip before the subtitle line above will be drawn. +% \ExplOpt[1.2\string\baselineskip]{subtitlebelowskip} +% Sets the skip after the subtitle line below is drawn. +% \ExplOpt[0.5\string\baselineskip]{subtitleinneraboveskip} +% Sets the skip after the line above and the subtitle itself. +% \ExplOpt[0.5\string\baselineskip]{subtitleinnerbelowskip} +% Sets the skip after the subtitle and the line below. +% +% Here an example to demonstrate the behaviour: +% +%\newmdenv[% +% roundcorner=5pt,nobreak=true, +% subtitlebelowline=true,subtitleaboveline=true, +% subtitlebackgroundcolor=yellow!70!white, +% backgroundcolor=blue!20!white, +% frametitle={Theorem},frametitlerule=true, +% frametitlebackgroundcolor=yellow!70!white, +% ]{subtitleenv} +% +% \begin{subtitleenv} +% Some Text \ldots +% \mdfsubtitle{Notes} +% Some Text \ldots +% \end{subtitleenv} +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} +\newmdenv[% + roundcorner=5pt, + subtitlebelowline=true,subtitleaboveline=true, + subtitlebackgroundcolor=yellow!70!white, + backgroundcolor=blue!20!white, + frametitle={Theorem},frametitlerule=true, + frametitlebackgroundcolor=yellow!70!white, + ]{subtitleenv} +\begin{subtitleenv} + Some Text \ldots + \mdfsubtitle{Notes} + Some Text \ldots +\end{subtitleenv} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% +% \subsection{General options}\label{genopt} +% Some options can't be classified. Such options are listed in this section. +% \ExplOpt[false]{ntheorem} +% Before setting this boolean key, you have to load +% the package \Pack{ntheorem}. With this option you set the +% values \Cmd{theorempreskipamount} and +% \Cmd{theorempostskipamount} to 0\,pt to avoid extra vertical skip. +% \ExplOpt[0\,pt]{needspace} +% Sometimes it is useful to set a minimum height before a +% frame should be splitted. For such cases you can use \Opt{needspace}. +% The option requires a length which sets the minimum height before +% a frame will be splitted. +% \ExplOpt[false]{ignorelastdescenders} +% Try to ignore the last descenders of the environment \Env{mdframed}. The +% complete idea was inspired by Tobias Weh and the solution was provided +% by Stefan Lemke. See +% \href{http://tex.stackexchange.com/questions/47584/how-to-make-^^A +% mdframed-ignore-descenders-in-last-line}^^A +% {How to make mdframed ignore descenders in last line} +% Of course you have some more length which can be manipulate. +% \ExplOpt[\textbackslash linewidth]{userdefinedwidth} +% Sets the width of the whole \Pack{mdframed} environment. +% The width represent the width including the line width and +% the inner margins. The outer margins will be ignored. +% +% \ExplOpt[left]{align} +% Sometimes it is useful to align the environment itself. +% For this you have the option \Opt{align} which can be set to the +% following strings: +% \begin{itemize} +% \item \Opt{left}, +% \item \Opt{right} and +% \item \Opt{center}. +% \end{itemize} +% The alignments \Opt{left} or \Opt{right} depend on the given lengths +% \Opt{leftmargin} and \Opt{rightmargin}. Later I will present an example +% to demonstrate my bad English explanation. +% +% Be aware of using this option please. +% +% +% \subsection{TikZ options}\label{tikzopt} +% \mbox{} +% \ExplOpt[\{\}]{tikzsetting} +% With this key you can pass several options to \Cmd{tikzset}. +% Some examples are listed in the next section. It is very important +% to put the options of \Opt{tikzsetting} in brackets. +% \ExplOpt[\{\}]{apptotikzsetting} +% With this key you can add several options to \Opt{tikzsetting}. +% This key based on the idea of manipulation of predefined keys +% of \Pack{mdframed}. The package \Pack{mdframed} defines via +% \Cmd{tikzset} the following keys to draw frames. +% \begin{itemize} +% \item \Cmd{tikzset\{mdfbox/.style\}} +% \item \Cmd{tikzset\{mdfcorners/.style\}} +% \item \Cmd{tikzset\{mdfbackground/.style\}} +% \item \Cmd{tikzset\{mdfinnerline/.style\}} +% \item \Cmd{tikzset\{mdfouterline/.style\}} +% \item \Cmd{tikzset\{mdfmiddleline/.style\}} +% \item \Cmd{tikzset\{mdfframetitlerule/.style\}} +% \item \Cmd{tikzset\{mdfframetitlebackground/.style\}} +% \item \Cmd{tikzset\{mdfshadow/.style\}} +% \end{itemize} +% \textbf{Before you change one please have a look at the +% file \texttt{md-frame-1.mdf} to see the settings.} +% +% +% \subsection{PSTricks options}\label{pstricksopt} +% \mbox{} +% \ExplOpt[\{\}]{pstrickssetting} +% With this key you can pass several options to \Cmd{psset}. +% For example if you want all lines dashed you will have to set +% \Opt{pstrickssetting=\{linestyle=dashed\}}. It is very important +% to put the options of \Opt{pstrickssetting} in brackets. +% \ExplOpt[\{\}]{pstricksappsetting} +% \Pack{mdframed} works with defined styles for the different elements. By +% using \Cmd{addtopsstyle} in combination with this option +% you can expand the definition. The predefined styles are +% \begin{itemize} +% \item \Opt{mdfbackgroundstyle} +% \item \Opt{mdfframetitlebackgroundstyle} +% \item \Opt{mdfouterlinestyle} +% \item \Opt{mdfinnerlinestyle} +% \item \Opt{mdfmiddlelinestyle} +% \end{itemize} +% \textbf{Before you change one please have a look at the file +% \texttt{md-frame-2.mdf} to see the settings.} +% +% +% \section{Hooks and Bools}\label{hooksandbools} +% The following options and bool flags can be used by the any user. Of course +% some needs more experience than other. + +% \ExplOpt[\{\}]{settings} +% This option allows the user to commit some macros at the beginning of +% \Pack{mdframed}. The given material is executed before the savebox starts. +% +% \ExplOpt[\{\}]{extra} +% Add material to every drawn frame. +% \ExplOpt[\{\}]{singleextra} +% With this key you can put extra material to the drawing environment of +% \Pack{mdframed} only for a non splitted frame. +% \ExplOpt[\{\}]{firstextra} +% With this key you can put extra material to the drawing environment of +% \Pack{mdframed} only for the first part of the splitted frame. +% \ExplOpt[\{\}]{middleextra} +% With this key you can put extra material to the drawing environment of +% \Pack{mdframed} only for the middle part of the splitted frame. +% \limitation[TikZ and PSTricks] +% \ExplOpt[\{\}]{secondextra} +% With this key you can put extra material to the drawing environment of +% \Pack{mdframed} only for the second part of the splitted frame. +% +% +% After you can add material to any part of the frame you can also detect which +% part of the frame is drawn. Therefor the bool flags are defined which can be +% test by \Cmd{ifbool\{boolflag\}}. All flags are set to true before the output +% of the content occurs. +% \ExplOpt[false]{mdfsingleframe} +% This bool is only true for a non splitting frame. +% \ExplOpt[false]{mdffirstframe} +% This bool is only for the first part of the frame true. +% \ExplOpt[false]{mdfmiddleframe} +% see above. +% \ExplOpt[false]{mdflastframe} +% see above. +% +% For the advanced users there are also some other hooks which can be used +% to manipulate the output: +% \ExplOpt[\{\}]{beforesingleframe} +% Every given code to this option is executed before a single frame is +% is printed. +% \ExplOpt[\{\}]{aftersingleframe} +% Every given code to this option is executed after a single frame is +% is printed. +% \ExplOpt[\{\}]{beforebreak} +% The value of this option is only executed at breakable frames. Related to +% the introduction the first and middle frame can be manipulated. +% \ExplOpt[\{\}]{afterbreak} +% The value of this option is only executed at breakable frames. Related to +% the introduction the first and middle frame can be manipulated. +% \ExplOpt[\{\}]{beforelastframe} +% The option is executed only for the last frame of a splitted frame. +% \ExplOpt[\{\}]{afterlastframe} +% The option is executed only for the last frame of a splitted frame. +% +% \ExplOpt[\{\}]{startcode} +% Every code given to this option is executed at the beginning of the +% environment. +% \ExplOpt[\{\}]{startinnercode} +% This option is executed at the beginning of the save box. +% \ExplOpt[\{\}]{endinnercode} +% This option is executed at the end of the save box. +% \ExplOpt[\{\}]{endcode} +% The code is executed at the end of the environment. +% +% \section{Theorems} +% In this section is described which commands can help you to define +% theorem environments with \Pack{mdframed}. +% +% \ExplCmd{newmdtheoremenv} +% Since the package is often used to highlight theorem environments, +% the package providesa command to simplify this process. The command has the +% following syntax: +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \newmdtheoremenv[<mdframed-options>]{<envname>}% + [<numberedlike>]{<caption>}[<within>] +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The last four arguments are equivalent to the command \Cmd{newtheorem}. +% Only the first optional argument is able to pass \Pack{mdframed}-options. A +% simple example is: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \theoremstyle{<some style>} + \newmdtheoremenv[linecolor=blue]{lemma}{Lemma}[section] + ... + \begin{lemma}[Some title] + foo foo foo foo foo foo + \end{lemma} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% So far there is no \Cmd{renewmdtheoremenv}! +% +% +% \ExplCmd{mdtheorem} +% This is a special kind of \Cmd{newtheorem}. The command has the following +% syntax. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \mdtheorem[<mdframed-options>]{<envname>}% + [<numberedlike>]{<caption>}[<within>] +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% As you can see the arguments are equal to \Cmd{newtheorem} but the +% command ignores every \Cmd{theoremstyle}. This is based on the following +% behavior. +% +% The command \Cmd{mdtheorem} creates two environments based on the given +% first mandatory argument. The first environment is named like the given +% argument and creates a numbered theorem. The second environment is named +% like the first mandatory argument with a star. This environment has the +% same formating but isn't numbered. +% +% The syntax of the new defined environments is equal to the normal theorem +% environments. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \begin{environment}[optional title] + ... + \end{environment} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% What happened? The caption of the command will be set as the frame title. +% In this way all options of the frame title are available. Furthermore +% \Pack{mdframed} provides additional options explained below. +% +% \ExplOpt[\{:\}]{theoremseparator} +% Sets the separator of the caption and the title of the theorem. +% The \Opt{theoremseparator} will be printed only if an theorem +% title is given. +% \ExplOpt[\{\}]{theoremtitlefont} +% Via the option \Opt{frametitlefont} you can manipulate the font +% of the frame title. The option \Opt{theoremtitlefont} allows to +% set a different font to the title of the theorem. +% \ExplOpt[\protect\Cmd{space}]{theoremspace} +% Sets the space after \Opt{theoremseparator}. +% +% Examples can be found in the attached files. +% +% +% +% +% \section{complexe example -- Matlab Terminal} +% The following example was inspiered by a question on TeX.SX. +% \definecolor{DarkBlue}{rgb}{.11,.23,.60} +% \mdfdefinestyle{commandline}% +% {leftmargin=5pt, rightmargin=10pt,innerleftmargin=15pt, +% middlelinecolor=DarkBlue, +% middlelinewidth=2pt, +% frametitlerule=false, +% backgroundcolor=black!10!white, +% frametitle={Command Window}, +% frametitlefont={\normalfont\sffamily\color{white}\hspace{-1em}}, +% frametitlebackgroundcolor=DarkBlue, +% singleextra={\draw[black!20,line width=12pt] +% ($(O)+(7pt,1pt)$) -- +% ($(O|-P)+(7pt,-\mdfframetitleboxtotalheight)-(0,1pt)$); +% \node[inner sep=0pt,color=black]at ($(O)+(7pt,9pt)$)% +% {$\scriptstyle f\!x$}; }, +% nobreak=true, +% } +% +% \lstnewenvironment{script} {% +% \lstset{language=Matlab,basicstyle=\tiny\ttfamily,breaklines=true,% +% aboveskip=0pt,belowskip=0pt}}{} +% \surroundwithmdframed[style=commandline]{script} +% \begin{script} +% >> help sin +% sin Sine of argument in radians. +% sin(X) is the sine of the elements of X. +% +% See also asin, sind. +% +% Overloaded methods: +% sdpvar/sin +% codistributed/sin +% gpuArray/sin +% +% Reference page in Help browser +% doc sin +% +% >> +% \end{script} +% +% The code for this result is: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[moretexcs={lstnewenvironment,definecolor,lstset}] + \definecolor{DarkBlue}{rgb}{.11,.23,.60} + \mdfdefinestyle{commandline}% + {leftmargin=5pt, rightmargin=10pt,innerleftmargin=15pt, + middlelinecolor=DarkBlue, + middlelinewidth=2pt, + frametitlerule=false, + backgroundcolor=black!10!white, + frametitle={Command Window}, + frametitlefont={\normalfont\sffamily\color{white}\hspace{-1em}}, + frametitlebackgroundcolor=DarkBlue, + singleextra={\draw[black!20,line width=12pt] + ($(O)+(7pt,1pt)$) -- + ($(O|-P)+(7pt,-\mdfframetitleboxtotalheight)-(0,1pt)$); + \node[inner sep=0pt,color=black]at ($(O)+(7pt,9pt)$)% + {$\scriptstyle f\!x$}; }, + nobreak, + } + + \lstnewenvironment{script} {% + \lstset{language=Matlab,basicstyle=\tiny\ttfamily,breaklines=true,% + aboveskip=0pt,belowskip=0pt}}{} + \surroundwithmdframed[style=commandline]{script} + \begin{script} + >> help sin + sin Sine of argument in radians. + sin(X) is the sine of the elements of X. + + See also asin, sind. + + Overloaded methods: + sdpvar/sin + codistributed/sin + gpuArray/sin + + Reference page in Help browser + doc sin + + >> + \end{script} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% +% +% \section{Examples} +% +% I outsource the examples in four files documentation. The files +% are +% \begin{description}[style=nextline] +% \item[\texttt{mdframed-example-default}] +% Demonstration of examples created with \Opt{framemethod=default}. +% \item[\texttt{mdframed-example-tikz}] +% Demonstration of examples created with \Opt{framemethod=TikZ}. +% \item[\texttt{mdframed-example-pstricks}] +% Demonstration of examples created with \Opt{framemethod=pstricks}. +% \item[\texttt{mdframed-example-texsx}] +% Demonstration of examples like interaction with \Pack{listings} +% \end{description} +% +% The examples are often not equivalent but normally they can be adapted to +% another method. +% So I really recommend to have a look to all example files. +% +% The Korean \TeX Group created a very nice presentation. I want to show the +% link because it's really a great work: +% \href{http://prezi.com/zc355i9tcsgz/talk-kts-2012-mdframed/}^^A +% {kts 2012 mdframed}. +% +% +% \IfFileExists{mdframed-example-default.pdf}% +% {\includepdf[pages=-]{mdframed-example-default.pdf}}{} +% \IfFileExists{mdframed-example-tikz.pdf}% +% {\includepdf[pages=-]{mdframed-example-tikz.pdf}}{} +% \IfFileExists{mdframed-example-texsx.pdf}% +% {\includepdf[pages=-]{mdframed-example-texsx.pdf}}{} +% \IfFileExists{mdframed-example-pstricks.pdf}% +% {\includepdf[pages=-]{mdframed-example-pstricks.pdf}}{} +% +% \section{Errors, Warnings and Messages} +% +% The package \Pack{mdframed} provides different errors, warnings and +% messages in the \texttt{log}-file. Some \LaTeX-editors like +% \TeX Maker or \TeX Studio have a special tab for errors and warnings +% but not for messages. So you should look in the \texttt{log-File} itself. +% +% The following errors and warnings are generated by \Pack{mdframed}. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + The package ... does not exist but + needed by mdframed +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% To avoid this problem you should install the required +% packages which are listed in section \ref{sec:syntax}. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + package option style is depreciated + use framemethod instead style +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% With version 0.9d \Pack{mdframed} changed the meaning of the option +% \Opt{style}. The option is used to load a defined style by +% \Cmd{mdfdefinestyle}. Instead use \Opt{framemethod} (see section +% \ref{globopt}). +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + Unknown framemethod .... mdframed +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The input string for the option \Opt{framemethod} is unkown. See section +% \ref{globopt}. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + You have not loaded ntheorem yet +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% To use the option \Opt{ntheorem} you have to +% load the package \Pack{ntheorem}. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + You have only a width of 3cm +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The package \Pack{mdframed} calculates the width of the contents +% based on the given options. If the width of the contents is smaller than +% 3\,cm you will get this warnings. You should change the +% settings to get a greater width. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + You got a bad break + you have to change it manually + by changing the text, the space + or something else +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% Sometimes you have enough vertical space for the rules and the space +% between the rules and the contents but not for the contents itself. +% In this situation you will get this warning because the contents +% of this box is empty. You have the possibility to change the +% settings or include a \Cmd{clearpage} in front of +% the environment \Pack{mdframed}. +% So far I have no idea how to avoid such things. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + You got a bad break + because the split box is empty + You have to change the page settings + like enlargethispage or something else + You got a bad break +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% See the explanation above. +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + You got a bad break + because the last split box is empty + You have to change the settings +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The same reason as above but only in the last box. +% +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + Option ... is already consumed + and has no effect on input line ... +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% If you set a global option inside the document +% body you will get this warning. +% +% \section{Known Limitations} +% In this section I will collect known issues. In case you encounter +% any further problems, please drop me an email, +% \href{mailto:marco.daniel@mada-nada.de}{marco.daniel at mada-nada.de}. +% +% Do you have any ideas / wishes on further extensions to this package? +% Please let me know! +% +% \begin{enumerate} +% \item So far the environment isn't compatible with the package +% \Pack{gmverb}. +% \item If you load the package \Pack{picins} the frame will no be splitted. +% That based on a problem of the package `picins` which defines +% \Cmd{@captype} global. +% To work with the package picins you can use the following hack. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} +\usepackage{picins} +\makeatletter +\let\@captype\@undefined +\def\newcaption{% + \begingroup% + \def\@captype{figure}% + \refstepcounter\@captype\@dblarg{\@newcaption\@captype}% + \endgroup% +} +\makeatother +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \item \Pack{mdframed} can't handle the option \Opt{allowframebreaks} of the +% class \Pack{beamer}. +% \item A nested \Env{mdframed} environment can't be splitted. +% \end{enumerate} +% +% +% \section{ToDo} +% \textbf{\color{red} It is important to update the documentation} +% \begin{enumerate} +% \item see \enquote{Known Problems}. +% \item So far it isn't possible to combine the environment +% \Cmd{begin\{multicols\}} of the package \Pack{multicol} +% with \Pack{mdframed} with the whole option list. +% \item Create new styles. +% \item Improve page breaks. +% \item Improve footnotes. +% \item Improve documentation and examples. +% \item Create styles for \Opt{frametitle}. +% \item Create an inline version of \Env{mdframed} that's works like +% \Cmd{fbox} +% \item Add \Cmd{ht}\Cmd{strutbox} to file \Pack{md-frame-1.mdf} +% \end{enumerate} +% +% \section{Acknowledgements} +% \textsf{Dick Nickalls;\quad Dietrich Grau;\quad Piazza Luca;\quad% +% Jobst Hoffmann;\quad Martin Scharrer;\quad Enrico Gregorio;\quad +% Heiko Oberdiek;\quad Philipp Stephani}. +% \medskip +% +% \noindent Thanks for proofreading +% +% \textsf{Alan Munn} and \textsf{Nahid Shajari} +% +% I hope I forgot nobody. +% \clearpage +% \appendix +% +% \section{More information} +% %\addtocontents{toc}{\protect\setcounter{tocdepth}{-4}} +% In the following section I want to present how to create +% your own frame. +% \subsection{How does \Pack{mdframed} work?} +% With the environment \Cmd{begin\{mdframed\}} \ldots \Cmd{end\{mdframed\}} +% the whole contents will be saved in a \Cmd{savebox} called +% \Cmd{mdf@splitbox@one}. After the calculation of the width and the height of +% the \Cmd{mdf@splitbox@one} (done by \Pack{mdframed.sty}) the box will be set +% sequently (done by \Pack{md-frame-X.mdf}). The following figure demonstrates +% this. +% +% \begin{center} +% \begin{tikzpicture} +% \newcommand{\mybox}[1]{\parbox{3.5cm}{\centering\small #1}} +% \tikzstyle{every node}=[font=\sffamily] +% \tikzset{mymatrixnodes/.style={% +% matrix of nodes, +% nodes={framed,draw=black,fill=yellow!10,}, +% column sep=4.5cm, +% row sep=1.5cm, +% }} +% \matrix(m)[mymatrixnodes] +% {% +% \mybox{read in and save contents in \Cmd{mdf@splitbox@one}} & +% \mybox{\Cmd{mdf@putbox@single}} \\ +% \mybox{split \textbackslash mdf@splitbox@one in \Cmd{mdf@splitbox@two} to +% the free space of the page} & +% \mybox{\Cmd{mdf@putbox@first}} \\ +% \mybox{contents of \Cmd{mdf@splitbox@one} have enough space on the new +% page} & +% \mybox{\Cmd{mdf@putbox@second}} \\ +% \mybox{split \Cmd{mdf@splitbox@one} in \Cmd{mdf@splitbox@two} to the free +% space of the page} & +% \mybox{\Cmd{mdf@putbox@middle}} \\ +% }; +% +% \tikzstyle{every path}=[black,-triangle 45,thick,shorten >=4pt,shorten <=4pt] +% \draw (m-1-1) edge +% node[align=center,anchor=south]{enough space on page} (m-1-2); +% \draw (m-2-1) edge +% node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} +% (m-2-2); +% \draw (m-3-1) edge +% node[align=center,anchor=south]{yes} (m-3-2); +% \draw (m-4-1) edge +% node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} +% (m-4-2); +% +% \draw (m-2-2) edge node[align=center,fill=white]% +% {calculate the height of the new \Cmd{mdf@splitbox@one}} (m-3-1); +% +% +% \draw (m-1-1) edge +% node[align=center,anchor=west]{not enough space on page} (m-2-1); +% \draw (m-3-1) edge node[align=center,anchor=west]{no} (m-4-1); +% +% \draw let \p1=($(m-4-2.south)-(0,1)$), \p2=($(m-3-1.west)-(0.8,0)$) in +% (m-4-2.south) -- ($(m-4-2.south)+(0,-1)$) -- +% node[align=center,anchor=north]% +% {calculate the height of the new \Cmd{mdf@splitbox@one}} (\x2,\y1) +% -- ($(m-3-1.west)-(0.8,0)$)-- ($(m-3-1.west)$) ; +% +% +% \end{tikzpicture} +% +% \captionof{figure}{Setting the contents of \Pack{mdframed}}\label{fig:way} +% \end{center} +% +% The width of the contents is the result of the settings of +% \Opt{leftmargin}, \Opt{rightmargin}, \Opt{linewidth}, +% \Opt{innerleftmargin} and \Opt{innerrightmargin} +% (see figure \eqref{fig:laengen}). +% +% \subsection{The Framecommands} +% The package \Pack{mdframed} knows four kinds of \enquote{Framecommand}. +% These commands tell \LaTeX\ how to set the contents of \Pack{mdframed}. +% \begin{description} +% \item[\Cmd{mdf@putbox@single}] +% This command sets the contents of a single unsplit frame. +% \item[\Cmd{mdf@putbox@first}] +% This command sets the contents of the first frame of a split frame. +% \item[\Cmd{mdf@putbox@middle}] +% This command sets the contents of the middle frame of a split frame. +% \item[\Cmd{mdf@putbox@second}] +% This command sets the contents of the last frame of a split frame. +% \end{description} +% +% Using the explained commands we give an example. The command \Cmd{box} +% uses the contents of the savebox and types them out. +% +% First we want to type out the single box without any settings +% (but with the calculated width). +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \makeatletter + \def\mdf@putbox@single{\box\mdf@splitbox@one} + \makeatother +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% I am using the command \Cmd{leftline} to start the \enquote{Framecommands} at +% the left. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] + \makeatletter + \def\mdf@putbox@single{\leftline{\box\mdf@splitbox@one}} + \makeatother +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% Now you have to know how the lengths are named. Every length which can be +% modified by the options has the following syntax: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \mdf@<Name of the Length>@length +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% For example the leftmargin is: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \mdf@leftmargin@length +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% To create only a line at the left with the correct \Opt{leftmargin} you +% can set \Cmd{mdf@putboxsingle} as follows +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] + \makeatletter + \def\mdf@putbox@single{% + \leftline{% + \hspace*{\mdf@leftmargin@length}% + \rule[-\dp\mdf@splitbox@one]{\mdf@linewidth}% + {\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}% + \box\mdf@splitbox@one + }% + } + \makeatother +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% In this way you can do what you want. If you create your own style you +% can save the file as \Pack{md-frame-X.mdf}. +% \Pack{X} must be an integer. +% In this way you can use the option \Opt{framemethod} to +% load the file by setting \Opt{framemethod=X}. +% +%\iffalse +% \clearpage +% +% \subsection{Revision history}\label{rev} +% \raggedright +% +% +% \minisec{Version 1.8X submitted XX Mar 2013} +% \begin{itemize*} +% \item added \Cmd{topskip=0pt} to remove unwanted space after \Cmd{newpage} or \Cmd{clearpage} +% \end{itemize*} +% +% \footnotesize +% \minisec{Version 1.8 submitted 09 Mar 2013} +% \begin{itemize*} +% \item fixed bugs (e.g. related to \Cmd{parskip} of KOMA) +% \item allow margin notes with \Opt{framemethod=tikz} +% \item fixed some typos +% \end{itemize*} +% +% \minisec{Version 1.6d submitted 21 Sep 2012} +% \begin{itemize*} +% \item fixed bugs +% \item added option \Opt{draft} +% \end{itemize*} +% +% \minisec{Version 1.6b submitted 02 Jun 2012} +% \begin{itemize*} +% \item added commands \Cmd{mdfsubtitle} and \Cmd{mdfsubsubtitle} +% \item added options \Opt{subtitleaboveline}, \Opt{subtitlebelowline}, +% \Opt{subsubtitleaboveline}, \Opt{subsubtitlebelowline}, +% \Opt{subtitlefont}, \Opt{subsubtitlefont}, +% \Opt{subtitlebackgroundcolor}, +% \Opt{subsubtitlebackgroundcolor}, \Opt{subtitleabovelinecolor}, +% \Opt{subtitlebelowlinecolor}, \Opt{subsubtitleabovelinecolor}, +% \Opt{subsubtitlebelowlinecolor}, \Opt{subtitleabovelinewidth}, +% \Opt{subtitlebelowlinewidth}, \Opt{subtitleaboveskip}, +% \Opt{subtitlebelowskip}, \Opt{subtitleinneraboveskip}, +% \Opt{subtitleinnerbelowskip}, \Opt{subsubtitleabovelinewidth}, +% \Opt{subsubtitlebelowlinewidth}, \Opt{subsubtitleaboveskip}, +% \Opt{subsubtitlebelowskip}, \Opt{subsubtitleinneraboveskip}, +% \Opt{subsubtitleinnerbelowskip} +% \item improved formating of the file \Pack{mdframed.dtx} +% \item fixed bug in combination with \Cmd{parskip} -- Thanks David Carlisle. +% \item added extra loop to compute the splitting point. +% \item improved splitting algorithm +% \item added new option \Opt{ignorelastdescenders} -- Thanks Stephan Lehmke. +% \item Improved option \Opt{repeatframetitle} +% \item fixed bug: \Opt{framemethod=tikz} used wrong computed length by +% setting \Opt{everyline=true} +% \item Tobias Weh inspired the excurs-environment not Tobias Schwan. Sorry, +% I fixed it. +% \item Improved \Cmd{mdtheorem} to handle \Cmd{listtheorems} provided by +% \Pack{ntheorem}. +% \end{itemize*} +% +% \minisec{Version 1.5 submitted 10 Mar 2012} +% \begin{itemize*} +% \item fixed bug (Thanks Nicolas Roy) +% \item expanded documentation (Thanks Martin Wilhelm Leidig) +% \item added options \Opt{singleextra}, \Opt{firstextra}, +% \Opt{middleextra} and \Opt{secondextra} +% \item expanded examples +% \end{itemize*} +% +% \minisec{Version 1.4d submitted 30 Mar 2012} +% \begin{itemize*} +% \item fixed bug (Thanks Nicolas Roy) +% \item added approach to documentation to work with \Pack{picins} +% \item new implementation of option \Opt{hidealllines}, now you can set +% \Cmd{mdfsetup}\Opt{\{hidealllines=true,leftline=true\}} printing +% only the left line (inspired by Tobias Weh) +% \item added option \Opt{everyline} to draw a top and bottom line at +% splitted frames +% \end{itemize*} +% +% \minisec{Version 1.4 submitted 4 Mar 2012} +% \begin{itemize*} +% \item fixed bug in combination with \Cmd{marginpar} (Thanks Juan Carlos +% Trujillo Ortega) +% \item fixed bug with option \Opt{font} +% \item fixed bug inside \texttt{frametitle} (Thanks Yi, Hoze) +% \item removed unnessary groups (Thanks Yi, Hoze) +% \item changed the definition of \Pack{listings} to allow copy paste of the +% examples +% \end{itemize*} +% +% \minisec{Version 1.3a submitted 5 Feb 2012} +% \begin{itemize*} +% \item fixed bug (Thanks to Dietrich Grau) +% \end{itemize*} +% +% \minisec{Version 1.3 submitted 4 Feb 2012} +% \begin{itemize*} +% \item fixed documentation (Thanks to Dietrich Grau) +% \item added option \Opt{shadow} +% \item improved handling \Cmd{parindent} and \Cmd{parskip} (Thanks to Enrico +% Gregorio and Joseph Wright) +% \end{itemize*} +% +% \minisec{Version 1.2 submitted 8 Jan 2012} +% \begin{itemize*} +% \item fixed documentation (Thanks to Dietrich Grau) +% \item fixed bug in combination with \Pack{amsthm} +% \item fixed bug in \Cmd{newmdtheoremenv} +% \item defined new styles via \Cmd{newpsstyle}\limitation[PSTricks] +% \item added new commands for interaction with \Pack{TikZ} and \Pack{PSTricks} +% \item expand frame title option by option \Opt{frametitlerule}, +% \Opt{frametitlerulewidth}, \Opt{frametitlefont}, +% \Opt{frametitleaboveskip}, \Opt{frametitlebelowskip}, +% \Opt{frametitlealignment} +% \item removed limitation of three lines for PSTricks +% \item defined new commands \Cmd{surroundwithmdframed}, \Cmd{mdflength}, +% \Cmd{mdtheorem} +% \item load \Pack{xparse} by default +% \item changed internal names +% \item expanded examples +% \end{itemize*} +% +% \minisec{Version 1.0b submitted 9 Dec 2011} +% \begin{itemize*} +% \item fixes documentation (Thanks to Dietrich Grau) +% \item fixes bug in \Cmd{newmdtheoremenv} +% \item fixes bug with overfull boxes (Thanks to Dietrich Grau) +% \item defined \Cmd{newpsstyle}\Opt{mdfbackgroundstyle} and \Opt{mdflinestyle} +% \limitation[PSTricks] +% \item created dtx-file (Thanks to Kevin Godby) +% \item added \Cmd{@parboxrestore} to \Cmd{mdf@lrbox} +% \end{itemize*} +% +% \minisec{Version 1.0 submitted 13 Nov 2011} +% \begin{itemize*} +% \item add option \Opt{userdefinedwidth} +% \item add option \Opt{align} +% \item add option \Opt{apptotikzsetting} +% \item create new command \Cmd{mdfapptodefinestyle} +% \item changed internal algorithm +% \item removed calc instead using \eTeX\ \verb+\dimexpr+ +% \item expand documentation +% \item trying to fixe problems with \Pack{xcolor} +% \item fixed bug with \Opt{framemethod=pstricks} +% \item create file \Pack{mdframed-example-default} +% \item create file \Pack{mdframed-example-tikz} +% \item create file \Pack{mdframed-example-pstricks} +% \item create file \Pack{mdframed-example-texsx} +% (texsx stands for tex stackexchange) +% \end{itemize*} +% +% +% \minisec{Version 0.9g submitted 08 Oct 2011} +% \begin{itemize*} +% \item fixed documentation +% \item added small footnote compatibility +% \end{itemize*} +% +% \minisec{Version 0.9f submitted 04 Oct 2011} +% \begin{itemize*} +% \item fixes bugs (thanks to Lars Madsen) +% \item added option \Opt{hidealllines} +% \item fixed documentation +% \end{itemize*} +% +% +% \minisec{Version 0.9e submitted 11 Sep 2011} +% \begin{itemize*} +% \item working with \texttt{twoside} modus +% \end{itemize*} +% +% \minisec{Version 0.9d submitted 10 Sep 2011} +% \begin{itemize*} +% \item \textcolor{red}{changed the meaning of the option +% \Opt{style}}!!! (inspired by Lars Madsen) +% \item added option \Opt{framemethod} (inspired by Lars Madsen) +% \item added options \Opt{needspace} (inspired by Lars Madsen) +% \item added new command \Cmd{mdfdefinestyle} (inspired by Lars Madsen) +% \item fixes documentation +% \item renamed \Pack{md-frame-3.mdf} to \Pack{md-frame-2.mdf} +% \end{itemize*} +% +% +% +% \minisec{Version 0.9b submitted 7 Sep 2011} +% \begin{itemize*} +% \item fixes bugs in \Cmd{newmdtheoremenv} (Thanks to Enrico Gregorio) +% \end{itemize*} +% +% \minisec{Version 0.9a submitted 5 Sep 2011} +% \begin{itemize*} +% \item fixes bugs (Thanks to Lars Madson) +% \item expanded documentation (added revision history) +% \end{itemize*} +% +% +% \minisec{Version 0.9 submitted 4 Sep 2011} +% \begin{itemize*} +% \item added option \Opt{nobreak} +% \item detecting float environments to prevent split calculation +% \item expand documentation (Thanks to Alan Munn) +% \end{itemize*} +% +% \minisec{Version 0.8a} +% \begin{itemize*} +% \item fixes bugs +% \item fixes documentation +% \end{itemize*} +% +% \minisec{Version 0.8 submitted 22 Aug 2011} +% \begin{itemize*} +% \item added commands: \Cmd{newmdenv}, \Cmd{renewmdenv}, +% \Cmd{newmdtheoremenv} +% \item fixes bugs +% \item fixes documentation +% \end{itemize*} +% +% \minisec{Version 0.7a submitted 6 August 2011} +% \begin{itemize*} +% \item added option \Opt{frametitle} +% \item added option \Opt{frametitlefont} +% \item allow twolumn-mode +% \item changed the calculation +% \item added option \Opt{tikzsetting} +% \item added options for hidden lines for all styles +% \item fixes bugs +% \end{itemize*} +% +% \minisec{Version 0.6a submitted 22 Dec 2010} +% \begin{itemize*} +% \item fixes bugs +% \item added \Cmd{mdfsetup} +% \item expanded documentation +% \end{itemize*} +% +% \clearpage +% +% +% +% +% +% \section{Implementation}\label{implementation} +% +% And finally, here's how it all works\ldots +% +%\fi +%\StopEventually{^^A +% ^^A\clearpage +% ^^A\PrintChanges^^A +% ^^A\clearpage +% ^^A\PrintIndex^^A +%} +% +%\iffalse +% \begin{macrocode} +%<*package> +% \end{macrocode} +%\fi +% +% \subsection{The Explanation of mdframed.sty} +% +% \begin{macro}{mdversion,mdframedpackagename,mdfmaindate} +% Set package information +% \begin{macrocode} +\def\mdversion{1.9b} +\def\mdframedpackagename{mdframed} +\def\mdfmaindate{2013/07/01} +\def\mdfrevision{ 212}% Done by github: git rev-list HEAD | wc -l +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mdframed}% + [\mdfmaindate\space \mdversion: \mdframedpackagename] +% \end{macrocode} +% +% \begin{macro}{mdf@PackageWarning,mdf@PackageInfo,mdf@LoadFile@IfExist} +% Set short form of |\PackageError|, |\PackageWarning|, |\PackageInfo| and +% |IfFileExists| in combination with |\RequirePackage|. +% \begin{macrocode} +\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 + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% Loading required packages +% \begin{macrocode} +\RequirePackage{kvoptions} +\RequirePackage{xparse} +\RequirePackage{etoolbox}[2011/01/03] +\RequirePackage{zref-abspage} +\RequirePackage{needspace} +\RequirePackage{color} +% \end{macrocode} +% +% Set the family and the prefix of all options. +% \begin{macrocode} +\SetupKeyvalOptions{family=mdf,prefix=mdf@} +% \end{macrocode} +% +% \begin{macro}{mdf@definestyle@defaultoptions} +% Save all keys in a macro which can be used by \Opt{style} or +% as an option +% \begin{macrocode} +\def\mdf@definestyle@defaultoptions{}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@iflength,mdf@iflength@check,mdf@iflength@check} +% Command which checks the input of length options. If the length option is +% only a number the |defaultunit| will be used. Syntax: +% |\mdf@iflength{<Input>}{<length>}{<no length>}| +% \begin{macrocode} +\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{} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@dolist} +% Loop used by \Pack{mdframed}. I can handle comma separated list. The command +% \Cmd{DeclareListParser} is provided by `etoolbox`. +% \begin{macrocode} +\DeclareListParser*{\mdf@dolist}{,} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@lengthoption} +% We need lots of length options. So the declaration is simplified. +% \begin{macrocode} +% \mdf@dolist{\mdf@do@lengthoption}{{option name ==default value},...}% +% resulst to the length \mdf@<option name>@length +\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}% + }% +} + + +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@do@stringoption} +% We need lots of string options which are saved in a macro.% +% So the declaration is simplified. +% \begin{macrocode} +% \mdf@dolist{\mdf@do@stringoption}{{option name ==default value},...}% +% resulst to the macro \mdf@<option name> +\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,}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@do@booloption} +% We need lots of bool options. So the declaration is simplified. +% \begin{macrocode} +% \mdf@dolist{\mdf@do@booloption}{{option name ==default value},...}% +% resulst to the bool flag \mdf@<option name> +\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,}% +} +% \end{macrocode} +% \end{macro} +% +% +% Start declaration of options +% \begin{macrocode} +\newcounter{mdf@globalstyle@cnt} +\defcounter{mdf@globalstyle@cnt}{-99} + +% Only provide to be backward compatible +\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{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\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}} + +% \end{macrocode} +% +% \begin{macro}{mdf@do@lengthoption} +% Here the declaration of all length options. +% \begin{macrocode} +\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},% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% NOT IMPLEMENTED + {subsubtitleabovelinewidth==.8pt},% + {subsubtitlebelowlinewidth==.6pt},% + {subsubtitleaboveskip==\baselineskip},% + {subsubtitlebelowskip==1.2\baselineskip},% + {subsubtitleinneraboveskip==.5\baselineskip},% + {subsubtitleinnerbelowskip==.5\baselineskip},% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@lengthoption} +% Here the declaration of the string options. +% \begin{macrocode} +\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=={}},% +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % +% %%subtitle / subsubtitle added 29.05.12%% % +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % + {subtitlefont==\normalfont\bfseries},% + {subsubtitlefont==\normalfont},% + {subtitlebackgroundcolor==white},% + {subsubtitlebackgroundcolor==white},% + {subtitleabovelinecolor==black},% + {subtitlebelowlinecolor==black},% + {subsubtitleabovelinecolor==black},% + {subsubtitlebelowlinecolor==black},% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@booloption} +% Here the declaration of all bool options. +% \begin{macrocode} +\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: +% \newbool{mdf@nobreak}% +% \boolfalse{mdf@nobreak}% +\DeclareBoolOption[true]{nobreak} +\boolfalse{mdf@nobreak}% +\appto\mdf@definestyle@defaultoptions{nobreak=false,} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@alignoption} +% Here the declaration of all align options. +% \begin{macrocode} +%USELESS +%USELESS +%USELESS +% This part must be worked over. +\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}}% + }% +} +%USELESS +%USELESS +%USELESS +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@tikzset@local,mdf@psset@local} +% Option to pass options to tikz or pstricks +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@xcolor} +% \textcolor{red}{\bfseries Problem width xcolor. This part must be reworked!} +% \begin{macrocode} +\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% +}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macrocode} +\DeclareDefaultOption{% + \mdf@PackageError{Unknown Option '\CurrentOption' for mdframed}} +\ProcessKeyvalOptions*\relax +\ifnum\c@mdf@globalstyle@cnt<0 + \kvsetkeys{mdf}{framemethod=default,} +\fi +% \end{macrocode} +% +% \begin{macro}{mdfsetup} +% Short form of |\setkeys{mdf}| +% \begin{macrocode} +\newrobustcmd*{\mdfsetup}{\kvsetkeys{mdf}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@style} +% Redefinition of the option |style| to use the key in combination with +% |mdfdefinedstyle|. +% \begin{macrocode} +\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}% +}% +% \end{macrocode} +% \end{macro} + +% \begin{macro}{linewidth} +% make linewidth available for all styles: +% |mdfdefinedstyle|. +% \begin{macrocode} +\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 + +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@print@space} +% Option to type out the free vertical space of the current page. +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{new...} +% Initialize all commands and length which will we used later +% \begin{macrocode} +\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} +% Command to expand the tikz code. (see md-frame-1.mdf) +\newrobustcmd\mdfcreateextratikz{} + +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@lrbox,endmdf@lrbox} +% Modification of the default |\lrbox| and |\endlrbox| +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@ignorevbadness} +% Avoiding warnings during the splitting process by \Cmd{vsplit}. +% \begin{macrocode} +\newrobustcmd*\mdf@ignorevbadness{% + \edef\mdf@currentvbadness{\the\vbadness}% + \vbadness=\@M% + \afterassignment\mdf@restorevbadness} + +\newrobustcmd*\mdf@restorevbadness{\vbadness=\mdf@currentvbadness\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@patchamsth} +% The package \Pack{amsthm} provides a not compatible starting of theorem. So I +% have to change the header of amsthm. +% \begin{macrocode} +\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}% + }% + }% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@trivlist,endmdf@trivlist} +% Modification of the default |\trivlist| and |\endtrivlist|. +% \begin{macrocode} +\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} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@makebox@out,mdf@makebox@in} +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdfdefinestyle,mdfapptodefinestyle} +% See explanation of this commands in the main documenation. +% \begin{macrocode} +\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}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdflength,surroundwithmdframed} +% Helper macros to work with mdframed +% \begin{macrocode} +\newrobustcmd*{\mdflength}[1]{\csuse{mdf@#1@length}} + +\newrobustcmd*{\surroundwithmdframed}[2][]{% + \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% + \AfterEndEnvironment{#2}{\end{mdframed}}% +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{newmdenv,renewmdenv,newmdtheoremenv,mdtheorem} +% Defining of the new environment defintions. +% \begin{macrocode} +\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}% +}% +% \end{macrocode} +% Definitions of the standard Theoerems surrounded by \Pack{mdframed}. +% \begin{macrocode} +\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}}% +} +% \end{macrocode} +% Compatible with \Pack{ntheorem}'s \Cmd{listoftheorems}. +% \begin{macrocode} +\newrobustcmd*\mdf@thm@caption[2]{} +\AtBeginDocument{% + \@ifpackageloaded{ntheorem}% + {\renewrobustcmd*\mdf@thm@caption{\thm@thmcaption}}{}% + } +% \end{macrocode} +% +% +% \begin{macro}{mdf@checkntheorem} +% Command which checks only |ntheorem|. Later I will support also +% |thmtools|. +% \begin{macrocode} +\newrobustcmd*\mdf@checkntheorem{% + \ifbool{mdf@ntheorem}% + {\ifundef{\theorempreskipamount}% + {\mdf@PackageWarning{You have not loaded ntheorem yet}}% + {\setlength{\theorempreskipamount}{\z@}% + \setlength{\theorempostskipamount}{\z@}% + }% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% Defining a complete new theorem set by \Pack{mdframed} +% \begin{macrocode} +\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}}% + }% + }% + } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdfframedtitleenv,mdf@@frametitle, +% mdf@setopt@body,mdf@setopt@title} +% Default definition of the frame tile used by |mdframed|. +% \textcolor{red}{\bfseries Need a better documenation and must be improved!!!} +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@footnoterule,mdf@footnoteoutput,mdf@footnoteinput} +% Support for footnotes. See source2e. +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@styledefinition} +% The default frame method needs special handling. +% \begin{macrocode} +\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% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{detected@mdf@put@frame} +% Detect whether inside a non breakable environment. +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{mdf@envdepth} +% Setting up a counter for the depth of the environment. Nesting of two +% \Env{mdframed} environments isn't recommended but I am trying to support +% the basic rules. +% \begin{macrocode} +\newcount\mdf@envdepth \mdf@envdepth=0 +\@definecounter{mdf@env@i} +\@definecounter{mdf@env@ii} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@preenvsetting} +% Collect all definitions at the beginning of \Env{mdframed} +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@@ignorelastdescenders} +% Collect all definitions at the beginning of \Env{mdframed} +% \begin{macrocode} +\newrobustcmd*\mdf@@ignorelastdescenders{% + \ifbool{mdf@ignorelastdescenders}% + {% + \par\strut\par% + \unskip\unskip\setbox0=\lastbox + \vspace*{\dimexpr\ht\strutbox-\baselineskip\relax}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{mdframed} +% The user environement. +% \begin{macrocode} +\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% +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@twoside@checklength,mdf@zref@label,if@mdf@pageodd, +% mdf@pageisodd,mdf@pageiseven,mdf@@setzref} +% The whole bunch is used to work width twoside mode and uses the correct +% margins. +% \begin{macrocode} +\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}{}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@freepagevspace} +% The following lines are added by an inspiration of the great package +% \Pack{multicol}. +% \begin{macrocode} +\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% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@advancelength@sub,mdf@advancelength@add} +% Command used for loop calculation +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@horizontalmargin@equation} +% Compute the width of the box +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@keeplines@single} +% Space in relation of horizontal lines. +% \begin{macrocode} +\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}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@reset} +% Reset changes +% \begin{macrocode} +\protected@edef\mdf@reset{\boxmaxdepth\the\boxmaxdepth% + \splittopskip\the\splittopskip}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@put@frame@standalone} +% Output of |mdframed| inside a non breakable environement. +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@put@frame} +% Output of |mdframed| inside a breakable environement. +% The comparison are only check whether the contents must be split or not. +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@put@frame@i} +% Output of the first splitted box. +% \begin{macrocode} +\def\mdf@put@frame@i{%Box must be splitted + \mdf@freepagevspace%gives \mdf@freevspace@length +% minimum 2 lines for one page: + \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% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@put@frame@ii} +% Output of the middle and last box. +% \begin{macrocode} +\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% +% \offinterlineskip\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}% + }{}% +% Test whether the complete height of the frame fits on the current page + \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% +} + +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{mdfsubtitle} +% +% \begin{macrocode} +\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% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@test@ltrb,mdf@test@ltr,mdf@test@ltb,mdf@test@trb,^^A +% mdf@test@lrb,mdf@test@lb,mdf@test@rb,^^A +% mdf@test@tr,mdf@test@lt,mdf@test@lr,mdf@test@tb,mdf@test@l,^^A +% mdf@test@r,mdf@test@t,mdf@test@b,mdf@test@noline} +% Short forms of checking the option which lines should be drawn. +% \begin{macrocode} +%%%% _____t_____ +%%%% | | +%%%% | | +%%%% | | +%%%% l| |r +%%%% | | +%%%% | | +%%%% |___________| +%%%% b +%all lines +\newrobustcmd*\mdf@test@ltrb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%three lines +\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})}} +%two lines +\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})}} +%single lines +\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})}} +%no lines +\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} ) }} +% +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macrocode} +% % %\DisableKeyvalOption[action=warning,package=mdframed]{mdf}{framemethod}% +\DisableKeyvalOption[action=warning,package=mdframed]{mdf}{xcolor}% + + \endinput +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</package> +% \end{macrocode} +%\fi +% +%\iffalse +% \begin{macrocode} +%<*mdframedefault> +% \end{macrocode} +%\fi +% \subsection{The Explanation of md-frame-0.mdf} +% \begin{macrocode} +%% Style file for mdframed for package option `framemethod=default` +%% +%% 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. +%% +% \end{macrocode} +% +% \begin{macro}{mdframedOpackagename} +% local settings +% \begin{macrocode} +\def\mdframedOpackagename{md-frame-0} +\ProvidesFile{md-frame-0.mdf}% + [\mdfmaindate\ % + \mdversion: \mdframedOpackagename] +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@background@default,mdf@linecolor@default,^^A +% mdf@linecolor@bottom} +% short command +% \begin{macrocode} +\def\mdf@background@default{\color{\mdf@backgroundcolor}} +\def\mdf@frametitlebackground@default{\color{\mdf@frametitlebackgroundcolor}} +\def\mdf@shadow@default{\color{\mdf@shadowcolor}} +\def\mdf@innerlinecolor@default{\color{\mdf@innerlinecolor}} +\def\mdf@middlelinecolor@default{\color{\mdf@middlelinecolor}} +\def\mdf@outerlinecolor@default{\color{\mdf@outerlinecolor}} +\def\mdf@frametitlerulecolor@default{\color{\mdf@frametitlerulecolor}} +\let\mdf@linecolor@default\mdf@middlelinecolor@default +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox{\hsize\mdfframetitleboxwidth% + \par\unskip\vskip\mdf@frametitlebelowskip@length% + \rlap{\noindent\hspace*{-\mdf@innerleftmargin@length}% + \mdf@frametitlerulecolor@default% + \rule{\dimexpr\mdfframetitleboxwidth% + +\mdf@innerleftmargin@length + +\mdf@innerrightmargin@length\relax + }{\mdf@frametitlerulewidth@length}% + }\hrule \@height\z@ \@width\hsize}% + }{% + \vbox{\hsize\mdfframetitleboxwidth% + \par\unskip\vskip\mdf@frametitlebelowskip@length% + \rlap{\noindent\hspace*{-\mdf@innerleftmargin@length}% + \mdf@frametitlerulecolor@default% + \rule{\dimexpr\mdfframetitleboxwidth% + +\mdf@innerleftmargin@length + +\mdf@innerrightmargin@length\relax + }{\z@}% + }\hrule \@height\z@ \@width\hsize}% + }% + \iftoggle{mdf@notfirstframetitle}% + {% + \par\unskip\vskip\mdf@splittopskip@length% + }% + {% + \par\unskip\vskip\mdf@innertopmargin@length% + }% +}% + +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{mdf@drawsubtitleaboveline,mdf@drawsubtitlebelowline,^^A +% mdf@drawsubtitlebackground} +% +% \begin{macrocode} +%default: +\def\mdf@drawsubtitleaboveline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \color{\mdf@subtitleabovelinecolor}% + \rule{\mdf@templength}{\mdf@subtitleabovelinewidth@length}% + }% +} +\def\mdf@drawsubtitlebelowline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \color{\mdf@subtitlebelowlinecolor}% + \rule{\mdf@templength}{\mdf@subtitlebelowlinewidth@length}% + }% +} +\def\mdf@drawsubtitlebackground{% + \rlap{\smash{% + \hspace*{-\mdf@innerleftmargin@length}% + \color{\mdf@subtitlebackgroundcolor}% + \rule[-\mdfsubtitleheight]{\mdf@templength}{\mdfsubtitleheight}% + }}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@putbox@single,mdf@frame@background@single,^^A +% mdf@frame@topandbottomline@single,mdf@frame@leftline@single,^^A +% mdf@frame@rightline@single,mdf@frame@rightline@single} +% The frame of of a non splitted contents of mdframed +% \begin{macrocode} +\def\mdf@frame@background@single{% + \ifbool{mdf@shadow}% + {% + \rlap% + {% + \smash% + {% + \mdf@shadow@default% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@shadowsize@length + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{} + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + +\mdf@shadowsize@length + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\dimexpr + \mdfboundingboxtotalheight + +\mdf@shadowsize@length + \ifbool{mdf@bottomline}{+\mdf@middlelinewidth@length}{} + \relax}% + }% + }% + }{}% + \rlap% + {% + \mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@frametitlebackground@single{% + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% +}% +\def\mdf@frame@topline@single{% + \rlap% + {% + \mdf@linecolor@default% + \ifbool{mdf@topline}% + {% + \rule[\dimexpr + \mdfboundingboxheight + -\mdfboundingboxdepth% + +\mdf@innerbottommargin@length + +\mdf@innertopmargin@length + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% +\def\mdf@frame@bottomline@single{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \ifbool{mdf@bottomline}% + {% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@middlelinewidth@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}% + \relax}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% +\def\mdf@frame@leftline@single{% + \llap% + {% + \mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\dimexpr + \mdfboundingboxtotalheight% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{}% + \relax}% + }% +}% +\def\mdf@frame@rightline@single{% + \rlap% + {% + \mdf@linecolor@default% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[\dimexpr + -\mdfboundingboxdepth% + \relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr + \mdfboundingboxtotalheight% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{}% + \relax}% + }% +}% +\def\mdf@putbox@single{% + \ifvoid\mdf@splitbox@one\relax + \else% + \mdf@makebox@out% + {% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}% + {\wd\mdf@splitbox@one}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr + \mdfboundingboxwidth + +\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + \relax}% + \setlength{\mdfboundingboxheight}% + {\dimexpr + \ht\mdf@splitbox@one + +\dp\mdf@splitbox@one + \relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr + \dp\mdf@splitbox@one + +\mdf@innerbottommargin@length + \relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr + \mdfboundingboxheight + +\mdf@innertopmargin@length% + +\mdf@innerbottommargin@length + \relax}% + \setlength{\mdftotallinewidth}% + {\dimexpr + \mdf@innerlinewidth@length + +\mdf@middlelinewidth@length% + +\mdf@outerlinewidth@length + \relax}% + \noindent% + \setlength{\@tempdima}% + {\dimexpr + \mdfboundingboxtotalwidth% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \relax}% + \mdf@makebox@in[\@tempdima]% + {% + \null% + \ifbool{mdf@leftline}% + {% + \hspace*{\mdftotallinewidth}% + \mdf@frame@leftline@single% + }{}% + \mdf@frame@topline@single% + \mdf@frame@background@single% + \mdf@frame@bottomline@single% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@single}% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}% + {% + \mdf@frame@rightline@single% + }{}% + {\box\mdf@splitbox@one}% + }% + \mdf@extra% + \mdf@singleextra + \mdf@makeboxalign@right% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@putbox@first,mdf@frame@background@first,^^A +% mdf@frame@leftline@first,mdf@frame@topline@first,^^A +% mdf@frame@rightline@first} +% The first frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\mdf@frame@background@first{% + \ifbool{mdf@shadow}% + {% + \rlap% + {% + \smash% + {% + \mdf@shadow@default% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@shadowsize@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + +\mdf@shadowsize@length + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\dimexpr + \mdfboundingboxtotalheight + +\mdf@shadowsize@length + \relax}% + }% + }% + }{}% + \rlap% + {% + \mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@frametitlebackground@first{% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + }% + {%repeating title = false -- maybe splitted + \ifdimless{\mdfframetitleboxtotalheight}{\mdfboundingboxtotalheight}% + {% + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=-\p@\relax% + }% + {% + \mdf@PackageWarning{You got a page break inside the title\MessageBreak + Current this isn't well supported}% + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=% + \dimexpr% + \mdfframetitleboxtotalheight + -\mdfboundingboxheight + +\mdf@frametitlebelowskip@length + +.5\baselineskip-1pt +% +\dp\strutbox + \relax% + }% + }% +}% +\def\mdf@frame@leftline@first{% + \llap% + {% + \mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\dimexpr + \mdfboundingboxtotalheight% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{} + \relax}% + }% +}% +\def\mdf@frame@topline@first{% + \rlap% + {% + \mdf@linecolor@default% + \rule[\dimexpr + \mdfboundingboxheight + -\mdfboundingboxdepth + +\mdf@splitbottomskip@length + +\mdf@innertopmargin@length + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}% + }% +} +\def\mdf@frame@rightline@first{% + \rlap% + {% + \mdf@linecolor@default% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\dimexpr + \mdfboundingboxtotalheight% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{} + \relax}% + }% +}% +\def\mdf@frame@bottomline@first{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \ifbool{mdf@bottomline}% + {% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@middlelinewidth@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% +\def\mdf@putbox@first{% + \ifvoid\mdf@splitbox@two\relax + \else% + \mdf@makebox@out[\linewidth]% + {% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth} + {\wd\mdf@splitbox@two}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr + \mdfboundingboxwidth + +\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + \relax}% + \setlength{\mdfboundingboxheight} + {\dimexpr + \ht\mdf@splitbox@two + +\dp\mdf@splitbox@two + \relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr + \dp\mdf@splitbox@two + +\mdf@splitbottomskip@length + \relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr + \mdfboundingboxheight + +\mdf@innertopmargin@length% + +\mdf@splitbottomskip@length + \relax}% + \setlength{\@tempdima}% + {\dimexpr + \mdfboundingboxtotalwidth% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \relax}% + \mdf@makebox@in[\@tempdima]% + {% + \null% + \ifbool{mdf@leftline}% + {% + \hspace*{\mdf@middlelinewidth@length}% + \mdf@frame@leftline@first% + }{}% + \ifbool{mdf@everyline}% + {% + \mdf@frame@bottomline@first% + }{}% + \ifbool{mdf@topline}% + {% + \mdf@frame@topline@first% + }{}% + \mdf@frame@background@first% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@first}% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}% + {% + \mdf@frame@rightline@first% + }{}% + {\box\mdf@splitbox@two}% + }% + \mdf@extra% + \mdf@firstextra% + \mdf@makeboxalign@right% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@putbox@second,mdf@frame@background@second,^^A +% mdf@frame@leftline@second,mdf@frame@bottomline@second,^^A +% mdf@frame@rightline@second} +% The last frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\mdf@frame@background@second{% + \ifbool{mdf@shadow}% + {% + \rlap% + {% + \smash% + {% + \mdf@shadow@default% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@shadowsize@length + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{} + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + +\mdf@shadowsize@length + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\dimexpr + \mdfboundingboxtotalheight + +\mdf@shadowsize@length + \relax}% + }% + }% + }{}% + \rlap% + {% + \mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@frametitlebackground@second{% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + }% + {%repeating title = false -- maybe splitted + \ifdimless{\mdfframetitleboxtotalheight}{\z@}% + {}% + {% + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + }% + }% +}% +\def\mdf@frame@leftline@second{% + \llap% + {% + \mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@bottomline@second{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@middlelinewidth@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdf@middlelinewidth@length}% + }% +}% +\def\mdf@frame@rightline@second{% + \rlap% + {% + \mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@topline@second{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \ifbool{mdf@topline}% + {% + \rule[\dimexpr + \mdfboundingboxheight + -\mdfboundingboxdepth% + +\mdf@innerbottommargin@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% + +\def\mdf@putbox@second{% + \ifvoid\mdf@splitbox@one\relax% + \else + \mdf@makebox@out% + {% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}% + {\wd\mdf@splitbox@one}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr + \mdfboundingboxwidth + +\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + \relax}% + \setlength{\mdfboundingboxheight}% + {\dimexpr + \ht\mdf@splitbox@one + +\dp\mdf@splitbox@one + \relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr + \dp\mdf@splitbox@one + +\mdf@innerbottommargin@length + \relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr + \mdfboundingboxheight + +\mdf@innerbottommargin@length + \relax}% + \setlength{\@tempdima}% + {\dimexpr + \mdfboundingboxtotalwidth% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \relax}% + \mdf@makebox@in[\@tempdima]% + {% + \null% + \ifbool{mdf@leftline}% + {% + \hspace*{\mdf@middlelinewidth@length}% + \mdf@frame@leftline@second% + }{}% + \ifbool{mdf@everyline}% + {% + \mdf@frame@topline@second + }{}% + \mdf@frame@background@second% + \ifbool{mdf@bottomline}% + {% + \mdf@frame@bottomline@second% + }{}% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@second}% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}% + {% + \mdf@frame@rightline@second% + }{}% + {\box\mdf@splitbox@one}% + }% + \mdf@extra% + \mdf@secondextra% + \mdf@makeboxalign@right% + }% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@putbox@middle,mdf@frame@background@middle,^^A +% mdf@frame@leftline@middle,mdf@frame@rightline@middle} +% The last frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\mdf@frame@leftline@middle{% + \llap% + {% + \mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@background@middle{% + \ifbool{mdf@shadow}% + {% + \rlap% + {% + \smash% + {% + \mdf@shadow@default% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@shadowsize@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + +\mdf@shadowsize@length + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdfboundingboxtotalheight}% + }% + }% + }{}% + \rlap% + {% + \mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@frametitlebackground@middle{% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + }% + {%repeating title = false -- maybe splitted + \ifdimless{\mdfframetitleboxtotalheight}{\z@}% + {}% + {% + \rlap% + {% + \mdf@frametitlebackground@default% + \rule[\dimexpr + -\mdfboundingboxdepth + +\mdfboundingboxtotalheight + -\mdfframetitleboxtotalheight + \relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=-\p@\relax% + }% + }% +}% +\def\mdf@frame@rightline@middle{% + \rlap% + {% + \mdf@linecolor@default% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalheight}% + }% +}% +\def\mdf@frame@topline@middle{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \ifbool{mdf@topline}% + {% + \rule[\dimexpr + \mdfboundingboxtotalheight + -\mdfboundingboxdepth + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% +\def\mdf@frame@bottomline@middle{% + \rlap% + {% + \ifbool{mdf@leftline}% + {% + \hspace*{-\mdf@middlelinewidth@length}% + }{}% + \mdf@linecolor@default% + \ifbool{mdf@bottomline}% + {% + \rule[\dimexpr + -\mdfboundingboxdepth + -\mdf@middlelinewidth@length + \relax]% + {\dimexpr + \mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{} + \relax}% + {\mdf@middlelinewidth@length}% + }{}% + }% +}% + +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two\relax% + \else + \mdf@makebox@out% + {% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth} + {\wd\mdf@splitbox@two}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr + \mdfboundingboxwidth + +\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + \relax}% + \setlength{\mdfboundingboxheight} + {\dimexpr + \ht\mdf@splitbox@two + +\dp\mdf@splitbox@two + \relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr + \dp\mdf@splitbox@two + +\mdf@splitbottomskip@length + \relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr + \mdfboundingboxheight + +\mdf@splitbottomskip@length + \relax}% + \setlength{\@tempdima} + {\dimexpr + \mdfboundingboxtotalwidth% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \relax}% + \mdf@makebox@in[\@tempdima]% + {% + \null% + \ifbool{mdf@leftline}% + {% + \hspace*{\mdf@middlelinewidth@length}% + \mdf@frame@leftline@middle% + }{}% + \mdf@frame@background@middle% + \ifbool{mdf@everyline}% + {% + \mdf@frame@topline@middle + }{}% + \ifdefempty{\mdf@frametitle}{} + {\mdf@frame@frametitlebackground@middle}% + \ifbool{mdf@everyline}% + {% + \mdf@frame@bottomline@middle% + }{}% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}% + {% + \mdf@frame@rightline@middle% + }{}% + {\box\mdf@splitbox@two}% + }% + \mdf@extra% + \mdf@middleextra% + \mdf@makeboxalign@right% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \endinput +% \end{macrocode} +% +% \iffalse +%</mdframedefault> +% \fi +% +% +%\iffalse +% \begin{macrocode} +%<*mdframetikz> +% \end{macrocode} +%\fi +% \subsection{The Explanation of md-frame-1.mdf} +% \begin{macrocode} +%% Style file for mdframed for package option `framemethod=tikz` +%% +%% 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. +%% +% +% \end{macrocode} +% \changes{v1.1beta}{2011/12/16}{added lost semicolons} +% \begin{macro}{mdframedIpackagename} +% local settings +% \begin{macrocode} +\def\mdframedIpackagename{md-frame-1} +\ProvidesFile{md-frame-1.mdf}% + [\mdfmaindate\ % + \mdversion: \mdframedIpackagename] +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@tikz@settings} +% Define settings for tikz +% \begin{macrocode} +%Allgemeine Einstellungen fuer tikz +\def\mdf@tikz@settings{% +% +%% \mdf@testdraftmode% + \tikzset{mdfbox/.style={anchor=south west,% + inner sep=0pt,% + outer sep=0pt,% + \mdf@fontcolor,% + }% + }% anchor der Ausgabebox ist unten links + \tikzset{mdfcorners/.style={rounded corners=\mdf@roundcorner@length}}% + \tikzset{mdfbackground/.style={fill=\mdf@backgroundcolor,% + draw=none,% + }% + }% + \tikzset{mdfframetitlebackground/.style=% + {% + fill=\mdf@frametitlebackgroundcolor,% + draw=none,% + rounded corners={max(\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length,0)% + }% + }% + }% +% + \tikzset{mdfouterline/.style={}}% +% nur wenn outerlinewidth>0 wird aussere Linie gezeichnet + \ifdimgreater{\mdf@outerlinewidth@length}{\z@} + {\tikzset{mdfouterline/.append style={% + draw=\mdf@outerlinecolor,% + line width=2\mdf@outerlinewidth@length+\mdf@middlelinewidth@length}}}{}% +% + \tikzset{mdfinnerline/.style={}}% +% nur wenn innerlinewidth>0 wird innere Linie gezeichnet + \ifdimgreater{\mdf@innerlinewidth@length}{\z@} + {\tikzset{mdfinnerline/.append style={% + draw=\mdf@innerlinecolor,% + line width=2\mdf@innerlinewidth@length+\mdf@middlelinewidth@length}}}{}% +% + \tikzset{mdfshadow/.style={drop shadow={% + shadow xshift=\mdf@shadowsize@length-2pt, + shadow yshift=-\mdf@shadowsize@length+2pt, + fill=\mdf@shadowcolor, + every shadow }}}% +% + \mdf@tikzset@local% + \tikzset{mdfmiddleline/.style={}}% +% nur wenn middlelinewidth>0 wird mittlere Linie gezeichnet + \ifdimgreater{\mdf@middlelinewidth@length}{\z@} + {\tikzset{mdfmiddleline/.append style={% + preaction={draw=\mdf@middlelinecolor,% + line width=\mdf@middlelinewidth@length},% + line width=\mdf@middlelinewidth@length,% + tikzsetting}}% + }{}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@tikzbox@tfl,mdf@tikzbox@otl} +% Befehle fuer Ausgabe von Rahmen und Hintergrund +% \begin{macrocode} +\newrobustcmd*\mdf@tikzbox@tfl[1]{%three or four borders + \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% + \begin{scope}[mdfcorners]% + \clip[preaction=mdfouterline]% + [postaction=mdfbackground]% + [postaction=mdfinnerline]#1;% + \end{scope}% + \path[mdfmiddleline,mdfcorners]#1; + }% + + + +\newrobustcmd*\mdf@tikzbox@otl[2]{%one or two borders + \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% + \begin{scope} + \path[mdfouterline,mdfcorners]#1;% + \clip[postaction=mdfbackground]#2;% + \path[mdfinnerline,mdfcorners]#1;% + \end{scope}% + \path[mdfmiddleline,mdfcorners]#1;}% +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{mdf@drawframe@whole} +% Befehle fuer Ausgabe von Rahmen und Hintergrund +% \begin{macrocode} +\newrobustcmd*\mdf@drawframe@whole{% + \mdf@test@ltrb{\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)--cycle}}{}% + \mdf@test@ltb{\mdf@tikzbox@tfl{(P|-O)--(O)--(O|-P)--(P)}}{}% + \mdf@test@trb{\mdf@tikzbox@tfl{(O|-P)--(P)--(P|-O)--(O)}}{}% + \mdf@test@ltr{\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}{}% + \mdf@test@lrb{\mdf@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}{}% + \mdf@test@lb{\mdf@tikzbox@otl{(P|-O)--(O)--(O|-P)}% + {(P)--(P|-O)[mdfcorners]--(O)--(O|-P)}% + }{}% + \mdf@test@rb{\mdf@tikzbox@otl{(P)--(P|-O)--(O)}% + {(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}% + }{}% + \mdf@test@tr{\mdf@tikzbox@otl{(O-|P)--(P)--(P-|O)}% + {(O)--(O|-P)[mdfcorners]--(P)--(P|-O)}% + }{}% + \mdf@test@lt{\mdf@tikzbox@otl{(O)--(O|-P)--(P)}% + {(P|-O)--(O)[mdfcorners]--(O|-P)--(P)}% + }{}% + \mdf@test@lr{\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@tb{\mdf@tikzbox@otl{(O)--(O-|P)(O|-P)--(P)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@l{\mdf@tikzbox@otl{(O)--(O|-P)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@r{\mdf@tikzbox@otl{(O-|P)--(P)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@t{\mdf@tikzbox@otl{(O|-P)--(P)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@b{\mdf@tikzbox@otl{(O)--(O-|P)}% + {(O)rectangle(P)}% + }{}% + \mdf@test@noline{\path[mdfbackground,mdfcorners](O)rectangle(P);}{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@predtikzcalc,mdf@innertikzcalc} +% Before the output can start some calculations before \Env{tikzpicture} +% starts are neccessary. +% \begin{macrocode} +\newrobustcmd*\mdf@predtikzcalc{% + %%width + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxwidth}}% + {innerleftmargin,innerrightmargin}% + \ifbool{mdf@leftline}{% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxwidth}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + \ifbool{mdf@rightline}{% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxwidth}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + %%height + \setlength\mdfboundingboxheight% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxheight}}% + {innertopmargin,innerbottommargin}% + \ifbool{mdf@topline}{% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + \ifbool{mdf@bottomline}{% + \mdf@dolist{\mdf@advancelength@add{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% +} + +\newrobustcmd*\mdf@innertikzcalc{% + \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\mdf@Ay{+\mdf@innerbottommargin@length}% + \pgfmathsetlengthmacro\mdf@Ox{+0pt}% + \pgfmathsetlengthmacro\mdf@Oy{+0pt}% + \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% + \ifbool{mdf@leftline}% + {% + \pgfmathsetlengthmacro\mdf@Ax% + {\mdf@Ax+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}% + {% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@bottomline}% + {% + \pgfmathsetlengthmacro\mdf@Ay% + {\mdf@Ay+\mdf@outerlinewidth@length+\mdf@middlelinewidth@length% + +\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\mdf@Oy% + {\mdf@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@topline}% + {% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@put@frametitlerule} +% frametitlerule with tikz +% \begin{macrocode} +\tikzset{mdfframetitlerule/.style={% + draw=none, + fill=\mdf@frametitlerulecolor, + }% +} +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{\hspace*{-\mdf@innerleftmargin@length}% + \begingroup% + \pgfmathsetlength{\dimen@}{\mdfframetitleboxwidth + +\mdf@innerleftmargin@length + +\mdf@innerrightmargin@length}% + \tikz\draw[mdfframetitlerule] (0,0)% + rectangle (\dimen@,\mdf@frametitlerulewidth@length); + \endgroup} + }% + }{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{} + }% + }% + \iftoggle{mdf@notfirstframetitle}% + {% + \par\unskip\vskip\mdf@splittopskip@length% + }% + {% + \par\unskip\vskip\mdf@innertopmargin@length% + }% +}% + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@single} +% Output of the non breakable contents. +% \begin{macrocode} +% Info zu den verwendeten Punkten: +% O ist die untere linke Ecke der Mitte der middleline +% P ist die obere rechte Ecke der Mitte der middleline +% A ist der Punkt fuer den anchor (d.h. die untere linke Ecke) der Ausgabebox +% +\def\mdf@putbox@single{% + \ifvoid\mdf@splitbox@one + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \mdf@tikz@settings% + \mdf@predtikzcalc% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture]% + \mdf@innertikzcalc + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \ifbool{mdf@shadow} + {\path[mdfshadow,mdfcorners](O) rectangle (P);}{}% + \begin{scope} + \begin{scope}[use as bounding box] + \mdf@drawframe@whole + \drawbrackgroundframetitle@single + \end{scope} + \node[mdfbox] (mdfframe) at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one}; + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \mdf@extra% + \mdf@singleextra% + \mdfcreateextratikz + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi% +}% + +\def\drawbrackgroundframetitle@single{% + \ifdefempty{\mdf@frametitle}{}{% + \drawbrackgroundframetitle@@single% + }% +}% +\def\drawbrackgroundframetitle@@single{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \pgfmathsetlengthmacro\mdf@Fy% + {\mdf@Py-\mdfframetitleboxtotalheight}% + \path[mdfframetitlebackground]% + (\mdf@Ox,\mdf@Fy)--(\mdf@Ox,\mdf@Py)--(\mdf@Px,\mdf@Py)--(\mdf@Px,\mdf@Fy); + \end{scope} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@first} +% Output of the first breakable contents. +% \begin{macrocode} +\def\drawbrackgroundframetitle@first{% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length-.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} + }% + {% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight}% + {% + \drawbrackgroundframetitle@@first + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}{-\p@}% + }{\mdf@PackageWarning% + {You got a page break inside the frame title\MessageBreak + Currently this isn't well supported}% + \drawbrackgroundframetitle@@first + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}% + {\mdfframetitleboxtotalheight + -\mdfboundingboxheight + -\mdf@innerlinewidth@length + -0.5\mdf@middlelinewidth@length% + +\mdf@frametitlebelowskip@length + +\mdf@splitbottomskip@length +%% +\mdf@splittopskip@length +%% -\dp\strutbox% + }% + }% + }% + }% + }% +}% +% +\def\drawbrackgroundframetitle@@first{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {max(0,\mdf@Py-\mdfframetitleboxtotalheight)} + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope}% +}% +% +\def\mdf@putbox@first{% + \ifvoid\mdf@splitbox@two + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + %Special for first frame -- used other savebox + \let\mdf@splitbox@one\mdf@splitbox@two% + \mdf@tikz@settings% + %Special for first frame -- no innerbottommargin but splitbottomskip + \let\mdf@innerbottommargin@length\mdf@splitbottomskip@length + \mdf@predtikzcalc%calc with all lines + %Special for first frame -- no bottom line without everyline true + % if every line false -- test if bottomline is in use and remove the width + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@bottomline}{% + \mdf@dolist{\mdf@advancelength@sub{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + }% + \ifdimgreater{\pagegoal-\maxdimen}{0pt}{}{\enlargethispage{\baselineskip}}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \mdf@innertikzcalc + %Special for first frame -- no bottom line without everyline true + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@bottomline}% + {% + \pgfmathsetlengthmacro\mdf@Ay% + {\mdf@Ay-\mdf@outerlinewidth@length-\mdf@middlelinewidth@length% + -\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\mdf@Oy% + {\mdf@Oy-\mdf@outerlinewidth@length + -0.5\mdf@middlelinewidth@length}% + }{}% + }% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \ifbool{mdf@shadow} + {\path[mdfshadow] (O) -- (O|-P) to[mdfcorners] (P) -- (P|-O) -- (O);}{}% + \begin{scope} + \begin{scope}[use as bounding box] + %Special for first frame + \ifbool{mdf@everyline}{}{% + \mdfsetup{bottomline=false}% + } + \mdf@drawframe@whole + \drawbrackgroundframetitle@first + \end{scope} + \node[mdfbox] (mdfframe) at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \mdf@extra% + \mdf@firstextra% + \mdfcreateextratikz% + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@middle} +% Output of the middle breakable contents. +% \begin{macrocode} +\def\drawbrackgroundframetitle@middle{% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@everyline}% + {% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length} + }{}% + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} + }% + {% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}% + {% + \drawbrackgroundframetitle@@middle% + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}{-\p@}% + }% + }% + }% +}% +\def\drawbrackgroundframetitle@@middle{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \path[mdfframetitlebackground,rounded corners=\z@] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +}% +% +\def\drawbrackgroundframetitle@@middle{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \path[mdfframetitlebackground,rounded corners=\z@] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +}% +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \mdf@tikz@settings% + %Special for middle frame -- used other savebox + \let\mdf@splitbox@one\mdf@splitbox@two% + %Special for middle frame -- no innertopmargin -- done by splittopskip + % in box and no bottommargin instead splitbottomskip + \setlength{\mdf@innertopmargin@length}{\z@}% + \let\mdf@innerbottommargin@length\mdf@splitbottomskip@length + \mdf@predtikzcalc% + %Special for middle frame -- remove topline and bottomline if no everyline + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@topline}{% + \mdf@dolist{\mdf@advancelength@sub{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + \ifbool{mdf@bottomline}{% + \mdf@dolist{\mdf@advancelength@sub{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + }% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \mdf@innertikzcalc% + %Special for middle frame + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@bottomline}% + {% + \pgfmathsetlengthmacro\mdf@Ay% + {\mdf@Ay-\mdf@outerlinewidth@length-\mdf@middlelinewidth@length% + -\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\mdf@Oy% + {\mdf@Oy-\mdf@outerlinewidth@length + -0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@topline}% + {% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + }{}% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \ifbool{mdf@shadow}{\path[mdfshadow](O) rectangle (P);}{}% + \begin{scope} + \begin{scope}[use as bounding box] + %%Special for middle frame + \ifbool{mdf@everyline}{}{\mdfsetup{topline=false,bottomline=false}}% + \mdf@drawframe@whole + \drawbrackgroundframetitle@middle + \end{scope} + \node[mdfbox] (mdfframe) at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% + \end{scope} + \mdf@extra% + \mdf@middleextra% + %HIER KOMMT EIN WEITERES MAKRO + \mdfcreateextratikz + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@second} +% Output of the last breakable contents. +% \begin{macrocode} +\def\drawbrackgroundframetitle@second{% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@everyline}% + {% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length} + }{}% + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} + }% + {% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}% + {% + \drawbrackgroundframetitle@@second% + }% + }% + }% +}% +% +\def\drawbrackgroundframetitle@@second{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight}% + \path[mdfframetitlebackground,rounded corners=\z@] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +}% +\def\mdf@putbox@second{% + \ifvoid\mdf@splitbox@one + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \mdf@tikz@settings% + %Special for middle frame -- no innertopmargin -- done by splittopskip + \setlength{\mdf@innertopmargin@length}{\z@}% + \mdf@predtikzcalc% + %Special for second frame -- no top line without everyline true + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@topline}{% + \mdf@dolist{\mdf@advancelength@sub{\mdfboundingboxheight}}% + {innerlinewidth,middlelinewidth,outerlinewidth}}{}% + }% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \mdf@innertikzcalc + %Special for second frame + \ifbool{mdf@everyline}{}{% + \ifbool{mdf@topline}% + {% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + }% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% + \ifbool{mdf@shadow} + {% + \path[mdfshadow] (O|-P) to[mdfcorners] (O) to[mdfcorners] (P|-O) + -- (P) -- (O|-P);% + }{}% + \begin{scope} + \begin{scope}[use as bounding box] + \ifbool{mdf@everyline}{}{\mdfsetup{topline=false}}% + \mdf@drawframe@whole + \drawbrackgroundframetitle@second + \end{scope} + \node[mdfbox] (mdfframe) at (\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one};% + \end{scope} + \mdf@extra% + \mdf@secondextra% + %HIER KOMMT EIN WEITERES MAKRO + \mdfcreateextratikz + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi% +}% + + +% +% \begin{macro}{mdf@drawsubtitleaboveline,mdf@drawsubtitlebelowline,^^A +% mdf@drawsubtitlebackground} +% +% \begin{macrocode}% +\tikzset{mdfsubtitleaboverule/.style={% + draw=none, + fill=\mdf@subtitleabovelinecolor, + }% +} + +\tikzset{mdfsubtitlebelowrule/.style={% + draw=none, + fill=\mdf@subtitlebelowlinecolor, + }% +} + +\tikzset{mdfsubtitlebackground/.style={% + draw=\mdf@subtitlebackgroundcolor, + fill=\mdf@subtitlebackgroundcolor, + }% +} + +\tikzset{mdfsubsubtitleaboverule/.style={% + draw=none, + fill=\mdf@subsubtitleabovelinecolor, + }% +} + +\tikzset{mdfsubsubtitlebelowrule/.style={% + draw=none, + fill=\mdf@subsubtitlebelowlinecolor, + }% +} + +\tikzset{mdfsubsubtitlebackground/.style={% + draw=none, + fill=\mdf@subsubtitlebackgroundcolor, + }% +} + +%default: +\def\mdf@drawsubtitleaboveline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \tikz\draw[mdfsubsubtitleaboverule](0,0) rectangle + (\mdf@templength,\mdf@subtitleabovelinewidth@length);% + }% +} +\def\mdf@drawsubtitlebelowline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \tikz\draw[mdfsubsubtitleaboverule](0,0) rectangle + (\mdf@templength,\mdf@subtitlebelowlinewidth@length);% + }% +} +\def\mdf@drawsubtitlebackground{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \tikz\draw[overlay,mdfsubtitlebackground](0,0) rectangle + (\mdf@templength,-\mdfsubtitleheight);% + }% +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \endinput +% \end{macrocode} +% \iffalse +%</mdframetikz> +% \fi +% +% +%\iffalse +% \begin{macrocode} +%<*mdframepstricks> +% \end{macrocode} +%\fi +% \subsection{The Explanation of md-frame-2.mdf / md-frame-3.mdf} +% \begin{macrocode} +%% Style file for mdframed for package option `framemethod=pstricks` +%% +%% 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. +%% +% +% \end{macrocode} +% +% \begin{macro}{mdframedIIpackagename} +% local settings +% \begin{macrocode} +\def\mdframedIIpackagename{md-frame-2} +\ProvidesFile{md-frame-2.mdf}% + [\mdfmaindate\ % + \mdversion: \mdframedIIpackagename] +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@ptlength@to@pscode,ptTps} +% Command to calculate a latex length to postscript +% \begin{macrocode} +\def\mdf@ptlength@to@pscode#1{\pst@number{#1} \pst@number\psxunit div } +\def\mdf@ptlength@to@pscode@length#1{% + \pst@number{\csname mdf@#1@length\endcsname} + \pst@number\psxunit div\space} +\let\ptTps\mdf@ptlength@to@pscode\relax +\let\ptTpsL\mdf@ptlength@to@pscode@length\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdfbackgroundstyle,mdflinestyle,^^A +% mdfframetitlerule,mdfframetitlebackground} +% background and line settings for pstricks +% \begin{macrocode} +\def\mdfpstricks@settings{%expand by \addtopsstyle + \newpsstyle{mdfbackgroundstyle}% + {linecolor=\mdf@backgroundcolor,fillstyle=solid,% + fillcolor=\mdf@backgroundcolor,linestyle=none,% + ,dimen=middle,% + }% +% + \newpsstyle{mdfframetitlebackgroundstyle}{% + linecolor=\mdf@frametitlebackgroundcolor, + fillcolor=\mdf@frametitlebackgroundcolor, + fillstyle=solid,linestyle=none, + linearc=\ifdimgreater{\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length} + {\z@}{\dimexpr\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length}{\z@}, + } +% + \newpsstyle{mdfouterlinestyle}{linestyle=none}% + \ifdimgreater{\mdf@outerlinewidth@length}{\z@} + {\newpsstyle{mdfouterlinestyle}{% + linecolor=\mdf@outerlinecolor,% + linewidth=\dimexpr2\mdf@outerlinewidth@length + +\mdf@middlelinewidth@length\relax, + dimen=middle, + }}{}% +% + \newpsstyle{mdfinnerlinestyle}{linestyle=none}% + \ifdimgreater{\mdf@innerlinewidth@length}{\z@}% + {\newpsstyle{mdfinnerlinestyle}{% + linecolor=\mdf@innerlinecolor,% + linewidth=\dimexpr2\mdf@innerlinewidth@length + +\mdf@middlelinewidth@length\relax, + dimen=middle, + }}{}% +% + \newpsstyle{mdfmiddlelinestyle}{linestyle=none}% + \newpsstyle{mdfshadow}{shadow=true,shadowcolor=\mdf@shadowcolor, + shadowsize=\mdf@shadowsize@length}% + \ifdimgreater{\mdf@middlelinewidth@length}{\z@}% + {\newpsstyle{mdfmiddlelinestyle}{% + linewidth=\mdf@middlelinewidth@length,% + linecolor=\mdf@middlelinecolor,dimen=middle + }}{}% +\mdfpstricks@appendsettings +}% +% +\newrobustcmd*\mdf@pstricksbox@fl[2]{%four lines + \psframe[style=mdfouterlinestyle](#1)(#2)%aussen=3mm + \psframe[style=mdfbackgroundstyle](#1)(#2)%Hintergrund + \psclip{\psframe[style=mdfmiddlelinestyle](#1)(#2)} + \psframe[style=mdfinnerlinestyle](#1)(#2)%innere=3mm + \endpsclip + \psframe[style=mdfmiddlelinestyle](#1)(#2)%mittlere=2mm + }% +\newrobustcmd*\mdf@pstricksbox@tl[1]{%three lines + \psline[style=mdfouterlinestyle]#1%aussen=3mm + \psline[style=mdfbackgroundstyle]#1%Hintergrund + \psclip{\psline[style=mdfmiddlelinestyle]#1} + \psline[style=mdfinnerlinestyle]#1%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm + }% +\newrobustcmd*\mdf@pstricksbox@tcl[2]{%two combined lines +%%#1 background comple +%%#2 line path + \psline[style=mdfouterlinestyle]#2%aussen=3mm + \psline[style=mdfbackgroundstyle]#2%Hintergrund + \psclip{\pscustom[linestyle=none]{ + \psline[style=mdfmiddlelinestyle]#2 + \psline[linestyle=none,linearc=0pt]#1} + } + \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund + \psline[style=mdfinnerlinestyle]#2%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#2%mittlere=2mm +}% +\newrobustcmd*\mdf@pstricksbox@tncl[2]{%two not combined lines + \begingroup + \psset{linearc=0pt} + \psline[style=mdfouterlinestyle](mdf@O)#1%aussen=3mm + \psline[style=mdfouterlinestyle](mdf@P)#2%aussen=3mm + \psclip{ + \pscustom[linestyle=none]{% + \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm + \psline[linestyle=none](mdf@O)#2 + \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm + \psline[linestyle=none](mdf@P)#1 + }% + }% + \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund + \psline[style=mdfinnerlinestyle](mdf@O)#1%innere=3mm + \psline[style=mdfinnerlinestyle](mdf@P)#2%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm + \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm + \endgroup +}% +\newrobustcmd*\mdf@pstricksbox@ol[1]{%one line + \begingroup + \psset{linearc=0pt} + \psline[style=mdfouterlinestyle]#1%aussen=3mm + \psline[style=mdfbackgroundstyle]#1%Hintergrund + \psclip{\pscustom[linestyle=none]{ + \psline[style=mdfmiddlelinestyle]#1 + \psframe[linestyle=none,fillstyle=none,dimen=inner](mdf@O)(mdf@P) + }} + \psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P) + \psline[style=mdfinnerlinestyle]#1%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm + \endgroup% +}% + +% +\newpsstyle{mdfframetitlerule}{% + linecolor=\mdf@frametitlerulecolor,% + fillcolor=\mdf@frametitlerulecolor,% + fillstyle=solid,dimen=outer,% +} +% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@put@frametitlerule} +% frametitlerule with pstricks +% \begin{macrocode} +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{% + \begingroup% + \begin{pspicture}(0,0)(0,\mdf@frametitlerulewidth@length) + \psframe[style=mdfframetitlerule]% + (!\ptTpsL{innerleftmargin} neg 0)% + (!\ptTpsL{innerrightmargin} + \ptTps{\mdfframetitleboxwidth} add + \ptTpsL{frametitlerulewidth}) + \end{pspicture} + \endgroup}% + }% + }{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{} + }% + }% + \iftoggle{mdf@notfirstframetitle}% + {% + \par\unskip\vskip\mdf@splittopskip@length% + }% + {% + \par\unskip\vskip\mdf@innertopmargin@length% + }% +}% +% +% +% \begin{macro}{mdf@drawsubtitleaboveline,mdf@drawsubtitlebelowline,^^A +% mdf@drawsubtitlebackground} +% +% \begin{macrocode} +%default: +\def\mdf@drawsubtitleaboveline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \begin{pspicture}(0,0)(\mdf@templength,\mdf@subtitleabovelinewidth@length) + \psframe[style=mdfsubtitleaboverule]% + (0,0)(\mdf@templength,\mdf@subtitleabovelinewidth@length)% + \end{psicture}% + }% +} +\def\mdf@drawsubtitlebelowline{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \begin{pspicture}(0,0)(\mdf@templength,\mdf@subtitlebelowlinewidth@length) + \psframe[style=mdfsubtitlebelowrule]% + (0,0)(\mdf@templength,\mdf@subtitleabovelinewidth@length)% + \end{psicture}% + }% +} +\def\mdf@drawsubtitlebackground{% + \rlap{% + \hspace*{-\mdf@innerleftmargin@length}% + \begin{pspicture}(0,0)(0,0) + \psframe[style=mdfsubtitlebackground]% + (0,0)(\mdf@templength,-\mdfsubtitleheight)% + \end{psicture}% + }% +} + +\newpsstyle{mdfsubtitleaboverule}{% + linecolor=\mdf@subtitleabovelinecolor, + fillcolor=\mdf@subtitleabovelinecolor, + fillstyle=solid,dimen=outer,% +} + +\newpsstyle{mdfsubtitlebelowrule}{% + linecolor=\mdf@subtitlebelowlinecolor, + fillcolor=\mdf@subtitlebelowlinecolor, + fillstyle=solid,dimen=outer,% +} + +\newpsstyle{mdfsubtitlebackground}{% + linecolor=\mdf@subtitlebackgroundcolor, + fillcolor=\mdf@subtitlebackgroundcolor, + fillstyle=solid,linestyle=none, +} + +\newpsstyle{mdfsubsubtitleaboverule}{% + linecolor=\mdf@subtitleabovelinecolor, + fillcolor=\mdf@subtitleabovelinecolor, + fillstyle=solid,dimen=outer,% +} + +\newpsstyle{mdfsubsubtitlebelowrule}{% + linecolor=\mdf@subtitlebelowlinecolor, + fillcolor=\mdf@subtitlebelowlinecolor, + fillstyle=solid,dimen=outer,% +} + +\newpsstyle{mdfsubsubtitlebackground}{% + linecolor=\mdf@subtitlebackgroundcolor, + fillcolor=\mdf@subtitlebackgroundcolor, + fillstyle=solid,linestyle=none, +} + +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% +% +% +% +% \begin{macro}{mdf@putbox@single} +% Single output +% \begin{macrocode} +% Info zu den verwendeten Punkten: +% O ist die untere linke Ecke der Mitte der middleline +% P ist die obere rechte Ecke der Mitte der middleline +% A ist der Punkt fuer den anchor (d.h. die untere linke Ecke) der Ausgabebox +\def\mdf@putbox@single{% + \ifvoid\mdf@splitbox@one\relax + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% +% + \setlength\mdfboundingboxheight% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% +% + \setlength\mdftotallinewidth{\dimexpr\mdf@innerlinewidth@length% + +\mdf@middlelinewidth@length + +\mdf@outerlinewidth@length\relax}% + \psset{unit=1truecm}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length) + {mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A}% + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A}% + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O}% + }{}% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% + \ifbool{mdf@shadow} + {\psframe[style=mdfshadow](mdf@O)(mdf@P)}{} +% \psclip{% + %Four lines + \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} + %three lines + \mdf@test@ltb{% + \mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \mdf@test@trb{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@ltr{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% + \mdf@test@lrb{% + \mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %two lines combinded + \mdf@test@lb{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \mdf@test@rb{\mdf@pstricksbox@tcl% + {(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + \mdf@test@tr{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@lt{\mdf@pstricksbox@tcl% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + %two lines not combinded combinded + \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} + }{} + \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} + }{} + %single line + \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{} +% } + %Frametitlebackground + \drawbrackgroundframetitle@single + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@one} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} +% +% \endpsclip + \mdf@extra% + \mdf@singleextra + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +\def\drawbrackgroundframetitle@single{% + \ifdefempty{\mdf@frametitle}{}{% + \drawbrackgroundframetitle@@single% + }% +}% +\def\drawbrackgroundframetitle@@single{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@first} +% First output +% \begin{macrocode} +\def\mdf@putbox@first{% + \ifvoid\mdf@splitbox@two + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + %\ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight% + {\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% +%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + }{}% +%%%%%%%%%%%%%% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolute}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \psset{unit=1truecm}% + \ifdimgreater{\mdfboundingboxheight}{\vsize} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% +%%%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A}% + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O}% + }{}% + }{}% +%%%%%%%%%% + \ifbool{mdf@shadow} + {\pscustom[style=mdfshadow,linestyle=none]{% + \psline[linejoin=2,linecap=1,]% + (mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)% + \psline[linejoin=2,linecap=1,linearc=\z@]% + (mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O) + \closedshadow + } + }{} +% \psclip{ +%%%%%%%%%%%%% + \ifbool{mdf@everyline}{% + %Four lines + \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} + %three lines + \mdf@test@ltb{% + \mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \mdf@test@trb{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@ltr{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% + \mdf@test@lrb{% + \mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %two lines combinded + \mdf@test@lb{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \mdf@test@rb{\mdf@pstricksbox@tcl% + {(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + \mdf@test@tr{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@lt{\mdf@pstricksbox@tcl% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + %two lines not combinded combinded + \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} + }{} + \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} + }{} + %single line + \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }{% + %Four or Three lines + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@ltr}}% + {\mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}% + {}% + %two combinded lines + \ifboolexpr{test {\mdf@test@ltb} or test {\mdf@test@lt}} + {\mdf@pstricksbox@tcl{(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \ifboolexpr{test {\mdf@test@trb} or test {\mdf@test@tr}}% + {\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + %two not combinded lines + \ifboolexpr{test {\mdf@test@lrb} or test {\mdf@test@lr}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{} + %single line + \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@t}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@lb} or test {\mdf@test@l}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@rb} or test {\mdf@test@r}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@b{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }% +% } + %Frametitlebackground + \drawbrackgroundframetitle@first + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@two} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} +% \endpsclip + \mdf@extra% + \mdf@firstextra% + \end{pspicture} + }% + \mdf@makeboxalign@right% + }% + \fi +}% +\def\drawbrackgroundframetitle@first{% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \drawbrackgroundframetitle@@@first + }% + {% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight}% + {% + \drawbrackgroundframetitle@@first + \global\mdfframetitleboxtotalheight=-\p@% + }{\mdf@PackageWarning{You got a page break inside the frame + title\MessageBreak + Currently this isn't well supported}% + \drawbrackgroundframetitle@@first + \global\mdfframetitleboxtotalheight=\dimexpr + \mdfframetitleboxtotalheight + -\mdfboundingboxheight + -\mdf@innerlinewidth@length + -0.5\mdf@middlelinewidth@length% + +\mdf@frametitlebelowskip@length + +\mdf@splitbottomskip@length + +\mdf@splittopskip@length + +\dp\strutbox\relax% + }% + }% + }% +}% +\def\drawbrackgroundframetitle@@first{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight} + {\nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}}% + {\nodexn{(mdf@O)}{mdf@F}}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} +\def\drawbrackgroundframetitle@@@first{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@middle} +% Middle output +% \begin{macrocode} +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% +% \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight% + {\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% +%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + }{}% +%%%%%%%%%%%%%% + \psset{unit=1truecm}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \ifdimgreater{\mdfboundingboxheight}{\vsize} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} + \mdfpstricks@settings% + \psset{linearc=0pt,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + %%%% + \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + %% +%%%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A}% + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O}% + }{}% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% + }{}% +%%%%%%%%%% + %% + \ifbool{mdf@shadow} + {\psframe[style=mdfshadow](mdf@O)(mdf@P)}{} +%%%%%%%%%%%%% + \ifbool{mdf@everyline}{% + %Four lines + \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} + %three lines + \mdf@test@ltb{% + \mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \mdf@test@trb{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@ltr{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% + \mdf@test@lrb{% + \mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %two lines combinded + \mdf@test@lb{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \mdf@test@rb{\mdf@pstricksbox@tcl% + {(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + \mdf@test@tr{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@lt{\mdf@pstricksbox@tcl{(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + %two lines not combinded combinded + \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} + }{} + \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} + }{} + %single line + \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }{% + \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{}% + \ifboolexpr{bool {mdf@leftline} and not (bool {mdf@rightline})}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and bool {mdf@rightline}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% + {\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }% + %Frametitlebackground + \drawbrackgroundframetitle@middle + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@two} + %\psdot(mdf@A)\uput[90](mdf@A){mdf at A} + %\psdot(mdf@P)\uput[90](mdf@P){mdf at P} + %\psdot(mdf@O)\uput[90](mdf@O){mdf at O} + \mdf@extra% + \mdf@middleextra% + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +\def\drawbrackgroundframetitle@middle{% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \drawbrackgroundframetitle@@@middle + }% + {% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}% + {% + \drawbrackgroundframetitle@@middle + \global\mdfframetitleboxtotalheight=-\p@\relax% + }% + }% + }% +}% +\def\drawbrackgroundframetitle@@middle{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle,linearc=\z@]% + (mdf@O|mdf@F)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@F)% + \endgroup +} +\def\drawbrackgroundframetitle@@@middle{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@everyline}% + {% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@second} +% Last output +% \begin{macrocode} +\def\mdf@putbox@second{ + \ifvoid\mdf@splitbox@one + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% +% \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% +%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + }{}% +%%%%%%%%%%%%%% + \psset{unit=1truecm}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length) + {mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A} + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O} + }{}% +%%%%%%%%%%% + \ifbool{mdf@everyline}{% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% + }{}% +%%%%%%%%%% + %% + \ifbool{mdf@shadow} + {\pscustom[style=mdfshadow,linestyle=none]{% + \psline[linejoin=2,linecap=1,](mdf@O|mdf@P)(mdf@O)% + (mdf@P|mdf@O)(mdf@P)% + \psline[linejoin=2,linecap=1,linearc=\z@](mdf@O|mdf@P)(mdf@P) + \closedshadow + } + }{} +%%%%%%%%%%%%% + \ifbool{mdf@everyline}{% + %Four lines + \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} + %three lines + \mdf@test@ltb{% + \mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \mdf@test@trb{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@ltr{% + \mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% + \mdf@test@lrb{% + \mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %two lines combinded + \mdf@test@lb{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \mdf@test@rb{\mdf@pstricksbox@tcl% + {(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + \mdf@test@tr{\mdf@pstricksbox@tcl% + {(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@lt{\mdf@pstricksbox@tcl% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + %two lines not combinded combinded + \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} + }{} + \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} + }{} + %single line + \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }{% + %Four + Three + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@lrb}}% + {\mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %Two combinded + \ifboolexpr{test {\mdf@test@ltb} or test {\mdf@test@lb}}% + {\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \ifboolexpr{test {\mdf@test@trb} or test {\mdf@test@rb}}% + {\mdf@pstricksbox@tcl{(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + %Two not combinded + \ifboolexpr{test {\mdf@test@ltr} or test {\mdf@test@lr}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{}% + %one line + \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@b}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + \ifboolexpr{test {\mdf@test@lt} or test {\mdf@test@l}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@tr} or test {\mdf@test@r}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@t{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + }% + %Frametitlebackground + \drawbrackgroundframetitle@second + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@one} + \mdf@extra% + \mdf@secondextra +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +\def\drawbrackgroundframetitle@second{% + \ifdefempty{\mdf@frametitle}{}% + {% + \ifbool{mdf@repeatframetitle}% + {%repeating title = true + \drawbrackgroundframetitle@@@second + }% + {% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}{% + \drawbrackgroundframetitle@@second + }% + }% + }% +}% +\def\drawbrackgroundframetitle@@second{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle,linearc=\z@]% + (mdf@O|mdf@F)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@F)% + \endgroup +} +\def\drawbrackgroundframetitle@@@second{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@everyline}% + {% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \endinput +%eof +% \end{macrocode} +% \iffalse +%</mdframepstricks> +% \fi +% +% +% +%\iffalse +% \begin{macrocode} +%<*mdframed-example-default> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-default} +% +% \begin{macrocode} +%Documenation of the package mdframed +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + + + +\lstset{style=lstltxmdf} + +\newcommand\Loadedframemethod{default} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} with the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage +\Examplesec{very simple} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,linewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,bottomline=false} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{colored frame title} +\begin{tltxmdfexample*} + +\global\mdfapptodefinestyle{exampledefault}{% + rightline=true,innerleftmargin=10,innerrightmargin=10, + frametitlerule=true,frametitlerulecolor=green, + frametitlebackgroundcolor=yellow, + frametitlerulewidth=2pt} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{framed picture which is centered} +\begin{tltxmdfexample*}[morekeywords=width] +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,linewidth=4pt] +\textit{CTAN lion drawing by Duane Bibby; thanks to \url{www.ctan.org}} +\IfFileExists{ctan-lion.png}% + {\includegraphics[width=\linewidth]{ctan-lion.png}}% + {\rule{\linewidth}{4cm}}% +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Theorem environments} +\begin{tltxmdfexample*}[morekeywords={theoremstyle,definition}] +\mdfdefinestyle{theoremstyle}{% + linecolor=red,linewidth=2pt,% + frametitlerule=true,% + frametitlebackgroundcolor=gray!20, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition} +\ExampleText +\end{definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{tltxmdfexample*} + +\Examplesec{theorem with separate header and the help of TikZ (complex)} +\begin{tltxmdfexample*}[% + morekeywords={theo,baseline,anchor,outer,sep,current,bounding,box,east},% + moretexcs=tikz] +\newcounter{theo}[section] +\newenvironment{theo}[1][]{% + \stepcounter{theo}% + \ifstrempty{#1}% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo};}} + }% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo:~#1};}}% + }% + \mdfsetup{innertopmargin=10pt,linecolor=blue!20,% + linewidth=2pt,topline=true, + frametitleaboveskip=\dimexpr-\ht\strutbox\relax,} + \begin{mdframed}[]\relax% + }{\end{mdframed}} +\begin{theo}[Inhomogeneous Linear] +\ExampleText +\end{theo} + +\begin{theo} +\ExampleText +\end{theo} +\end{tltxmdfexample*} + + +\Examplesec{hide only a part of a line} +The example below is inspired by the following post on StackExchange +\href{http://tex.stackexchange.com/questions/24101/theorem-decorations^^A + -that-stay-with-theorem-environment}% + {Theorem decorations that stay with theorem environment} +\begin{tltxmdfexample*}[morekeywords={mdf@frame@leftline@single,mdf@frame@rightline@single,% + mdf@frame@leftline@first,mdf@frame@rightline@first,% + mdf@frame@leftline@second,mdf@frame@rightline@second,% + mdf@frame@leftline@middle,mdf@frame@rightline@middle,% + mdfboundingboxdepth,mdfboundingboxtotalheight,% + mdf@topline,ifbool,interruptrule,everyline}] +\makeatletter +\newlength{\interruptlength} +\newrobustcmd\interruptrule[3]{% + \color{#1}% + \hspace*{\dimexpr\mdfboundingboxwidth+ + \mdf@innerrightmargin@length\relax}% + \rule[\dimexpr-\mdfboundingboxdepth+ + #2\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight-#3\interruptlength\relax}% +} +\newrobustcmd\overlaplines[2][white]{% + \mdfsetup{everyline=false}% + \setlength{\interruptlength}{#2} + \appto\mdf@frame@leftline@single{\llap{\interruptrule{#1}{1}{2}}} + \appto\mdf@frame@rightline@single{\rlap{\interruptrule{#1}{1}{2}}} + \appto\mdf@frame@leftline@first{\llap{\interruptrule{#1}{0}{1}}} + \appto\mdf@frame@rightline@first{\rlap{\interruptrule{#1}{0}{1}}} + \appto\mdf@frame@leftline@second{\llap{\interruptrule{#1}{1}{1}}} + \appto\mdf@frame@rightline@second{\rlap{\interruptrule{#1}{1}{1}}} + \appto\mdf@frame@leftline@middle{\llap{\interruptrule{#1}{0}{0}}} + \appto\mdf@frame@rightline@middle{\rlap{\interruptrule{#1}{0}{0}}} +} +\makeatother + +\overlaplines{2.5ex} +\begin{mdframed}[linecolor=blue,linewidth=8pt] +\ExampleText +\end{mdframed} +\overlaplines[blue!70!black!20]{2.5ex} +\begin{mdframed}[linecolor=blue,linewidth=8pt] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} +\end{document} + \endinput +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</mdframed-example-default> +% \end{macrocode} +%\fi +% +%\iffalse +% \begin{macrocode} +%<*mdframed-example-tikz> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-tikz} +% +% \begin{macrocode} +%Documenation of the package mdframed +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + +\newcommand\Loadedframemethod{TikZ} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage +\Examplesec{round corner} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + outerlinewidth=5pt,innerlinewidth=0pt, + outerlinecolor=red,roundcorner=5pt +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,leftline=false,} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + + +\Examplesec{framed picture which is centered} +\begin{tltxmdfexample*} +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,middlelinewidth=4pt,roundcorner=5pt] +\textit{CTAN lion drawing by Duane Bibby; thanks to \url{www.ctan.org}} +\IfFileExists{ctan-lion.png}% + {\includegraphics[width=\linewidth]{ctan-lion.png}}% + {\rule{\linewidth}{4cm}}% +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Gimmick} +\begin{tltxmdfexample*}[morekeywords={line,width,dash,dashed,pattern}] +\mdfsetup{splitbottomskip=0.8cm,splittopskip=0cm, + innerrightmargin=2cm,innertopmargin=1cm,% + innerlinewidth=2pt,outerlinewidth=2pt, + middlelinewidth=10pt,backgroundcolor=red, + linecolor=blue,middlelinecolor=gray, + tikzsetting={draw=yellow,line width=3pt,% + dashed,% + dash pattern= on 10pt off 3pt}, + rightline=false,bottomline=false} +\begin{mdframed} +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + + +\clearpage +\Examplesec{complex example with TikZ} + +\begin{tltxmdfexample*}[morekeywords={mdf}] +\tikzset{titregris/.style = + {draw=gray, thick, fill=white, shading = exersicetitle, % + text=gray, rectangle, rounded corners, right,minimum height=.7cm}} +\pgfdeclarehorizontalshading{exersicebackground}{100bp} + {color(0bp)=(green!40); color(100bp)=(black!5)} +\pgfdeclarehorizontalshading{exersicetitle}{100bp} + {color(0bp)=(red!40);color(100bp)=(black!5)} +\newcounter{exercise} +\renewcommand*\theexercise{Exercise~n\arabic{exercise}} +\makeatletter +\def\mdf@@exercisepoints{}%new mdframed key: +\define@key{mdf}{exercisepoints}{% + \def\mdf@@exercisepoints{#1} +} +\mdfdefinestyle{exercisestyle}{% + outerlinewidth=1em,outerlinecolor=white,% + leftmargin=-1em,rightmargin=-1em,% + middlelinewidth=1.2pt,roundcorner=5pt,linecolor=gray, + apptotikzsetting={\tikzset{mdfbackground/.append style ={% + shading = exersicebackground}}}, + innertopmargin=1.2\baselineskip, + skipabove={\dimexpr0.5\baselineskip+\topskip\relax}, + skipbelow={-1em}, + needspace=3\baselineskip, + frametitlefont=\sffamily\bfseries, + settings={\global\stepcounter{exercise}}, + singleextra={% + \node[titregris,xshift=1cm] at (P-|O) % + {~\mdf@frametitlefont{\theexercise}\hbox{~}}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}\hbox{~}};}% + }, + firstextra={% + \node[titregris,xshift=1cm] at (P-|O) % + {~\mdf@frametitlefont{\theexercise}\hbox{~}}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}\hbox{~}};}% + }, +} +\makeatother + +\begin{mdframed}[style=exercisestyle] +\ExampleText +\end{mdframed} + +\begin{mdframed}[style=exercisestyle,exercisepoints=10] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + + + +\clearpage +\Examplesec{Theorem environments} +\begin{tltxmdfexample*}[morekeywords={theoremstyle,definition}] +\mdfdefinestyle{theoremstyle}{% + linecolor=red,middlelinewidth=2pt,% + frametitlerule=true,% + apptotikzsetting={\tikzset{mdfframetitlebackground/.append style={% + shade,left color=white, right color=blue!20}}}, + frametitlerulecolor=green!60, + frametitlerulewidth=1pt, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{tltxmdfexample*} +\end{document} + \endinput + +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</mdframed-example-tikz> +% \end{macrocode} +%\fi +% +%\iffalse +% \begin{macrocode} +%<*mdframed-example-pstricks> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-pstricks} +% +% \begin{macrocode} +%Documenation of the package mdframed +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} + +\lstDeleteShortInline{|} +\newcommand\Loadedframemethod{PSTricks} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + + + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} + +\clearpage + +\Examplesec{very simple} +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,middlelinewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault,roundcorner=5] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + + +\Examplesec{hidden line + frame title} +\begin{tltxmdfexample*}[morekeywords={innerlinecolor,addtopsstyle,mdfouterlinestyle, + linestyle}] +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,rightline=false,bottomline=false, + frametitlerule=true,innertopmargin=6pt, + outerlinewidth=6pt,outerlinecolor=blue, + pstricksappsetting={\addtopsstyle{mdfouterlinestyle}{linestyle=dashed}}, + innerlinecolor=yellow,innerlinewidth=5pt}% +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Dash Lines}[morekeywords={pstrickssetting,linestyle,dashed}] +\begin{tltxmdfexample*} +\global\mdfdefinestyle{exampledefault}{% + pstrickssetting={linestyle=dashed,},linecolor=red,middlelinewidth=2pt} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Double Lines} +\begin{tltxmdfexample*}[morekeywords={addtopsstyle,mdfmiddlelinestyle, + doubleline,doublesep}] +\global\mdfdefinestyle{exampledefault}{% + pstricksappsetting={\addtopsstyle{mdfmiddlelinestyle}{% + doubleline=true,doublesep=6pt,linewidth=4pt}},% + linecolor=red,middlelinewidth=16pt} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{Shadow frame} +\begin{tltxmdfexample*}[morekeywords={shadow,shadowsize,myshadowbox}] +\newmdenv[shadow=true, + shadowsize=11pt, + linewidth=8pt, + frametitlerule=true, + roundcorner=10pt, + ]{myshadowbox} +\begin{myshadowbox}[frametitle={Inhomogeneous linear}] +\ExampleText +\end{myshadowbox} +\end{tltxmdfexample*} +\end{document} + \endinput +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</mdframed-example-pstricks> +% \end{macrocode} +%\fi +% +%\iffalse +% \begin{macrocode} +%<*mdframed-example-texsx> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-texsx} + +% \begin{macrocode} +%Documenation of the package mdframed +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt,lipsum=true]{ltxmdf} + +\usepackage{tikz} +\usetikzlibrary{calc,arrows,shadings,shadows} +\newcommand\Loadedframemethod{tikz} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + + + +\surroundwithmdframed[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfexample} + + +\newmdenv[middlelinecolor=ltxmdfblue,middlelinewidth=1pt,% + roundcorner=10pt,innertopmargin=0pt,% + leftmargin=1cm,rightmargin=1cm,% + innerleftmargin=-15pt,innerrightmargin=-15pt,% + ignorelastdescenders,% + settings={\lstset{resetmargins}},% + skipbelow=\topskip,skipabove=\topskip,% + innerbottommargin=0pt,backgroundcolor=gray!10]% + {tltxmdfhighlight} +\def\highlightinputenv{tltxmdfhighlight} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\date{\mdfmaindate} +\version{\mdversion} +\introduction{In this document I collect various examples for + \Opt{framemethod=\Loadedframemethod}. + Some presented examples are more or less exorbitant.} + +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is + the dependent variable, and $f$ is a given non-zero + function of the independent variables alone. +} + +\newcounter{examplecount} +\setcounter{examplecount}{0} +\renewcommand\thesubsection{} +\newcommand\Examplesec[1]{% +\stepcounter{examplecount}% +\subsection{Example~\arabic{examplecount}~--~#1\relax}% +} + +\begin{document} +\maketitle +\section{Loading} +In the preamble only the package \Pack{mdframed} width the option +\Opt{framemethod=\Loadedframemethod} is loaded. All other modifications will be +done by \Cmd{mdfdefinestyle} or \Cmd{mdfsetup}. + +{\large\color{red!50!black} +\NOTE Every \Cmd{global} inside the examples is necessary to work with my own +created environment \Env{tltxmdfexample*}.} + +\section{Examples} +All examples have the following settings: + +\begin{tltxmdfexample} +\mdfsetup{skipabove=\topskip,skipbelow=\topskip} +\newrobustcmd\ExampleText{% + An \textit{inhomogeneous linear} differential equation has the form + \begin{align} + L[v ] = f, + \end{align} + where $L$ is a linear differential operator, $v$ is the dependent + variable, and $f$ is a given non-zero function of the independent + variables alone. +} +\end{tltxmdfexample} +\clearpage +\Examplesec{Package listings} +The example below is inspired by the following post on StackExchange +\href{http://tex.stackexchange.com/questions/27673/background-overflows-^^A + when-using-rounded-corners-for-listings-package-listings}% + {Background overflows when using rounded corners for listings + (package: `listings`)} + +Here the solution which can be decorate as usual. + +\begin{tltxmdfexample}[moretexcs={BeforeBeginEnvironment,AfterEndEnvironment}, + morekeywords={lstlisting}] +\BeforeBeginEnvironment{lstlisting}{% + \begin{mdframed}[<modification>]% + \vspace{-0.7em}} +\AfterEndEnvironment{lstlisting}{% + \vspace{-0.5em}% + \end{mdframed}} +\end{tltxmdfexample} + +With the new command \Cmd{surroundwithmdframed} you can use +\begin{tltxmdfexample}[moretexcs={BeforeBeginEnvironment,AfterEndEnvironment}, + morekeywords={listings}] +\surroundwithmdframed{listings} +\end{tltxmdfexample} + +\clearpage +\Examplesec{Package multicol} +How I wrote in \enquote{Known Problems} you can't combine \Pack{multicol} with +\Pack{mdframed}. In a simple way without any breaks you can use: + +\begin{tltxmdfexample*}[morekeywords={multicols}] + \begin{multicols}{2} + \lipsum[1] + \begin{mdframed} + \ExampleText + \end{mdframed} + \lipsum[2] + \end{multicols} +\end{tltxmdfexample*} + +\clearpage +\twocolumn[\Examplesec{Working in twocolumn mode}] +\begin{tltxmdfexample*}[moretexcs={Examplesec}] +%\twocolumn[% +% \Examplesec{Working in twocolumn mode}] +\lipsum[1]\lipsum[2] +\begin{mdframed}[% + leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\end{tltxmdfexample*} + + + +\clearpage +\onecolumn +\Examplesec{Working inside enumerate} +\begin{tltxmdfexample*}[morekeywords={enumerate}] +Text Text Text Text Text Text Text Text +\begin{enumerate} +\item in the following \ldots + \begin{mdframed}[linecolor=blue,middlelinewidth=2] + \ExampleText + \end{mdframed} +\item \lipsum[2] +\end{enumerate} +Text Text Text Text Text Text +\end{tltxmdfexample*} + + +\Examplesec{Position a specific symbol at a line} +\begin{tltxmdfexample*} +\tikzset{ + warningsymbol/.style={ + rectangle,draw=red, + fill=white,scale=1, + overlay}} +\mdfdefinestyle{warning}{% + hidealllines=true,leftline=true, + skipabove=12,skipbelow=12pt, + innertopmargin=0.4em,% + innerbottommargin=0.4em,% + innerrightmargin=0.7em,% + rightmargin=0.7em,% + innerleftmargin=1.7em,% + leftmargin=0.7em,% + middlelinewidth=.2em,% + linecolor=red,% + fontcolor=red,% + firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% + singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$) + node[warningsymbol] {\$};},% +} +\begin{mdframed}[style=warning] +\ExampleText +\end{mdframed} +\end{tltxmdfexample*} + +\Examplesec{digression-environement inspired by Tobias Weh} +\begin{tltxmdfexample*}[morekeywords={% + font,anchor,let,in,arrow,round,cap,controls,coordinate,% + excursus,head,arrows,calc,line,width,and,to,digressionarrows,% + base,west},% + moretexcs={usetikzlibrary}] +\usetikzlibrary{calc,arrows} +\tikzset{ + excursus arrow/.style={% + line width=2pt, + draw=gray!40, + rounded corners=2ex, + }, + excursus head/.style={ + fill=white, + font=\bfseries\sffamily, + text=gray!80, + anchor=base west, + }, +} +\mdfdefinestyle{digressionarrows}{% + singleextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path let \p1=(Q), \p2=(O) in (\x1,{(\y1-\y2)/2}) coordinate (M); + \path [excursus arrow, round cap-to] + ($(O)+(5em,0ex)$) -| (M) |- % + ($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. % + ++(23em,2ex); + \node [excursus head] at ($(Q)+(2.5em,-0.75pt)$) {Digression};}, + firstextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow,-to] + (O) |- % + ($(Q)+(12em,0ex)$) .. controls +(0:16em) and +(185:6em) .. % + ++(23em,2ex); + \node [excursus head] at ($(Q)+(2.5em,-2pt)$) {Digression};}, + secondextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow,round cap-] + ($(O)+(5em,0ex)$) -| (Q);}, + middleextra={% + \path let \p1=(P), \p2=(O) in (\x2,\y1) coordinate (Q); + \path [excursus arrow] + (O) -- (Q);}, + middlelinewidth=2.5em,middlelinecolor=white, + hidealllines=true,topline=true, + innertopmargin=0.5ex, + innerbottommargin=2.5ex, + innerrightmargin=2pt, + innerleftmargin=2ex, + skipabove=0.87\baselineskip, + skipbelow=0.62\baselineskip, +} + +\begin{mdframed}[style=digressionarrows] + \ExampleText +\end{mdframed} +\end{tltxmdfexample*} + + +\Examplesec{Theorem style shading background} +\begin{tltxmdfexample*}[morekeywords={top,bottom,Theorem,shadow,alternativtheorem}] +%\usetikzlibrary{shadings,shadows}% loaded in the header +\mdtheorem[% + apptotikzsetting={% + \tikzset{mdfbackground/.append style ={% + top color=yellow!40!white, + bottom color=yellow!80!black}, + mdfframetitlebackground/.append style={ + top color=purple!40!white, + bottom color=purple!80!black + } + }% + }, + ,roundcorner=10pt,middlelinewidth=2pt, + shadow=true,frametitlerule=true,frametitlerulewidth=4pt, + innertopmargin=10pt,% + ]{alternativtheorem}{Theorem} +\begin{alternativtheorem}[Inhomogeneous linear] +\ExampleText +\end{alternativtheorem} +\end{tltxmdfexample*} +\end{document} + \endinput +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</mdframed-example-texsx> +% \end{macrocode} +%\fi +% +% +% +% \Finale +% +\endinput + + diff --git a/macros/latex/contrib/mdframed/mdframed.ins b/macros/latex/contrib/mdframed/mdframed.ins new file mode 100644 index 0000000000..3724fdbdeb --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed.ins @@ -0,0 +1,100 @@ +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +---------------------------------------------------------------- +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___| + +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +================================================== + +\endpreamble +\postamble + +================================================================ +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! + +================================================================ +\endpostamble +\usedir{tex/latex/mdframed} +\generate{\file{mdframed.sty}{\from{mdframed.dtx}{package}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-0.mdf}{\from{mdframed.dtx}{mdframedefault}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-1.mdf}{\from{mdframed.dtx}{mdframetikz}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-2.mdf}{\from{mdframed.dtx}{mdframepstricks}}} +\nopreamble\nopostamble\usedir{tex/latex/mdframed} +\generate{\file{md-frame-3.mdf}{\from{mdframed.dtx}{mdframepstricks}}} +\Msg{*********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the} +\Msg{* following file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space documentation.sty} +\Msg{*} +\Msg{* To produce the documentation run the file mdframed.dtx} +\Msg{* once through LaTeX. Then, run} +\Msg{*} +\Msg{* \space\space makeindex -s gglo.ist -o mdframed.gls mdframed.glo} +\Msg{* \space\space makeindex -s gind.ist mdframed.idx} +\Msg{*} +\Msg{* through makeIndex to produce the glossary.} +\Msg{* Finally, run PdfLaTeX once again.} +\Msg{*} +\Msg{* To create the examples run (pdf)latex on the tex-files.} +\Msg{*} +\Msg{* That's all!} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*********************************************************} +\endbatchfile + diff --git a/macros/latex/contrib/mdframed/mdframed.pdf b/macros/latex/contrib/mdframed/mdframed.pdf Binary files differnew file mode 100644 index 0000000000..c7974c9153 --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframed.pdf diff --git a/macros/latex/contrib/mdframed/mdframedmake.bat b/macros/latex/contrib/mdframed/mdframedmake.bat new file mode 100644 index 0000000000..0025945b1d --- /dev/null +++ b/macros/latex/contrib/mdframed/mdframedmake.bat @@ -0,0 +1,117 @@ +::################################################################ +::## Makefile for mdframed project folder (WINDOWS) +::## +::## $Id: mdframedmake.bat 427 2012-06-06 12:24:09Z marco $ +::################################################################ +@echo off +title Compiling mdframed.dtx (Windows) +:: +:: You can use a prompt to call a special mode of this file. +:: mdframedmake all -- standard mode, run docsty examples clean +:: mdframedmake docsty -- typesets the documentation and the package +:: mdframemdmake examples -- all example files +:: mdframedmake clean -- remove all helpfiles created by mdframed +:: +set mode=all +for %%I in (d docsty) do (if /I %%Ix equ %1x set mode=docsty) +for %%I in (e examples) do (if /I %%Ix equ %1x set mode=examples) +for %%I in (cx cleanx) do (if /I %%I equ %1x set mode=clean) +:: +call:%mode% +echo. +echo Finished +echo. +pause +goto:eof +:: +::############################ +::## Subroutines +::############################ +:: +:all +call:docsty mdframed +call:examples +call:clean +goto:eof +:: +:docsty + echo. + echo Typesetting %1.dtx + pdflatex --draftmode --interaction=nonstopmode %1.dtx >NUL + if not errorlevel 1 ( + echo comipilation in draftmode without errors + if exist %1.glo ( + makeindex -q -t %1.glolog -s gglo.ist -o %1.gls %1.glo >NUL + if not errorlevel 1 ( + echo compiliation of glossar without errors + ) else ( + echo compilation of glossar with errors + ) + ) + if exist %1.idx ( + makeindex -q -t %1.idxlog -s gind.ist %1.idx >NUL + if not errorlevel 1 ( + echo compiliation of index without errors + ) else ( + echo compilation of index with errors + ) + ) + pdflatex --interaction=nonstopmode %1.dtx >NUL + if not errorlevel 1 ( + echo Second pdflatex compiliation without errors + pdflatex --interaction=nonstopmode %1.dtx >NUL + ) else ( + echo Second pdflatex compiliation with errors + ) + ) else ( + echo compilation in draftmode with errors + ) + goto:eof +:: +:examples +call:pdf mdframed-example-default +call:pdf mdframed-example-tikz +call:ps mdframed-example-pstricks +call:pdf mdframed-example-texsx +goto:eof +:: +:pdf + echo. + echo Typesetting %1 + pdflatex --draftmode --interaction=nonstopmode %1.tex >NUL + if not errorlevel 1 ( + echo compilation in draftmode without errors + echo Run pdflatex again on %1.tex + pdflatex --interaction=nonstopmode %1.tex >NUL + echo Typesetting %1 finished + ) else ( + echo compilation in draftmode with errors) +goto:eof +:: +:ps + echo. + echo Typesetting %1 + latex -draftmode -interaction=nonstopmode %1.tex >NUL + if not errorlevel 1 ( + echo compilation in draftmode without errors + echo Run LaTeX again on %1.tex + latex -interaction=nonstopmode %1.tex >NUL + dvips -q %1.dvi + call ps2pdf %1.ps + echo Typesetting %1 finished + ) else ( + echo compilation in draftmode with errors) + goto:eof +:: +:clean + echo. + echo Removing help files + :: + for %%I in (aux dtxe dvi glo glolog gls hd ins idx idxlog ilg ind log out ps thm tmp toc xdv) do ( + if exist mdframed.%%I del mdframed.%%I + for %%J in (default tikz pstricks texsx) do ( + if exist mdframed-example-%%J.%%I del mdframed-example-%%J.%%I + ) + ) + echo Removing finished + goto:eof |