diff options
author | Karl Berry <karl@freefriends.org> | 2011-12-10 01:05:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-12-10 01:05:49 +0000 |
commit | 04a95cdae99b26ab45f6f002647b57d78eebf3c0 (patch) | |
tree | ee99a8ec53b89a2a0af8b47d0167a63f32502036 /Master/texmf-dist/source/latex/mdframed | |
parent | 905da44baf20b22b84b86c1a4cded85beb111531 (diff) |
mdframed (9dec11)
git-svn-id: svn://tug.org/texlive/trunk@24808 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/mdframed')
-rw-r--r-- | Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx | 923 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mdframed/mdframed.dtx | 3865 |
2 files changed, 4788 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx b/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx new file mode 100644 index 00000000000..5ca2c62ccef --- /dev/null +++ b/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx @@ -0,0 +1,923 @@ +% \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 (!new) +License type: lppl + +================================================================ +%</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 +\endpreamble +\postamble + +================================================================ +Copyright (C) 2011 by Marco Daniel + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Marco Daniel. + +Have fun! + +================================================================ +\endpostamble +\usedir{doc/latex/mdframed} +\generate{\file{mdframed-example-default.tex}{\from{mdframed-examples.dtx}{mdframed-example-default}}} +\generate{\file{mdframed-example-tikz.tex}{\from{mdframed-examples.dtx}{mdframed-example-tikz}}} +\generate{\file{mdframed-example-pstricks.tex}{\from{mdframed-examples.dtx}{mdframed-example-pstricks}}} +\generate{\file{mdframed-example-texsx.tex}{\from{mdframed-examples.dtx}{mdframed-example-texsx}}} +\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 documentation.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. Finally, run LaTeX once again.} +\Msg{* That's all!} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*********************************************************} +%</install> +%<install>\endbatchfile +%<*internal> +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +%</internal> +%<*driver> +%%$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\documentclass[parskip=false,11pt,]{ltxmdf} +\usepackage{mdframed} +\ltxmdfsetifoot $Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{717} +% +% \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-examples} +% +% +% +% \title{Examples of the \Pack{mdframed} package} +% \subtitle{auto-split frame environment} +% \author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}% +% \footnote{With thanks to Heiko Oberdiek, Rolf Niepraschk, +% Martin Scharrer and Herbert Voss.\newline Sorry for bad English.} +% \href{mailto:marco.daniel@mada-nada.de}{Elke Schubert}} +% \version{\mdversion} +% \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 +% The dtx-file creates only the files \begin{tabular}[t]{ll} +% \texttt{mdframed-example-default.tex} & +% \texttt{mdframed-example-tikz.tex} \\ +% \texttt{mdframed-example-pstricks.tex} & +% \texttt{mdframed-example-texsx.tex} +% \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 +% +% +% \section{Motivation} +% To complie the files use |Makefile| with |make EXAMPLES|. +%\StopEventually{^^A +% \PrintChanges^^A +%} +%\iffalse +% \begin{macrocode} +%<*mdframed-example-default> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-default} + +% \begin{macrocode} +%Documenation of the package mdframed +%%$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ + +\usepackage{showexpl} +\lstset{style=lstltxmdf,explpreset={pos=b,rframe={}},} + +\newcommand\Loadedframemethod{default} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\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 the package \Pack{showexpl}.} + +\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{LTXexample} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,linewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\Examplesec{hidden line + frame title} +\begin{LTXexample} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,rightline=true,bottomline=false} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{LTXexample} +\clearpage + +\Examplesec{colored frame title} +\begin{LTXexample} +\renewcommand\mdframedtitleenv[1]{% + \colorbox{green}{% + \parbox{\dimexpr\linewidth-6pt\relax}%6pt=linewidth + {\centering\bfseries #1}}% + \par\kern.5\baselineskip\noindent% + } +\global\mdfapptodefinestyle{exampledefault}{% + rightline=true,innerleftmargin=0,innerrightmargin=0} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\Examplesec{framed picture which is centered} +\begin{LTXexample} +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,linewidth=4pt] +\includegraphics[width=\linewidth]{donald-duck} +\end{mdframed} +\end{LTXexample} + +\Examplesec{theorem with separate header and the help of TikZ (complex)} +\begin{tltxmdfexample} +\makeatletter +\newcounter{theo}[section] +\newcommand*\newmdframedtitleenv[1]{% + \@afterindentfalse + {\parindent \z@ + \setlength{\parfillskip}{\z@ plus 1fil}% + \mdraggedtitle\nobreak% + \makebox[\linewidth][l]{% + \hspace*{-1\mdf@innerleftmargin@length}% + \rlap{\color{white}% + \hspace*{-1\mdf@middlelinewidth@length}% + \rule[\mdf@middlelinewidth@length]% + {\dimexpr\linewidth+1\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + +2\mdf@middlelinewidth@length\relax}% + {\dimexpr\ht\strutbox+.3333em\relax}% + }% + \rlap{\color{blue!20}% + \rule{\dimexpr\linewidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + {\mdf@middlelinewidth@length}}% + \hspace*{-1\mdf@middlelinewidth@length}% + \tikz[remember picture,baseline]% + \node[,draw = none, text = black,fill = blue!20,]% + {\mdf@frametitlefont\strut Theorem~\thetheo#1};\relax% + }% + \par\kern.5\baselineskip}% + \@afterheading} +\newenvironment{theo}[1][]{% + \let\mdframedtitleenv\newmdframedtitleenv% + \stepcounter{theo}% + \ifstrempty{#1}% + {\mdfsetup{frametitle={\strut}}}% + {\mdfsetup{frametitle={:~#1}}}% + \begin{mdframed}[innertopmargin=0pt,linecolor=blue!20,% + linewidth=2pt,topline=false,]% + }{\end{mdframed}} +\begin{theo}[Inhomogeneous Linear] +\ExampleText +\end{theo} + +\begin{theo} +\ExampleText +\end{theo} +\end{tltxmdfexample} +\makeatletter +\newcounter{theo}[section] +\newcommand*\newmdframedtitleenv[1]{% + \@afterindentfalse + {\parindent \z@ + \setlength{\parfillskip}{\z@ plus 1fil}% + \mdraggedtitle\nobreak% + \makebox[\linewidth][l]{% + \hspace*{-1\mdf@innerleftmargin@length}% + \rlap{\color{white}% + \hspace*{-1\mdf@middlelinewidth@length}% + \rule[\mdf@middlelinewidth@length]% + {\dimexpr\linewidth+1\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length + +2\mdf@middlelinewidth@length\relax}% + {\dimexpr\ht\strutbox+.3333em\relax}% + }% + \rlap{\color{blue!20}% + \rule{\dimexpr\linewidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + {\mdf@middlelinewidth@length}}% + \hspace*{-1\mdf@middlelinewidth@length}% + \tikz[remember picture,baseline]% + \node[,draw = none, text = black,fill = blue!20,]% + {\mdf@frametitlefont\strut Theorem~\thetheo#1};\relax% + }% + \par\kern.5\baselineskip}% + \@afterheading} +\newenvironment{theo}[1][]{% + \let\mdframedtitleenv\newmdframedtitleenv% + \stepcounter{theo}% + \ifstrempty{#1}% + {\mdfsetup{frametitle={\strut}}}% + {\mdfsetup{frametitle={:~#1}}}% + \begin{mdframed}[innertopmargin=0pt,linecolor=blue!20,% + linewidth=2pt,topline=false,]% + }{\end{mdframed}} + +\begin{theo}[Inhomogeneous Linear] +\ExampleText +\end{theo} + +\begin{theo} +\ExampleText +\end{theo} + +\clearpage +\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-that-stay-with-theorem-environment}{Theorem decorations that stay with theorem environment} +\begin{LTXexample} +\makeatletter +\newlength{\interruptlength} +\setlength{\interruptlength}{2.5ex} +\newrobustcmd\overlaplines{% + \appto\md@frame@leftline@single{% + \llap{\color{white}% + \rule[\dimexpr-\mdfboundingboxdepth% + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}% + +\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt} + +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}% + -2\interruptlength\relax}% + }% + }% + \appto\md@frame@rightline@single{% + \rlap{\color{white}% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[\dimexpr-\mdfboundingboxdepth% + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{} + +\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}% + +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt} + -2\interruptlength\relax}% + }% + } +} +\makeatother +\overlaplines + +\begin{mdframed}[linecolor=blue,linewidth=8pt] +\ExampleText +\end{mdframed} +\end{LTXexample} +\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 +%%$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ + +\usepackage{showexpl} +\lstset{style=lstltxmdf,explpreset={pos=b,rframe={}},} + +\newcommand\Loadedframemethod{TikZ} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\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 the package \Pack{showexpl}.} + +\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 +\ExampleText{round corner} +\begin{LTXexample} +\global\mdfdefinestyle{exampledefault}{% + outerlinewidth=5pt,innerlinewidth=0pt, + outerlinecolor=red,roundcorner=5pt +} +\begin{mdframed}[style=exampledefault] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\Examplesec{hidden line + frame title} +\begin{LTXexample} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,leftline=false,} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{LTXexample} +\clearpage +\Examplesec{framed picture which is centered} +\begin{LTXexample} +\begin{mdframed}[userdefinedwidth=6cm,align=center, + linecolor=blue,middlelinewidth=4pt,roundcorner=5pt] +\includegraphics[width=\linewidth]{donald-duck} +\end{mdframed} +\end{LTXexample} + +\Examplesec{Gimmick} +\begin{LTXexample} +\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{LTXexample} + +\Examplesec{complex example with TikZ} + +\begin{tltxmdfexample} +\tikzstyle{titregris} = + [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{} +\define@key{mdf}{exercisepoints}{% + \def\mdf@@exercisepoints{#1} +} +\renewrobustcmd\mdfcreateextratikz{% + \node[titregris,xshift=1cm] at (P-|O) % + {~\mdf@frametitlefont{\theexercise}~}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}~};}% +} +\makeatother + +\mdfdefinestyle{exercisestyle}{% + outerlinewidth=1pt, + innerlinewidth=0pt, + roundcorner=2pt, + linecolor=gray, + tikzsetting={shading = exersicebackground}, + innertopmargin=1.2\baselineskip, + skipabove={\dimexpr0.5\baselineskip+\topskip\relax}, + needspace=3\baselineskip, + frametitlefont=\sffamily\bfseries, + settings={\global\stepcounter{exercise}}, + } + +\begin{mdframed}[style=exercisestyle,] +\ExampleText +\end{mdframed} + +\begin{mdframed}[style=exercisestyle,exercisepoints=10] +\ExampleText +\end{mdframed} +\end{tltxmdfexample} + +\tikzstyle{titregris} = + [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{} +\define@key{mdf}{exercisepoints}{% + \def\mdf@@exercisepoints{#1} +} +\renewrobustcmd\mdfcreateextratikz{% + \node[titregris,xshift=1cm] at (P-|O) {~\textbf{\theexercise}~}; + \ifdefempty{\mdf@@exercisepoints}% + {}% + {\node[titregris,left,xshift=-1cm] at (P)% + {~\mdf@frametitlefont{\mdf@@exercisepoints points}~};}% +} +\makeatother + +\mdfdefinestyle{exercisestyle}{% + outerlinewidth=1pt, + innerlinewidth=0pt, + roundcorner=2pt, + linecolor=gray, + tikzsetting={shading = exersicebackground}, + innertopmargin=1.2\baselineskip, + skipabove={\dimexpr0.5\baselineskip+\topskip\relax}, + needspace=3\baselineskip, + frametitlefont=\sffamily\bfseries, + settings={\global\stepcounter{exercise}}, + } + +\begin{mdframed}[style=exercisestyle,] +\ExampleText +\end{mdframed} + +\begin{mdframed}[style=exercisestyle,exercisepoints=10] +\ExampleText +\end{mdframed} + +\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 +%%$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ + + + +\lstDeleteShortInline{|} +\newcommand\Loadedframemethod{PSTricks} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\usepackage{showexpl} +\lstset{style=lstltxmdf,explpreset={pos=b,rframe={}},} + + + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\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 the package \Pack{showexpl}.} +X +\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{LTXexample} +\global\mdfdefinestyle{exampledefault}{% + linecolor=red,linewidth=3pt,% + leftmargin=1cm,rightmargin=1cm +} +\begin{mdframed}[style=exampledefault,roundcorner=5] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\Examplesec{hidden line + frame title} +\begin{LTXexample} +\global\mdfapptodefinestyle{exampledefault}{% + topline=false,rightline=false,bottomline=false} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\clearpage + +\Examplesec{Dash Lines} +\begin{LTXexample} +\global\mdfdefinestyle{exampledefault}{% + pstrickssetting={linestyle=dashed,},linecolor=red,linewidth=5pt} +\begin{mdframed}[style=exampledefault,] +\ExampleText +\end{mdframed} +\end{LTXexample} + +\Examplesec{Double Lines} +\begin{LTXexample} +\global\mdfdefinestyle{exampledefault}{% + pstrickssetting={doubleline=true,doublesep=3pt}, + linecolor=red,linewidth=5pt} +\begin{mdframed}[style=exampledefault,] +\ExampleText +\end{mdframed} +\end{LTXexample} +\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 +%%$Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt,ltxlipsum]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed-examples.dtx 270 2011-12-09 12:19:09Z marco $ + +\usepackage{showexpl} +\lstset{style=lstltxmdf,explpreset={pos=b,rframe={}},} + +\newcommand\Loadedframemethod{default} +\usepackage[framemethod=\Loadedframemethod]{mdframed} + +\title{The \Pack{mdframed} package} +\subtitle{Examples for \Opt{framemethod=\Loadedframemethod}} +\author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}} +\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 the package \Pack{showexpl}.} + +\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-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} + +\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{LTXexample} +\begin{multicols}{2} +\lipsum[1] +\begin{mdframed} +\ExampleText +\end{mdframed} +\lipsum[2] +\end{multicols} +\end{LTXexample} +\clearpage +\twocolumn[\Examplesec{Working in twocolumn mode}] +\begin{tltxmdfexample} +\twocolumn[% + \Examplesec{Working in + twocolumn mode}] +\lipsum[2] +\begin{mdframed}[% + leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\end{tltxmdfexample} +\lipsum[2]\lipsum[2] +\begin{mdframed}[leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\onecolumn +\Examplesec{Working inside enumerate} +\begin{LTXexample} +Text Text Text Text Text Text Text Text +\begin{enumerate} +\item in the following \ldots + \begin{mdframed}[linecolor=blue,linewidth=2] + \ExampleText + \end{mdframed} +\item \lipsum[2] +\end{enumerate} +Text Text Text Text Text Text +\end{LTXexample} +\end{document} + \endinput +% \end{macrocode} +% +%\iffalse +% \begin{macrocode} +%</mdframed-example-texsx> +% \end{macrocode} +%\fi +% +% \Finale +% +\endinput + diff --git a/Master/texmf-dist/source/latex/mdframed/mdframed.dtx b/Master/texmf-dist/source/latex/mdframed/mdframed.dtx new file mode 100644 index 00000000000..159db0781be --- /dev/null +++ b/Master/texmf-dist/source/latex/mdframed/mdframed.dtx @@ -0,0 +1,3865 @@ +% \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 current development is available at github: +https://github.com/marcodaniel/mdframed + +================================================================ +The package provides two dtx files, one Makefile and +one documentclass. 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-examples.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 +- ltxmdf.cls +- donald-duck.jpg + +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 + + +/source/latex/mdframed/ +- Makefile +- mdframed.dtx +- mdframed-examples.dtx +- donald-duck.jpg + +/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 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) 2011 by Marco Daniel + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +Marco Daniel. + +Have fun! + +================================================================ +\endpostamble +\usedir{tex/latex/mdframed} +\generate{\file{mdframed.sty}{\from{mdframed.dtx}{package}}} +\nopreamble\nopostamble +\generate{\file{md-frame-0.mdf}{\from{mdframed.dtx}{mdframedefault}}} +\nopreamble\nopostamble +\generate{\file{md-frame-1.mdf}{\from{mdframed.dtx}{mdframetikz}}} +\nopreamble\nopostamble +\generate{\file{md-frame-2.mdf}{\from{mdframed.dtx}{mdframepstricks}}} +\nopreamble\nopostamble +\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 documentation.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. Finally, run LaTeX once again.} +\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}}} +\ifx\fmtname\nameofplainTeX + \expandafter\endbatchfile +\else + \expandafter\endgroup +\fi +%</internal> +%<*driver> +%%$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,11pt,]{ltxmdf} +\usepackage[framemethod=TikZ]{mdframed} +\ltxmdfsetifoot$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{mdframed.dtx} +\end{document} +%</driver> +% \fi +% +% CheckSum{3478} +% +% \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} +% +% \changes{v1.0a}{2011/11/26}{Created dtx and fixes bugs} +% +% \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}% +% \footnote{With thanks to Heiko Oberdiek, Rolf Niepraschk, +% Martin Scharrer and Herbert Voss.\newline Sorry for bad English.} +% \href{mailto:marco.daniel@mada-nada.de}{Elke Schubert}}} +% \version{\mdversion} +% \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. +% +% +% %\newtheorem{mdtheorem}{Theorem}[section] +% \newmdtheoremenv[outerlinewidth=2,leftmargin=40,rightmargin=40,% +% backgroundcolor=yellow,outerlinecolor=blue,innertopmargin=0pt,% +% splittopskip=\topskip,skipbelow=\baselineskip,% +% skipabove=\baselineskip,ntheorem,roundcorner=5pt]{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} + \newmdtheoremenv[outerlinewidth=2,leftmargin=40,% + rightmargin=40,backgroundcolor=yellow,% + outerlinecolor=blue,innertopmargin=0pt,% + splittopskip=\topskip,skipbelow=\baselineskip,% + skipabove=\baselineskip,ntheorem]{theorem}% + {Theorem}[section] + \begin{theorem}[Pythagorean theorem] + ... + \end{theorem} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% +% \section{Syntax}\label{sec:syntax} +% The package itself loads the packages \Pack{kvoptions}, \Pack{etoolbox} and \Pack{color}. +% By setting the correct options \Pack{mdframed} will load \Pack{xcolor}, \Pack{tikz} or \Pack{pstricks}. +% +% Load the package as usual: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} +% \usepackage[<GLOBAL OPTIONS>]{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% 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} +% I added a detection of \Pack{float} or \Pack{minipage} environments. If you use \Pack{mdframed} in such an environment \Pack{mdframed} will use the option \Opt{nobreak} automaticly. +% +% \minisec{Twoside-mode} +% When you are using \Pack{mdframed} inside \Pack{twoside} mode you can set the option \Opt{innermargin} +% and \Opt{outermargin} (see section \ref{optlength}). +% +% %%%%%%%%%%%%%%%%%%%%%%% +% \section{Commands}\label{sec:cmds} +% The following commands should countenance your by the handling with \Pack{mdframed} +% +% \ExplCmd{newmdenv} 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 simply use: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \newmdenv[linecolor=red,frametitle=Infobox]{infobox} + ... + \begin{infobox}[backgroundcolor=yellow] + foo foo foo foo foo foo + \end{infobox} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% \ExplCmd{renewmdenv} By using this command you can redefine environments which are created by \Cmd{newmdenv}. +% +% \ExplCmd{newmdtheoremenv} +% Since the package is often used to highlight theorem environments, I have created a command\footnote{Thanks to Martin Scharrer and Enrico Gregorio:\newline \href{http://tex.stackexchange.com/questions/26298/own-command-to-create-new-environment}{Own command to create new environment}} 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{mdfsetup}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. +% +% \ExplCmd{mdfdefinestyle} \Cmd{mdfdefinestyle} allows the user to define different styles and use as an option of \Pack{mdframed} via \Opt{style}. The option \Opt{style} is explained in section \ref{genopt}. +% +% Here a small example: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[morekeywords={mystyle}] + \mdfdefinestyle{mystyle}{leftmargin=0pt,% + linecolor=blue} + .... + \begin{mdframed}[style=mystyle] + foo + \end{mdframed} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% +% \ExplCmd{mdfapptodefinestyle} This commands allows to expand 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}} +% +% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% \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 option 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{table}[!ht] +% \centering +% \renewcommand*\arraystretch{1.3} +% \caption{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{table} +% +% \noindent{\small\textbf{FYI}\qquad It is independently whether the \texttt{method} is written with no, one or more capital letter.} +% +% \NOTE The manipulation of the frames depends on the option \Opt{framemethod}. For further information see below. +% +% \subsection{Global and Local Options} +% The options listed below can be set globally or locally and they are not limited to the preamble. +% +% \subsubsection{Options with lengths}\label{optlength} +% +% In figure \eqref{fig:laengen} you can see the adjustable lengths which will be described below. +% 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}. +% The figure shows three different colored frames. Only \Opt{framemethod=tikz} is able to draw such triple lines. +% +% I know that the predefined lengths are not well prepared. Maybe I will change it later. +% +% \ExplOpt[pt]{defaultunit} see the sentence above. +% +% \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[0pt]{skipabove} Sets an additional skip above the frame. +% \ExplOpt[0pt]{skipbelow} Sets an additional skip below the frame. +% \ExplOpt[]{margin} This option is not longer supported. Use \Opt{leftmargin} +% and \Opt{rightmargin} instead. +% \ExplOpt[0pt]{leftmargin} Sets the length of the left margin of the environment. +% \ExplOpt[0pt]{rightmargin} Sets the length of the right margin of the environment. +% +% \ExplOpt[10pt]{innerleftmargin} Sets the length of the inner left margin of the environment. +% \ExplOpt[10pt]{innerrightmargin} Sets the length of the inner right margin of the environment. +% \ExplOpt[.4\textbackslash baselineskip]{innertopmargin} Sets the length of the inner top margin of the environment. +% \ExplOpt[.4\textbackslash baselineskip]{innerbottommargin} Sets the length of the inner bottom margin of the environment. +% +% \paragraph*{The following lengths are not shown in figure \eqref{fig:laengen}.} +% +% \mbox{} +% \ExplOpt[0pt]{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{outermargin} Sets the length of the outer margin. This option is only available in \texttt{twoside}-mode. +% \ExplOpt{innermargin} Sets the length of the inner margin. This option is only available in \texttt{twoside}-mode. +% +% +% \ExplOpt[0pt]{splittopskip} Sets the length of the skip above the split part of the environment. +% \ExplOpt[0pt]{splitbottomskip} Sets the length of the skip below the split part of the environment. +% \ExplOpt[0.4pt]{linewidth} Sets the width of the line around the environment. +% \ExplOpt[0pt]{roundcorner} Sets the size of the radius of the corners of the frames. +% \limitation[TikZ or PSTricks] +% \ExplOpt[0pt]{innerlinewidth} Sets the width of the inner line around the environment. +% \limitation +% \ExplOpt[0pt]{outerlinewidth} Sets the width of the outer line around the environment. +% \limitation +% \ExplOpt[linewidth]{middlelinewidth} Sets the width of the middle line around the environment.\limitation +% +% +% \subsubsection{Colored Options} +% \ExplOpt[black]{linecolor} Sets the color of the line around the environment. +% \ExplOpt[white]{backgroundcolor} Sets the color of the background of the environment. +% \ExplOpt[black]{fontcolor} Sets the color of the contents of the environment. +% \ExplOpt[linecolor]{innerlinecolor} Sets the color of the inner line around the environment. +% \limitation +% \ExplOpt[\newline linecolor]{middlelinecolor} Sets the color of the middle line around the environment. \limitation +% \ExplOpt[\newline linecolor]{outerlinecolor} Sets the color of the outer line around the environment.\limitation +% +% +% \subsubsection{General options}\label{genopt} +% +% \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\newline \Cmd{theorempostskipamount} to 0\;pt. +% +% \ExplOpt[false]{nobreak} Sometimes it is useful to prevent a frame from splitting. The \Opt{nobreak} option is used for this purpose. If you activate this option you can enable it by setting \Opt{nobreak=false}. +% +% +% \ExplOpt[0pt]{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{style} If you define a special style with \Cmd{mdfdefinstyle} you can use the key \Opt{style} to load the style. \Pack{mdframed} has no predefined styles. +% +% %%\ExplOpt[none]{settings} With version 0.9 of the package \Pack{mdframed} this option was added. This option allows the user to commit some macros. An example is shown in the appendix. +% +% %\ExplOpt[none]{printheight} This key allows the entries \texttt{none}, \texttt{info} or \texttt{warning}. In relation to the key the vertical space at the beginning of the environment \Pack{mdframed} on the current page will be printed in the \texttt{log} file. +% +% \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: \Opt{left}, \Opt{right} and \Opt{center}. 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. +% +% \ExplOpt[none]{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. +% \limitation[PSTricks] +% \ExplOpt[none]{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. +% \limitation +% +% \ExplOpt[none]{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\}} +% \end{itemize} +% \textbf{Before you change one please have a look at the file \texttt{md-frame-1.mdf} to see the settings.}\limitation +% +% \subsection{Hidden Lines} +% +% +% \ExplOpt[true]{topline} Draws a line at the top. +% \ExplOpt[true]{bottomline} Draws a line at the bottom. +% \ExplOpt[true]{leftline} Draws a line on the left. +% \ExplOpt[true]{rightline} Draws a line on the right. +% +% \ExplOpt[false]{hidealllines} With this option you can decide whether all lines should be drawn or not. +% +% \subsection{Frametitle} +% +% +% \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[\mbox{} \Cmd{bfseries}\Cmd{large}]{frametitleformat} Sets the format of the \Opt{frametitle}. +% +% \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 environement \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. +% +% \vskip\baselineskip +% \noindent\textbf{Note}\qquad The ouput 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. +% +% \section{Examples} +% +% I outsource the examples in four files to limit the 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. +% +% \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 followings 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 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 Problems} +% In this section I will collect known problems. 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}. +% \end{enumerate} +% +% +% \section{ToDo} +% \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} +% \end{enumerate} +% +% \section{Previous versions} +% If you have trouble with the new version of \Pack{mdframed} you can load \texttt{mdframedpre} instead. In this way you load the version v0.6 (see \nameref{rev}). +% %With the new version 0.7a I changed the internal commands (I use \Pack{etoolbox}) and the algorithm of the splitting. So I don't know whether I will get new bugs or not. For the last case and the previous version (v0.6) works well you can load \Pack{mdframedpre} instead of \Pack{mdframed}. +% +% \section{Acknowledgements} +% +% \vskip\baselineskip +% +% +% +% \textsf{Dick Nickalls;\quad Dietrich Grau;\quad Piazza Luca;\quad Jobst Hoffmann}. +% \medskip +% +% \noindent Thanks for proofreading +% +% \textsf{Alan Munn} and \textsf{Nahid Shajari} +% \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{@tempboxa}. +% After the calculation of the width and the height of the \Cmd{@tempboxa} (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.2cm, +% row sep=1.2cm, +% }} +% \matrix(m)[mymatrixnodes] +% {% +% \mybox{read in and save contents in \Cmd{@tempboxa}} & +% \mybox{\Cmd{md@putbox@single}} \\ +% \mybox{split \textbackslash @tempboxa in \Cmd{tw@} to the free space of the page} & +% \mybox{\Cmd{md@putbox@first}} \\ +% \mybox{contents of \Cmd{@tempboxa} have enough space on the new page} & +% \mybox{\Cmd{md@putbox@second}} \\ +% \mybox{split \Cmd{@tempboxa} in \Cmd{tw@} to the free space of the page} & +% \mybox{\Cmd{md@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{tw@}} (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{tw@}} (m-4-2); +% +% \draw (m-2-2) edge node[align=center,fill=white]% +% {calculate the height of the new \Cmd{@tempboxa}} (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{@tempboxa}} (\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{md@putbox@single}] This command sets the contents of a single unsplit frame. +% \item[\Cmd{md@putbox@first}] This command sets the contents of the first frame of a split frame. +% \item[\Cmd{md@putbox@middle}] This command sets the contents of the middle frame of a split frame. +% \item[\Cmd{md@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\md@putbox@single{\box\@tempboxa} + \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\md@putbox@single{\leftline{\box\@tempboxa}} + \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{md@putboxsingle} as follows +% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] + \makeatletter + \def\md@putbox@single{% + \leftline{% + \hspace*{\mdf@leftmargin@length}% + \rule[-\dp\@tempboxa]{\mdf@linewidth}% + {\ht\@tempboxa+\dp\@tempboxa}% + \box\@tempboxa + }% + } + \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}. +% +% \clearpage +% +% \subsection{Revision history}\label{rev} +% \raggedright +% \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{md@lrbox} +% \end{itemize*} +% +% \footnotesize +% \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*} +% +% +% +% \minisec{Version 0.6 submitted 18 Dec 2010} +% \begin{itemize*} +% \item added \Opt{style=3} with \Pack{pstricks} +% \item added option \Opt{pstrickssetting} +% \item added option \Opt{splitbottomskip} +% \item added option \Opt{splittopskip} +% \item added options for hidden lines +% \item changed the calculation +% \item fixes bugs +% \end{itemize*} +% +% \minisec{Version 0.4a submitted 14 May 2010} +% \begin{itemize*} +% \item fixes bug in fontcolor +% \end{itemize*} +% +% \minisec{Version 0.4 submitted 13 May 2010} +% \begin{itemize*} +% \item Elke Schubert creates style file for \Pack{tikz} +% \item fixes some bugs -- calculation of the page dimen (thanks Dick Nickalls) +% \item using tikz for the frame with different styles +% \end{itemize*} +% +% \minisec{Version 0.3b submitted 1 May 2010} +% \begin{itemize*} +% \item fixes some bugs -- thanks to Dietrich Grau +% \item added new options: \Opt{ntheorem} +% \end{itemize*} +% +% \minisec{Version 0.3a submitted 23 Apr 2010} +% \begin{itemize*} +% \item added new options: \Opt{leftmargin} and \Opt{rightmargin} +% \item fixes some bugs +% \end{itemize*} +% +% \minisec{Version 0.3 submitted16 Apr 2010} +% \begin{itemize*} +% \item first upload to \href{http://dante.ctan.org/upload}{CTAN} +% \end{itemize*} +% +% \ltxmdfappendix +% +% \section{Implementation}\label{implementation} +% +% And finally, here's how it all works\ldots +% +%\StopEventually{^^A +% \PrintChanges^^A +% \clearpage +% \PrintIndex^^A +%} +%\iffalse +% \begin{macrocode} +%<*package> +% \end{macrocode} +%\fi +% +% \subsection{The Explanation of mdframed.sty} +% +% %$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ +% %$Rev: 271 $ +% %$Author: marco $ +% %$Date: 2011-12-09 13:25:08 +0100 (Fr, 09. Dez 2011) $ +% \begin{macro}{mdversion,mdframedpackagename,md@maindate@svn} +% Set package information +% \begin{macrocode} +\def\mdversion{v1.0b} +\def\mdframedpackagename{mdframed} +\def\md@maindate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mdframed}% + [\md@maindate@svn$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $% + \mdversion: \mdframedpackagename] +% \end{macrocode} +% +% \begin{macro}{md@PackageWarning,md@PackageInfo,md@LoadFile@IfExist} +% Set short form of |\PackageWarning|, |\PackageInfo| and |IfFileExists| in combination +% with |\RequirePackage|. +% \begin{macrocode} +\newcommand*\md@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} +\newcommand*\md@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} +\newcommand*\md@LoadFile@IfExist[1]{% + \IfFileExists{#1.sty}{% + \RequirePackage{#1}% + }{% + \md@PackageWarning{The file #1 does not exist^^J + but needed by \mdframedpackagename^^J + see documentation fo further information + }% + } +} +% \end{macrocode} +% \end{macro} +% +% Loading required packages +% \begin{macrocode} +\RequirePackage{kvoptions} +\RequirePackage{etex} +\RequirePackage{etoolbox}[2011/01/03] +\RequirePackage{zref-abspage} +\RequirePackage{color} +% \end{macrocode} +% +% Set the family and the prefix of all options. (see documentation of |kvoptions| +% \begin{macrocode} +\SetupKeyvalOptions{family=mdf,prefix=mdf@} +% \end{macrocode} + +% \begin{macro}{md@iflength,md@iflength@check,md@iflength@check} +% Command which checks the input of length options. If the length option is only +% a number the |defaultunit| will be used. Syntax: |\md@iflength{<Input>}{<length>}{<no length>}| +% \begin{macrocode} +\newlength{\md@templength} +\def\md@iflength#1{% + \afterassignment\md@iflength@check% + \md@templength=#1\mdf@defaultunit\relax\relax + \expandafter\endgroup\next +} +\def\md@iflength@check#1{% + \begingroup + \ifx\relax#1\@empty + \def\next{\@secondoftwo} + \else + \def\next{\@firstoftwo} + \expandafter\md@iflength@cleanup + \fi +} +\def\md@iflength@cleanup#1\relax{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@option@length,mdf@define@key@length} +% Command to define a new length width a default value. +%| \mdf@option@length{<Laengenbezeichnung>}{<Defaultwert>}| +% \begin{macrocode} +\newrobustcmd*{\mdf@option@length}[2]{% + \expandafter\newlength\csname mdf@#1@length\endcsname% + \expandafter\setlength\csname mdf@#1@length\endcsname{#2}% + } +% \end{macrocode} +% Command to create a new length option.|\mdf@define@key@length{<Bezeichnungder Option der Laenge>}| +% \begin{macrocode} +\newrobustcmd*{\mdf@define@key@length}[1]{% + \define@key{mdf}{#1}{% + \def\@tempa{##1} + \md@iflength{\@tempa}% + {\csxdef{mdfl@#1}{\the\md@templength}}% + {\csxdef{mdfl@#1}{\the\md@templength}}% + \expandafter\setlength\csname mdf@#1@length\endcsname{\csname mdfl@#1\endcsname}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@dolist} +% Loop used by \Pack{mdframed}. +% \begin{macrocode} +\DeclareListParser*{\mdf@dolist}{,} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@lengthoption,mdf@lengthoption@doubledo} +% The loop of |\mdf@dolist| expected one argument. So I have to define to commands +% to allow a loop with two arguments. The separation for the input is |==|. +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@do@stringoption,mdf@stringoption@doubledo} +% Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. +% \begin{macrocode} +\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}% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@do@booloption,mdf@booloption@doubledo} +% Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. +% \begin{macrocode} +\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}% + }% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@do@alignoption,mdf@alignoption@tripledo} +% Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. Here +% three arguments are required. +% \begin{macrocode} +\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}% +} +% \end{macrocode} +% \end{macro} +% +% Start declaration of options +% \begin{macrocode} +\newcounter{mdf@globalstyle@cnt} +\defcounter{mdf@globalstyle@cnt}{0} +\newcommand*\mdfglobal@style{0} +% \end{macrocode} +% Only provide to be backward compatible +% \begin{macrocode} +\define@key{mdf}{style}{% + \md@PackageWarning{package option style is depreciated^^J + use framemethod instead\MessageBreak}% + \renewcommand*\mdfglobal@style{#1}% + \defcounter{mdf@globalstyle@cnt}{#1}% + \ifcase\value{mdf@globalstyle@cnt}\relax + %0 <- kein Grafikpaket + \or\md@LoadFile@IfExist{tikz}% + \or\md@LoadFile@IfExist{pstricks-add}% + \or\defcounter{mdf@globalstyle@cnt}{2}% + \md@LoadFile@IfExist{pstricks-add}% + \or\md@LoadFile@IfExist{pstricks-add}% + \else\md@PackageWarning{Unknown global style \value{mdf@globalstyle@cnt}}% + \fi% +} +% \end{macrocode} +% +% \begin{macro}{mdf@framemethod} +% \begin{macrocode} +\providecommand*\mdf@framemethod{} +\def\md@framemethod@i{}% +\def\md@framemethod@ii{}% +\def\md@framemethod@iii{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\define@key{mdf}{framemethod}[default]{% + \lowercase{\def\md@tempa{#1}} + \forcsvlist{\listadd\md@framemethod@i}{default,tex,latex,none,0} + \forcsvlist{\listadd\md@framemethod@ii}{pgf,tikz,1} + \forcsvlist{\listadd\md@framemethod@iii}{pstricks,ps,2,postscript} + \xifinlist{\md@tempa}{\md@framemethod@i}% + {\def\mdf@@framemethod{default}\defcounter{mdf@globalstyle@cnt}{0}}% + {\xifinlist{\md@tempa}{\md@framemethod@ii}% + {\def\mdf@@framemethod{tikz}\defcounter{mdf@globalstyle@cnt}{1}}% + {\xifinlist{\md@tempa}{\md@framemethod@iii}% + {\def\mdf@@framemethod{pstricks}\defcounter{mdf@globalstyle@cnt}{2}}% + {% + \md@LoadFile@IfExist{#1}% + }% + }% + }% + \ifcase\value{mdf@globalstyle@cnt}\relax% + %0 <- kein Grafikpaket + \or\md@LoadFile@IfExist{tikz}% + \or\md@LoadFile@IfExist{pstricks-add}% + \or\md@LoadFile@IfExist{pstricks-add}% + \fi% +} +% \end{macrocode} +% +% +% \begin{macro}{mdf@do@lengthoption} +% Here the declaration of the length option. The input method is explained above. +% \begin{macrocode} +\mdf@dolist{\mdf@do@lengthoption}{% + {skipabove==\z@},% + {skipbelow==\z@},% + {leftmargin==\z@},% + {rightmargin==\z@},% + {margin==20pt},% + {innerleftmargin==10pt},% + {innerrightmargin==10pt},% + {innertopmargin==0.4\baselineskip},% + {innerbottommargin==0.4\baselineskip},% + {splittopskip==\z@},% + {splitbottomskip==\z@},% + {outermargin==-999pt},% + {innermargin==-999pt},% + {linewidth==0.4pt},% + {innerlinewidth==\z@},% + {middlelinewidth==\expandafter\mdf@linewidth@length},% + {outerlinewidth==\z@},% + {roundcorner==\z@},% + {footenotedistance==\medskipamount}, + {userdefinedwidth==\linewidth} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@lengthoption} +% Here the declaration of the string option. The input method is explained above. +% \begin{macrocode} +\mdf@dolist{\mdf@do@stringoption}{% + {defaultunit==pt},% + {settings=={}},% + {linecolor==black},% + {backgroundcolor==white},% + {fontcolor==black},% + {innerlinecolor==\mdf@linecolor},% + {outerlinecolor==\mdf@linecolor},% + {middlelinecolor==\mdf@linecolor},% + {psroundlinecolor==\mdf@backgroundcolor},% + {frametitle=={}},% + {frametitlefont==\bfseries\large},% + {printheight==none},% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@booloption} +% Here the declaration of the string option. The input method is explained above. +% \begin{macrocode} +\mdf@dolist{\mdf@do@booloption}{% + {ntheorem==false},% + {topline==true},% + {leftline==true},% + {bottomline==true},% + {rightline==true},% + {hidealllines==false},% + {nobreak==false},% + {footnoteinside==true},% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@do@alignoption} +% Here the declaration of the align option. The input method is explained above. +% \begin{macrocode} +\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 +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@align,mdf@makeboxalign@left,mdf@makeboxalign@right,mdf@makeboxalign@right} +% Set the alignment. +% \begin{macrocode} +\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}{% + \md@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}}% + }% +} +% \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} +} +% \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}[none]{% + \@ifpackageloaded{xcolor}{% + \let\mdf@xcolor\@empty %ignoriere die Eingabe der Optionen + }{% + \def\@tempa{none}% + \ifx\mdf@xcolor\@tempa + \else + \PassOptionsToPackage{\mdf@xcolor}{xcolor}% + \RequirePackage{xcolor}% + \fi% + }% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@needspace} +% Defining the option needspace +% \begin{macrocode} +\define@key{mdf}{needspace}[\z@]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip % hide the previous |\vskip| from |\addvspace| + \endgroup% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\DeclareDefaultOption{% + \md@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} +\ProcessKeyvalOptions*\relax +% \end{macrocode} +% +% \begin{macro}{mdfsetup} +% Short form of |\setkeys{mdf}| +% \begin{macrocode} +\newcommand*{\mdfsetup}{\setkeys{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}{% + \md@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}}% +}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@print@space} +% Option to type out the free vertical space of the current page. +% \begin{macrocode} +\let\md@PackageNoInfo\@gobble +\newrobustcmd*\md@ifstrequal@expand{% +\expandafter\ifstrequal\expandafter{\mdf@printheight}% +} +\newrobustcmd*\md@print@space{% + %case "none" + \md@ifstrequal@expand{none}{\def\md@tempa{NoInfo}}{% + %case "info" + \md@ifstrequal@expand{info}{\def\md@tempa{Info}}{% + %case "warning" + \md@ifstrequal@expand{warning}{\def\md@tempa{Warning}}{% + %case "unknown" + \md@PackageWarning{Unknown key for printheight=\mdf@printheight^^J + use none, info or warning}% + \def\md@tempa{none}% + }% + }% + }% +\def\md@PackageInfoSpace{\csname md@Package\md@tempa\endcsname}% +} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.0b}{2011/12/26}{added command \protect\Cmd{@parboxrestore} to \protect\Cmd{md@lrbox}} +% \begin{macro}{md@lrbox,endmd@lrbox} +% Modification of the default |\lrbox| and |\endlrbox| +% \begin{macrocode} +%\let\md@lrbox\lrbox +%\patchcmd\md@lrbox\hbox\vbox{}{} +%\patchcmd\md@lrbox\color@setgroup{% +%\begingroup% +%\color@setgroup\color{\mdf@fontcolor}% +%\hsize=\md@horizontalspaceofbox% +%\columnwidth=\hsize% +%\textwidth=\hsize% +%\linewidth=\hsize% +%\@parboxrestore% +%\bgroup\md@@frametitle\egroup\noindent% +%}{}{} +\def\md@lrbox#1{% + \edef\reserved@a{% + \endgroup + \setbox#1\vbox{% + \begingroup\aftergroup}% + \def\noexpand\@currenvir{\@currenvir}% + \def\noexpand\@currenvline{\on@line}}% + \reserved@a + \@endpefalse + \@parboxrestore + \begingroup% + \color@setgroup + \color{\mdf@fontcolor}% + \hsize=\md@horizontalspaceofbox% + \columnwidth=\hsize% + \textwidth=\hsize% + \linewidth=\hsize% + \@parboxrestore + \bgroup\md@@frametitle\egroup\noindent% + \ignorespaces} + +\def\endmd@lrbox{\endgroup\unskip\color@endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@trivlist,endmd@trivlist} +% Modification of the default |\trivlist| and |\endtrivlist|. +% \begin{macrocode} +\let\md@trivlist\trivlist +\let\endmd@trivlist\endtrivlist +\patchcmd\endmd@trivlist\@endparenv\md@endparenv{}{} +\def\md@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 above. +% \begin{macrocode} +\newrobustcmd*\mdfdefinestyle[2]{% + \csdef{mdf@definestyle@#1}{#2}% +} +\newrobustcmd*\mdfapptodefinestyle[2]{% + \ifcsundef{mdf@definestyle@#1}% + {\md@PackageWarning{Unknown style #1}}% + {\csappto{mdf@definestyle@#1}{,#2}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{newmdenv,renewmdenv,newmdtheoremenv} +% 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}% + }% +\newrobustcmd*\newmdtheoremenv{% + \kernel@ifnextchar[%] + {\newmdtheoremenv@i}{\newmdtheoremenv@i[]}% +} +\def\newmdtheoremenv@i[#1]#2{% + \kernel@ifnextchar[%] + {\newmdtheoremenv@ii[#1]#2}{\newmdtheoremenv@ii[#1]#2[]}% +} +\def\newmdtheoremenv@ii[#1]#2[#3]#4{% + \kernel@ifnextchar[%] + {\newmdtheoremenv@iii[#1]#2[#3]#4}{\newmdtheoremenv@iii[#1]#2[#3]#4[]}% +} +\def\newmdtheoremenv@iii[#1]#2[#3]#4[#5]{% + \ifboolexpr{ test {\ifblank {#3}} and test {\ifblank {#5}} }% + {% + \newtheorem{#2}{#4}% + }{% + \ifboolexpr{ not (test {\ifblank {#3}}) and not (test {\ifblank {#5}}) }% + {\md@PackageWarning{You can't such a comibination for newmdtheoremenv^^J + Instead mdframed uses newtheorem{#2}{#4}}% + \newtheorem{#2}{#4}% + }% + {% + \notblank{#3}{\newtheorem{#2}[#3]{#4}}{}% + \notblank{#5}{\newtheorem{#2}{#4}[#5]}{}% + }% + }% + \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% + \AfterEndEnvironment{#2}{\end{mdframed}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdframedtitleenv,md@@frametitle} +% Default definition of the frame tile used by |mdframed|. +% \begin{macrocode} +\let\mdraggedtitle\raggedright +\providecommand*\mdframedtitleenv[1]{% + \@afterindentfalse + {\parindent \z@ + \setlength{\parfillskip}{\z@ plus 1fil}% + \mdraggedtitle\nobreak\mdf@frametitlefont#1\relax% + \par}% + \@afterheading} + +\newrobustcmd*\md@@frametitle{% + \ifx\mdf@frametitle\@empty\relax% + \else + \color@begingroup\@nobreaktrue% + \mdframedtitleenv{\mdf@frametitle}% + \color@endgroup + \fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@checkntheorem} +% Command which checks only |ntheorem|. Later I will support also +% |thmtools|. +% \begin{macrocode} +\newrobustcmd*\md@checkntheorem{% + \ifbool{mdf@ntheorem}% %%% Pruefen ob ntheorem gesetzt ist + {\ifundef{\theorempreskipamount}% + {\md@PackageWarning{You have not loaded ntheorem yet}}% + {\setlength{\theorempreskipamount}{\z@}% + \setlength{\theorempostskipamount}{\z@}% + }% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@footnoterule,md@footnoteoutput,md@footnoteinput} +% Support for footnotes. +% \begin{macrocode} +\newrobustcmd*\md@footnoterule{% + \kern0\p@% + \hrule \@width 1in \kern 2.6\p@} +\newrobustcmd*\md@footnoteoutput{% + \ifvoid\@mpfootins\else + \nobreak% + \vskip\mdf@footenotedistance@length% + \normalcolor% + \md@footnoterule + \unvbox\@mpfootins + \fi% +} +\newrobustcmd*\md@footnoteinput{% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}% + \c@mpfootnote\z@% + \let\@footnotetext\@mpfootnotetext% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@load@style,md@styledefinition} +% Load the method to draw the frame and set style definition. +% \begin{macrocode} +\newrobustcmd*\mdf@load@style{% +\ifcase\value{mdf@globalstyle@cnt}\relax% + \input{md-frame-0.mdf}% + \or\input{md-frame-1.mdf}% + \or\input{md-frame-2.mdf}% + \or\input{md-frame-3.mdf}% + \else% + \IfFileExists{md-frame-\value{mdf@globalstyle@cnt}.mdf}% + {\input{md-frame-\value{mdf@globalstyle@cnt}.mdf}}% + {% + \input{md-frame-0.mdf}% + \md@PackageWarning{The style number \value{mdf@globalstyle@cnt} does not exist^^J + mdframed ues instead style=0 \mdframedpackagename}% + }% +\fi% +}% +\mdf@load@style + +\newrobustcmd*\md@styledefinition{% + \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% + }{}% + \ifnumequal{\value{mdf@globalstyle@cnt}}{2}% + {\deflength{\mdf@innerlinewidth@length}{\z@}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% + \deflength{\mdf@outerlinewidth@length}{\z@}% + \let\mdf@innerlinecolor\mdf@linecolor% + }{}% + \ifnumequal{\value{mdf@globalstyle@cnt}}{3}% + {\deflength{\mdf@innerlinewidth@length}{\z@}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% + \deflength{\mdf@outerlinewidth@length}{\z@}% + \let\mdf@innerlinecolor\mdf@linecolor% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{detected@md@put@frame} +% Detect whether inside a non breakable environment. +% \begin{macrocode} +\let\md@reserved@a\@empty +\newrobustcmd*\detected@md@put@frame{% + \ifmdf@nobreak%Option nobreak=true? + \def\md@reserved@a{\md@put@frame@standalone}% + \else + \def\md@reserved@a{\md@put@frame}% + \ifnum\@floatpenalty<0\relax%Detecting float + \if@twocolumn% + \ifx\@captype\@undefined + \def\md@reserved@a{\md@put@frame}% + \else + \md@PackageInfo{mdframed inside float ^^J + mdframed uses option nobreak \mdframedpackagename}% + \def\md@reserved@a{\md@put@frame@standalone}% + \fi + \else + \md@PackageInfo{mdframed inside float ^^J + mdframed uses option nobreak \mdframedpackagename}% + \def\md@reserved@a{\md@put@frame@standalone}% + \fi% + \fi% + \if@minipage% + \md@PackageInfo{mdframed inside minipage ^^J + mdframed uses option nobreak \mdframedpackagename}% + \def\md@reserved@a{\md@put@frame@standalone}% + \fi% + \ifinner% + \md@PackageInfo{mdframed inside a box ^^J + mdframed uses option nobreak \mdframedpackagename}% + \def\md@reserved@a{\md@put@frame@standalone}% + \fi% + \fi% +\md@reserved@a% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@hidealllines@check} +% \begin{macrocode} +\newrobustcmd*\md@hidealllines@check{% + \ifbool{mdf@hidealllines}{% + \setbool{mdf@leftline}{false}% + \setbool{mdf@rightline}{false}% + \setbool{mdf@topline}{false}% + \setbool{mdf@bottomline}{false}% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +%X-length +% \begin{macrocode} +\newlength\mdfboundingboxwidth +\newlength\mdfboundingboxtotalwidth +% \end{macrocode} +%Y-length +% \begin{macrocode} +\newlength\mdfboundingboxheight +\newlength\mdfboundingboxdepth +\newlength\mdfboundingboxtotalheight +\newlength\md@freevspace@length +\newlength\md@horizontalwidthofbox@length +\newlength\md@verticalmarginwhole@length +% \end{macrocode} +% +% \begin{macrocode} +\providecommand*\ptTps{} +% \end{macrocode} +% +% \begin{macro}{mdfcreateextratikz} +% Command to expand the tikz code. (see md-frame-1.mdf) +% \begin{macrocode} +\newrobustcmd\mdfcreateextratikz{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdframed,mdframed@ii,mdframed@i} +% That the user environement. +% \begin{macrocode} +\def\mdframed{\@ifnextchar[\mdframed@i\mdframed@ii}% +\def\mdframed@ii{\mdframed@i[]}% +\def\mdframed@i[#1]{% default-Umgebung +\begingroup +%%Ueberlegung- wie es besser geht!!!! WICHTIG + \mdfsetup{userdefinedwidth=\linewidth,#1} + \md@hidealllines@check% + \mdf@settings% + \md@twoside@checklength% + \let\width\z@% + \let\height\z@% + \setlength{\topsep}{\mdf@skipabove@length}% + \begingroup% + \let\partopsep\z@% + \expandafter\endgroup% + \begin{md@trivlist}\item\relax% + \md@checkntheorem% + \md@styledefinition% + \md@footnoteinput% + \md@horizontalmargin@equation% + \begin{md@lrbox}{\@tempboxa}% + }% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{endmdframed} +% \begin{macrocode} +\def\endmdframed{% + \ifmdf@footnoteinside% + \def\md@reserveda{% + \md@footnoteoutput% + \end{md@lrbox}% + \detected@md@put@frame}% + \else% + \def\md@reserveda{% + \end{md@lrbox}% + \detected@md@put@frame% + \md@footnoteoutput% + }% + \fi% + \md@reserveda% + \end{md@trivlist}% + \hrule \@height\z@ \@width\hsize +\endgroup\@endparenv% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@twoside@checklength,md@zref@label,if@md@pageodd,md@pageisodd,md@pageiseven,md@@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*\md@twoside@checklength{% + \if@twoside + \ifboolexpr{ test {\ifdimequal{\mdf@outermargin@length}{-999pt}} + and + test {\ifdimequal{\mdf@innermargin@length}{-999pt}} + }% + {% + \md@PackageInfo{You haven't set the outermargin/innermargin^^ + mdframed will use leftmargin/rightmargin}% + \settoggle{md:checktwoside}{false}% + }% + {\settoggle{md:checktwoside}{true}}% + \iftoggle{md:checktwoside}{% + \ifdimequal{\mdf@outermargin@length}{-999pt}% + {\setlength\mdf@rightmargin@length{\z@}}% + {\setlength\mdf@rightmargin@length{\mdf@outermargin@length}}% + \ifdimequal{\mdf@innermargin@length}{-999pt}% + {\setlength\mdf@leftmargin@length{\z@}}% + {\setlength\mdf@leftmargin@length{\mdf@innermargin@length}}% + }{}% + \fi% +} +\newcounter{md@zref@counter}%keine doppelten laebes +\zref@newprop*{md@pagevalue}[0]{\number\value{page}} +\zref@addprop{\ZREF@mainlist}{md@pagevalue} +\newrobustcmd*\md@zref@label{% + \stepcounter{md@zref@counter} + \zref@label{md@pagelabel-\number\value{md@zref@counter}}% +} +\newrobustcmd*\if@md@pageodd{% + \zref@refused{md@pagelabel-\the\value{md@zref@counter}}% + \ifodd\zref@extract{md@pagelabel-\the\value{md@zref@counter}}{md@pagevalue}% + \edef\md@reserveda{\md@pageisodd}% + \else + \edef\md@reserveda{\md@pageiseven}% + \fi + \md@reserveda% +} +\newrobustcmd*\md@pageisodd{% + \ifdimequal{\mdf@outermargin@length}{-999pt}% + {\setlength\mdf@rightmargin@length{\z@}}% + {\setlength\mdf@rightmargin@length{\mdf@outermargin@length}}% + \ifdimequal{\mdf@innermargin@length}{-999pt}% + {\setlength\mdf@leftmargin@length{\z@}}% + {\setlength\mdf@leftmargin@length{\mdf@innermargin@length}}% +} +\newrobustcmd*\md@pageiseven{% + \ifdimequal{\mdf@outermargin@length}{-999pt}% + {\setlength\mdf@leftmargin@length{\z@}}% + {\setlength\mdf@leftmargin@length{\mdf@outermargin@length}}% + \ifdimequal{\mdf@innermargin@length}{-999pt}% + {\setlength\mdf@rightmargin@length{\z@}}% + {\setlength\mdf@rightmargin@length{\mdf@innermargin@length}}% +} +\newrobustcmd*\md@@setzref{\md@zref@label\if@md@pageodd} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@freepagevspace} +% \begin{macrocode} +\newrobustcmd*\md@freepagevspace{% + \penalty\@M \vskip 2\baselineskip \vskip\height + \penalty9999 \vskip -2\baselineskip \vskip-\height + \penalty9999 + \ifdimequal{\pagegoal}{\maxdimen}% + {\md@freevspace@length\vsize}% + {\md@freevspace@length=\pagegoal\relax% + \advance\md@freevspace@length by -\pagetotal\relax% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@advancelength@orizontalmargin@add,md@horizontalspaceofbox,md@horizontalmargin@equation} +% Width of the box +% \begin{macrocode} +\newrobustcmd*\md@advancelength@orizontalmargin@add[1]{% + \advance\md@horizontalspaceofbox by -\csname mdf@#1@length\endcsname\relax% +} +\newlength\md@horizontalspaceofbox +\newrobustcmd*\md@horizontalmargin@equation{% + \setlength{\md@horizontalspaceofbox}{\mdf@userdefinedwidth@length}% + \mdf@dolist{\md@advancelength@orizontalmargin@add}{% + leftmargin,outerlinewidth,middlelinewidth,% + innerlinewidth,innerleftmargin,innerrightmargin,% + innerlinewidth,middlelinewidth,outerlinewidth,% + rightmargin}% + \notbool{mdf@leftline}{% + \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + }{}% + \notbool{mdf@rightline}{% + \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + }{}% +% \end{macrocode} +% |\advance\md@horizontalspaceofbox by - \width\md@arrayparboxrestore%| +% \begin{macrocode} + %%% Beruecksichtigung, dass Auszaehlung bzw. list-Umgebung enthalten + \ifdimless{\md@horizontalspaceofbox}{3cm}% + {\md@PackageWarning{You have only a width of 3cm}}{} + \hsize=\md@horizontalspaceofbox% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@keeplines@single} +% horizontal space in relation of the lines. +% \begin{macrocode} +\newrobustcmd*\md@keeplines@single{% + \notbool{mdf@topline}{% + \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + }{}% + \notbool{mdf@bottomline}{% + \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + }{}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@advancelength@verticalmarginwhole,md@advancelength@freevspace@sub,md@advancelength@freevspace@add} +% Loop macros to calculate the height. Used by |\mdf@dolist|. +% \begin{macrocode} +\newrobustcmd*\md@advancelength@verticalmarginwhole[1]{% + \advance\md@verticalmarginwhole@length by \csname mdf@#1@length\endcsname\relax% +} +\newrobustcmd*\md@advancelength@freevspace@sub[1]{% + \advance\dimen@ by -\csname mdf@#1@length\endcsname\relax% +} +\newrobustcmd*\md@advancelength@freevspace@add[1]{% + \advance\dimen@ by \csname mdf@#1@length\endcsname\relax% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@reset} +% Reset changes +% \begin{macrocode} +\protected@edef\md@reset{\boxmaxdepth\the\boxmaxdepth + \splittopskip\the\splittopskip}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@put@frame@standalone} +% Output of |mdframed| inside a non breakable environement. +% \begin{macrocode} +\newrobustcmd*\md@put@frame@standalone{\relax% + \ifvoid\@tempboxa\relax + \md@PackageWarning{The environment is empty\MessageBreak}% + \let\md@reserved@a\relax% + \else + %Hier berechnung Box-Inhalt+Rahmen oben und unten + \setlength{\md@verticalmarginwhole@length}% + {\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \mdf@dolist{\md@advancelength@verticalmarginwhole}{% + outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, + innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% + \md@keeplines@single% + \def\md@reserved@a{\md@putbox@single}% + \fi + \md@reserved@a% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@put@frame} +% Output of |mdframed| inside a breakable environement. +% The comparison are onyl check whether the contents must be split or not. +% \begin{macrocode} +\def\md@put@frame{\relax% +\ifvoid\@tempboxa\relax +\md@PackageWarning{The environment is empty\MessageBreak}% +\let\md@reserved@a\relax% +\else + \md@print@space% + \md@freepagevspace% + \md@PackageInfoSpace{\the\md@freevspace@length before the beginning of ^^J + the environment ending on input line \MessageBreak}% + \ifdimless{\md@freevspace@length}{2\baselineskip} + {\md@PackageInfo{Not enough space on this page} + \vfill\eject% + \def\md@reserved@a{\md@put@frame}% + }{% + %Hier berechnung Box-Inhalt+Rahmen oben und unten + \setlength{\md@verticalmarginwhole@length}% + {\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \mdf@dolist{\md@advancelength@verticalmarginwhole}{% + outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, + innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% + \md@keeplines@single% + \ifdimless{\md@verticalmarginwhole@length}{\md@freevspace@length}% + {%passt auf Seite% + \begingroup + \iftoggle{md:checktwoside}{\md@@setzref}{}% + \md@putbox@single + \endgroup + \let\md@reserved@a\relax}% + {\def\md@reserved@a{\md@put@frame@i}}%passt nicht auf Seite + }% +\fi +\md@reserved@a% +} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.0b}{2011/12/09}{removed \protect\Cmd{setbox\textbackslash tw@ \textbackslash vbox{\textbackslash unvbox \textbackslash tw@}}} +% \begin{macro}{md@put@frame@i} +% Output of the first splitted box. +% \begin{macrocode} +\def\md@put@frame@i{%Box muss gesplittet werden -- Ausgabe der ersten Teilbox + %Berechnung der Splittgroesse -- Linien und Abstand oben + \md@freepagevspace% + \dimen@=\the\md@freevspace@length% + \dimen@i=\mdf@innertopmargin@length% + \advance\dimen@i by \mdf@linewidth@length% + \advance\dimen@i by 2\baselineskip% + \ifdim\dimen@<\dimen@i\relax + \hrule \@height\z@ \@width\hsize% + \vfill\eject% + \def\md@reserved@a{\md@put@frame}% + \else% + \mdf@dolist{\md@advancelength@freevspace@sub}{% + outerlinewidth,middlelinewidth,innerlinewidth,% + innertopmargin,splitbottomskip}% + \ifbool{mdf@topline}{}{\advance\dimen@ by \mdf@middlelinewidth@length}% + \ifdimless{\ht\@tempboxa+\dp\@tempboxa}{\dimen@}% + {\md@PackageWarning{You got a bad break\MessageBreak + you have to change it manually\MessageBreak + by changing the text, the space\MessageBreak + or something else}% + \advance\dimen@ by -1.8\baselineskip\relax% + }{}% + \advance\dimen@ by -1pt\relax%Box darf nicht zu Groß werden. + \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \setbox\tw@\vsplit\@tempboxa to \dimen@ +% \setbox\tw@\vbox{\unvbox\tw@}%needed? + \ifdimgreater{\ht\tw@+\dp\tw@}{\dimen@}{%Falsch gesplittet + \md@PackageInfo{Box was splittet wrong\MessageBreak}% + \dimen@i=\dimen@ + \advance\dimen@ by -\ht\tw@ + \advance\dimen@ by -\dp\tw@ + \advance\dimen@i by 0.5\dimen@ + \splittopskip\z@% + \setbox\@tempboxa\vbox{\unvbox\tw@% + %benoetigt um Tiefe zu haben + \hrule \@height\dp\strutbox \@width\z@ + \unvbox\@tempboxa} + \splittopskip\mdf@splittopskip@length% + \setbox\tw@\vsplit\@tempboxa to \dimen@i +% \setbox\tw@\vbox{\unvbox\tw@}% + }{}% + \setbox\@tempboxa\vbox{\unvbox\@tempboxa}%PRUEFEN!!!! + \ifvoid\@tempboxa + \md@PackageWarning{You got a bad break\MessageBreak + because the splittet box is empty\MessageBreak + You have to change the page settings\MessageBreak + like enlargethispage or something else}% + \setbox\@tempboxa\vbox{\box\tw@\box\@tempboxa}% + \def\md@reserved@a{\md@put@frame}% + \fi + \ifvoid\tw@%%pruefe, ob erste Box leer ist + \hrule \@height\z@ \@width\hsize + \vfill\eject% + \def\md@reserved@a{\md@put@frame}% + \else + \ifdimequal{\ht\tw@}{0pt}% + {\hrule \@height\z@ \@width\hsize% + \vfill\eject% + \setbox\@tempboxa\vbox{\unvbox\tw@\unvbox\@tempboxa} + \def\md@reserved@a{\md@put@frame}% + }% + {% + \begingroup + \iftoggle{md:checktwoside}{\md@@setzref}{}% + \md@putbox@first%%%Groesse des Splittens passt + \endgroup + \hrule \@height\z@ \@width\hsize + \vfill\eject% + \def\md@reserved@a{\md@put@frame@ii}% + }% + \fi% + \fi% +\md@reserved@a% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@put@frame@ii} +% Output of the middle and last box. +% \begin{macrocode} +\def\md@put@frame@ii{%Ausgabe der mittleren Box(en) wenn vorhanden + \setlength{\md@freevspace@length}{\vsize}% + \setlength{\dimen@}{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \mdf@dolist{\md@advancelength@freevspace@add}{% + outerlinewidth,middlelinewidth,innerlinewidth,% + innerbottommargin}%%%Addition der Linien unten + \ifbool{mdf@bottomline}{}{\advance\dimen@ by -\mdf@middlelinewidth@length\relax}% + \ifdimgreater{\dimen@}{\md@freevspace@length}% + {% + \advance\md@freevspace@length by -\mdf@splitbottomskip@length + \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \setbox\tw@\vsplit\@tempboxa to \md@freevspace@length% + % \setbox\tw@\vbox{\unvbox\tw@}%PRUEFEN!!! + \setbox\@tempboxa\vbox{\unvbox\@tempboxa}%PRUEFEN!!!! + \ifvoid\@tempboxa\relax% + \md@PackageWarning{You got a bad break\MessageBreak + because the split box is empty\MessageBreak + You have to change the settings}% + \fi% + \begingroup + \iftoggle{md:checktwoside}{\md@@setzref}{}% + \md@putbox@middle% + \endgroup + \hrule \@height\z@ \@width\hsize + \vfill\eject + \def\md@reserved@a{\md@put@frame@ii}% + }%Hier die Ausgabe der mittleren Box + {\ifvoid\@tempboxa + \md@PackageWarning{You got a bad break\MessageBreak + because the last split box is empty\MessageBreak + You have to change the settings}% + \fi% + \begingroup + \iftoggle{md:checktwoside}{\md@@setzref}{}% + \md@putbox@second% + \endgroup + \let\md@reserved@a\relax% + }%Hier kommt die Ausgabe der letzten Box + \md@reserved@a% +} +% \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. + +%%$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ +% +% \end{macrocode} +% +% \begin{macro}{mdframedOpackagename,md@frameOdate@svn} +% local settings +% \begin{macrocode} +\def\mdframedOpackagename{md-frame-0} +\def\md@frameOdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } +\ProvidesFile{md-frame-0.mdf}% + [\md@frameOdate@svn$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $% + \mdversion: \mdframedOpackagename] +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{mdframedOpackagename,md@frameOdate@svn} +% short command +% \begin{macrocode} +\def\mdf@background@default{\color{\mdf@backgroundcolor}} +\def\mdf@linecolor@default{\color{\mdf@middlelinecolor}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@putbox@single,md@frame@background@single,md@frame@topandbottomline@single,md@frame@leftline@single,md@frame@rightline@single,md@frame@rightline@single} +% The frame of of a non splitted contents of mdframed +% \begin{macrocode} +\def\md@frame@background@single{% + \rlap{\mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@frame@topandbottomline@single{% + \rlap{\mdf@linecolor@default% + \ifbool{mdf@topline}{% + \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth% + +\mdf@innerbottommargin@length+\mdf@innertopmargin@length\relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}}% + {}% + }% + \rlap{\mdf@linecolor@default% + \ifbool{mdf@bottomline}{% + \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}}% + {}% + }% +} +% +\def\md@frame@leftline@single{% + \llap{\mdf@linecolor@default% + \rule[\dimexpr-\mdfboundingboxdepth% + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}% + +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% + }% +}% +% +\def\md@frame@rightline@single{% + \rlap{\mdf@linecolor@default% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[\dimexpr-\mdfboundingboxdepth% + \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}% + +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% + }% +}% +% +\def\md@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}% + {\wd\@tempboxa}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + \setlength{\mdfboundingboxheight}% + {\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr\dp\@tempboxa+\mdf@innerbottommargin@length\relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr\mdfboundingboxheight+\mdf@innertopmargin@length% + +\mdf@innerbottommargin@length\relax}% + \noindent% + \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% + +\ifbool{mdf@leftline}% + {\mdf@middlelinewidth@length}{\z@}% + +\ifbool{mdf@rightline}% + {\mdf@middlelinewidth@length}{\z@}\relax}% + \mdf@makebox@in[\@tempdima]{% + \null% + \ifbool{mdf@leftline}{% + \hspace*{\mdf@middlelinewidth@length}% + \md@frame@leftline@single% + }{}% + \md@frame@topandbottomline@single% + \md@frame@background@single% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}{% + \md@frame@rightline@single% + }{}% + {\box\@tempboxa}% + }% + \mdf@makeboxalign@right% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@putbox@first,md@frame@background@first,md@frame@leftline@first,md@frame@topline@first,md@frame@rightline@first} +% The first frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\md@frame@background@first{% + \rlap{\mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@frame@leftline@first{% + \llap{\mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% + }% +}% +% +\def\md@frame@topline@first{% + \rlap{\mdf@linecolor@default% + \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth+% + \mdf@splitbottomskip@length+\mdf@innertopmargin@length\relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}% + }% +} +% +\def\md@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}{0pt}\relax}% + }% +}% +% +\def\md@putbox@first{%%%% Ausgabe der Teilbox 1 + \ifvoid\@tempboxa + \else% + \mdf@makebox@out[\linewidth]{% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}{\wd\tw@}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr\dp\tw@+\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}{\z@}% + +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% + \relax}% + \mdf@makebox@in[\@tempdima]{% + \null% + \ifbool{mdf@leftline}{% + \hspace*{\mdf@middlelinewidth@length}% + \md@frame@leftline@first}{}% + \ifbool{mdf@topline}{% + \md@frame@topline@first}{}% + \md@frame@background@first% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}{% + \md@frame@rightline@first}{}% + {\box\tw@}% + }% + \mdf@makeboxalign@right% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@putbox@second,md@frame@background@second,md@frame@leftline@second,md@frame@bottomline@second,md@frame@rightline@second} +% The last frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\md@frame@background@second{% + \rlap{\mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@frame@leftline@second{% + \llap{\mdf@linecolor@default% + \rule[\dimexpr-\mdfboundingboxdepth% + -\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax}% + }% +}% +% +\def\md@frame@bottomline@second{% + \rlap{\mdf@linecolor@default% + \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% + {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}% + }% +}% +% +\def\md@frame@rightline@second{% + \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[\dimexpr-\mdfboundingboxdepth% + -\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax}% + }% +}% +% +\def\md@putbox@second{% + \ifvoid\@tempboxa% + \else + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}{\wd\@tempboxa}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr\dp\@tempboxa+\mdf@innerbottommargin@length\relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr\mdfboundingboxheight+\mdf@innerbottommargin@length\relax}% + \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% + +\ifbool{mdf@leftline}{\mdf@middlelinewidth@length}{\z@}% + +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% + \relax}% + \mdf@makebox@in[\@tempdima]{% + \null% + \ifbool{mdf@leftline}{% + \hspace*{\mdf@middlelinewidth@length}% + \md@frame@leftline@second}{}% + \ifbool{mdf@bottomline}{% + \md@frame@bottomline@second}{}% + \md@frame@background@second% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}{% + \md@frame@rightline@second}{}% + {\box\@tempboxa}% + }% + \mdf@makeboxalign@right% + }% + \fi% +}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{md@putbox@middle,md@frame@background@middle,md@frame@leftline@middle,md@frame@rightline@middle} +% The last frame of of a splitted contents of mdframed +% \begin{macrocode} +\def\md@frame@background@middle{% + \rlap{\mdf@background@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@frame@leftline@middle{% + \llap{\mdf@linecolor@default% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@frame@rightline@middle{% + \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[-\mdfboundingboxdepth]% + {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalheight}% + }% +}% +% +\def\md@putbox@middle{% + \ifvoid\@tempboxa% + \else + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \setlength{\mdfboundingboxwidth}{\wd\tw@}% + \setlength{\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% + +\mdf@innerrightmargin@length\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength{\mdfboundingboxdepth}% + {\dimexpr\dp\tw@+\mdf@splitbottomskip@length\relax}% + \setlength{\mdfboundingboxtotalheight}% + {\dimexpr\mdfboundingboxheight+\mdf@splitbottomskip@length\relax}% + \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% + +\ifbool{mdf@leftline}{\mdf@middlelinewidth@length}{\z@}% + +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% + \relax}% + \mdf@makebox@in[\@tempdima]{% + \null% + \ifbool{mdf@leftline}{% + \hspace*{\mdf@middlelinewidth@length}% + \md@frame@leftline@middle}{}% + \md@frame@background@middle% + \hspace*{\mdf@innerleftmargin@length}% + \ifbool{mdf@rightline}{% + \md@frame@rightline@middle}{}% + {\box\tw@}% + }% + \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=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. + +%%$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ +% +% \end{macrocode} +% +% \begin{macro}{mdframedIpackagename,md@frameIdate@svn} +% local settings +% \begin{macrocode} +\def\mdframedIpackagename{md-frame-1} +\def\md@frameIdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } +\ProvidesFile{md-frame-1.mdf}% + [\md@frameIdate@svn$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ % + \mdversion: \mdframedIpackagename] +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@test@ltrb,md@test@ltr,md@test@ltb,md@test@trb,md@test@lrb,md@test@lb,md@test@rb,^^A +% md@test@tr,md@test@lt,md@test@lr,md@test@tb,md@test@l,md@test@r,md@test@t,md@test@b,md@test@noline} +% Short forms of checking the option which lines should be drawn. +% \begin{macrocode} +%%%% _____t_____ +%%%% | | +%%%% | | +%%%% | | +%%%% l| |r +%%%% | | +%%%% | | +%%%% |___________| +%%%% b +%%Zusammenhaenge abfragen: +\newrobustcmd*\md@test@ltrb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%3-set +\newrobustcmd*\md@test@ltr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@ltb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@trb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@lrb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%2-set +\newrobustcmd*\md@test@lb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@rb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@tr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@lt{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@lr{% + \ifboolexpr{not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@tb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +%Einzellinien +\newrobustcmd*\md@test@l{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@r{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@t{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@b{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +%keine Linien +\newrobustcmd*\md@test@noline{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@tikz@settings} +% Define settings for tikz +% \begin{macrocode} +%Allgemeine Einstellungen fuer tikz +\def\md@tikz@settings{% +% + \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=\mdf@backgroundcolor}}% +% + \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}}}{}% +% + \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}{md@tikzbox@tfl,md@tikzbox@otl} +% Befehle fuer Ausgabe von Rahmen und Hintergrund +% \begin{macrocode} +\newrobustcmd*\md@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*\md@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}{md@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\md@putbox@single{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \md@tikz@settings% +% + \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \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\@tempboxa+\dp\@tempboxa\relax}% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@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}{}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture]% + \begin{scope} + \pgfmathsetlengthmacro\md@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\md@Ay{+\mdf@innerbottommargin@length}% + \pgfmathsetlengthmacro\md@Ox{+0pt}% + \pgfmathsetlengthmacro\md@Oy{+0pt}% + \pgfmathsetlengthmacro\md@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\md@Py{+\mdfboundingboxheight}% + \ifbool{mdf@leftline}% + {% + \pgfmathsetlengthmacro\md@Ax% + {\md@Ax+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Ox% + {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}% + {% + \pgfmathsetlengthmacro\md@Px% + {\md@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@bottomline}% + {% + \pgfmathsetlengthmacro\md@Ay% + {\md@Ay+\mdf@outerlinewidth@length+\mdf@middlelinewidth@length% + +\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Oy% + {\md@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@topline}% + {% + \pgfmathsetlengthmacro\md@Py% + {\md@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% +% + \coordinate(O)at(\md@Ox,\md@Oy);% + \coordinate(P)at(\md@Px,\md@Py);% +% + \md@test@ltrb{\md@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)--cycle}}{}% +% + \md@test@ltb{\md@tikzbox@tfl{(P|-O)--(O)--(O|-P)--(P)}}{}% + \md@test@trb{\md@tikzbox@tfl{(O|-P)--(P)--(P|-O)--(O)}}{}% + \md@test@ltr{\md@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}{}% + \md@test@lrb{\md@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}{}% +% + \md@test@lb{\md@tikzbox@otl{(P|-O)--(O)--(O|-P)}% + {(P)--(P|-O)[mdfcorners]--(O)--(O|-P)}% + }{}% + \md@test@rb{\md@tikzbox@otl{(P)--(P|-O)--(O)}% + {(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}% + }{}% + \md@test@tr{\md@tikzbox@otl{(O-|P)--(P)--(P-|O)}% + {(O)--(O|-P)[mdfcorners]--(P)--(P|-O)}% + }{}% + \md@test@lt{\md@tikzbox@otl{(O)--(O|-P)--(P)}% + {(P|-O)--(O)[mdfcorners]--(O|-P)--(P)}% + }{}% + \md@test@lr{\md@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}% + {(O)rectangle(P)}% + }{}% + \md@test@tb{\md@tikzbox@otl{(O)--(O-|P)(O|-P)--(P)}% + {(O)rectangle(P)}% + }{}% +% + \md@test@l{\md@tikzbox@otl{(O)--(O|-P)}% + {(O)rectangle(P)}% + }{}% + \md@test@r{\md@tikzbox@otl{(O-|P)--(P)}% + {(O)rectangle(P)}% + }{}% + \md@test@t{\md@tikzbox@otl{(O|-P)--(P)}% + {(O)rectangle(P)}% + }{}% + \md@test@b{\md@tikzbox@otl{(O)--(O-|P)}% + {(O)rectangle(P)}% + }{}% +% + \md@test@noline{\path[mdfbackground,mdfcorners](O)rectangle(P);}{}% +% + \node[mdfbox]at(\md@Ax,\md@Ay){\box\@tempboxa};% Ausgabebox einfuegen + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \mdfcreateextratikz + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@first} +% Output of the first breakable contents. +% \begin{macrocode} +\def\md@putbox@first{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \md@tikz@settings% + \setlength\mdfboundingboxwidth{\wd\tw@}% + \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\tw@+\dp\tw@\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}{}% +% + %\ifdimequal{\pagegoal}{\maxdimen}{\enlargethispage{\baselineskip}}{}% ??? + \ifdimgreater{\pagegoal-\maxdimen}{0pt}{}{\enlargethispage{\baselineskip}}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \begin{scope} +% + \pgfmathsetlengthmacro\md@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\md@Ay{+\mdf@splitbottomskip@length}% + \pgfmathsetlengthmacro\md@Ox{+0pt}% + \pgfmathsetlengthmacro\md@Oy{+0pt}% + \pgfmathsetlengthmacro\md@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\md@Py{+\mdfboundingboxheight}% + \ifbool{mdf@leftline} + {% + \pgfmathsetlengthmacro\md@Ax% + {\md@Ax+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Ox% + {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\md@Px% + {\md@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\md@Py% + {\md@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% +% + \coordinate(O)at(\md@Ox,\md@Oy);% + \coordinate(P)at(\md@Px,\md@Py);% +% + \ifboolexpr{test {\md@test@ltrb} or test {\md@test@ltr}}% + {\md@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}% + {}% + \ifboolexpr{test {\md@test@ltb} or test {\md@test@lt}}% + {\md@tikzbox@otl{(O)--(O|-P)--(P)}{(P|-O)--(O)[mdfcorners]--(O|-P)--(P)}}% + {}% + \ifboolexpr{test {\md@test@trb} or test {\md@test@tr}}% + {\md@tikzbox@otl{(O-|P)--(P)--(P-|O)}{(O)--(O|-P)[mdfcorners]--(P)--(P|-O)}}% + {}% + \ifboolexpr{test {\md@test@lrb} or test {\md@test@lr}}% + {\md@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@tb} or test {\md@test@t}}% + {\md@tikzbox@otl{(O|-P)--(P)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@lb} or test {\md@test@l}}% + {\md@tikzbox@otl{(O)--(O|-P)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@rb} or test {\md@test@r}}% + {\md@tikzbox@otl{(O-|P)--(P)}{(O)rectangle(P)}}% + {}% + \md@test@b{\path[mdfbackground](O)rectangle(P)}{}% +% + \md@test@noline{\path[mdfbackground,mdfcorners](O)--(O|-P)--(P)--(P|-O);}{}% +% + \node[mdfbox]at(\md@Ax,\md@Ay){\box\tw@};% Ausgabebox einfuegen + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \mdfcreateextratikz% + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@middle} +% Output of the middle breakable contents. +% \begin{macrocode} +\def\md@putbox@middle{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \md@tikz@settings% +% + \setlength\mdfboundingboxwidth{\wd\tw@}% + \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\tw@+\dp\tw@\relax}% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% +% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \begin{scope} + \pgfmathsetlengthmacro\md@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\md@Ay{+\mdf@splitbottomskip@length}% + \pgfmathsetlengthmacro\md@Ox{+0pt}% + \pgfmathsetlengthmacro\md@Oy{+0pt}% + \pgfmathsetlengthmacro\md@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\md@Py{+\mdfboundingboxheight}% + \ifbool{mdf@leftline}% + {% + \pgfmathsetlengthmacro\md@Ax% + {\md@Ax+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Ox% + {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}% + {% + \pgfmathsetlengthmacro\md@Px% + {\md@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% +% + \coordinate(O)at(\md@Ox,\md@Oy);% + \coordinate(P)at(\md@Px,\md@Py);% +% + \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% + {\md@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}{}% + \ifboolexpr{bool {mdf@leftline} and not (bool {mdf@rightline})}% + {\md@tikzbox@otl{(O)--(O|-P)}{(O)rectangle(P)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and bool {mdf@rightline}}% + {\md@tikzbox@otl{(P)--(P|-O)}{(O)rectangle(P)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% + {\path[mdfbackground](O)rectangle(P)}{}% +% + \node[mdfbox]at(\md@Ax,\md@Ay){\box\tw@};% Ausgabebox einfuegen + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@second} +% Output of the last breakable contents. +% \begin{macrocode} +\def\md@putbox@second{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \md@tikz@settings% +% + \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \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\@tempboxa+\dp\@tempboxa\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}{}% +% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{tikzpicture}[remember picture] + \begin{scope} + \pgfmathsetlengthmacro\md@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\md@Ay{+\mdf@innerbottommargin@length}% + \pgfmathsetlengthmacro\md@Ox{+0pt}% + \pgfmathsetlengthmacro\md@Oy{+0pt}% + \pgfmathsetlengthmacro\md@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\md@Py{+\mdfboundingboxheight}% + \ifbool{mdf@leftline}% + {% + \pgfmathsetlengthmacro\md@Ax% + {\md@Ax+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Ox% + {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@rightline}% + {% + \pgfmathsetlengthmacro\md@Px% + {\md@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% + }{}% + \ifbool{mdf@bottomline}% + {% + \pgfmathsetlengthmacro\md@Ay% + {\md@Ay+\mdf@outerlinewidth@length+% + \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% + \pgfmathsetlengthmacro\md@Oy% + {\md@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + }{}% +% + \coordinate(O)at(\md@Ox,\md@Oy);% + \coordinate(P)at(\md@Px,\md@Py);% +% + \ifboolexpr{test {\md@test@ltrb} or test {\md@test@lrb}}% + {\md@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}% + {}% + \ifboolexpr{test {\md@test@ltb} or test {\md@test@lb}}% + {\md@tikzbox@otl{(P-|O)--(O)--(O-|P)}{(P)--(P|-O)[mdfcorners]--(O)--(O|-P)}}% + {}% + \ifboolexpr{test {\md@test@trb} or test {\md@test@rb}}% + {\md@tikzbox@otl{(P)--(P|-O)--(O)}{(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}}% + {}% + \ifboolexpr{test {\md@test@ltr} or test {\md@test@lr}}% + {\md@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@tb} or test {\md@test@b}}% + {\md@tikzbox@otl{(O)--(O-|P)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@lt} or test {\md@test@l}}% + {\md@tikzbox@otl{(O)--(O|-P)}{(O)rectangle(P)}}% + {}% + \ifboolexpr{test {\md@test@tr} or test {\md@test@r}}% + {\md@tikzbox@otl{(O-|P)--(P)}{(O)rectangle(P)}}% + {}% + \md@test@t{\path[mdfbackground](O)rectangle(P)}{}% +% + \md@test@noline{\path[mdfbackground,mdfcorners](O|-P)--(O)--(O-|P)--(P)}{}% +% + \node[mdfbox] at (\md@Ax,\md@Ay){\box\@tempboxa};% Ausgabebox einfuegen + \end{scope} + %HIER KOMMT EIN WEITERES MAKRO + \end{tikzpicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \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=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. + +%%$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ +% +% \end{macrocode} +% +% \begin{macro}{mdframedIIpackagename,md@frameIIdate@svn} +% local settings +% \begin{macrocode} +\def\mdframedIIpackagename{md-frame-2} +\def\md@frameIIdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } +\ProvidesFile{md-frame-2.mdf}% + [\md@frameIIdate@svn$Id: mdframed.dtx 271 2011-12-09 12:25:08Z marco $ % + \mdversion: \mdframedIIpackagename] +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@ptlength@to@pscode,ptTps} +% Command to calculate a latex length to postscript +% \begin{macrocode} +\def\md@ptlength@to@pscode#1{\pst@number{#1} \pst@number\psxunit div } +\let\ptTps\md@ptlength@to@pscode\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@test@ltrb,md@test@ltr,md@test@ltb,md@test@trb,md@test@lrb,md@test@lb,md@test@rb,^^A +% md@test@tr,md@test@lt,md@test@lr,md@test@tb,md@test@l,md@test@r,md@test@t,md@test@b,md@test@single} +% Short forms of checking the option which lines should be drawn. +% \begin{macrocode} +%%%% _____t_____ +%%%% | | +%%%% | | +%%%% | | +%%%% l| |r +%%%% | | +%%%% | | +%%%% |___________| +%%%% b +%%Zusammenhaenge abfragen: +\newrobustcmd*\md@test@ltrb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%3-set +\newrobustcmd*\md@test@ltr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@ltb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@trb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@lrb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%2-set +\newrobustcmd*\md@test@lb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\md@test@rb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@tr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\md@test@lt{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +%Einzellinien +\newrobustcmd*\md@test@single{% + \ifboolexpr{ not (test {\md@test@ltrb} or test {\md@test@ltr} or + test {\md@test@ltb} or test {\md@test@trb} or + test {\md@test@lrb} or test {\md@test@lb} or + test {\md@test@rb} or test {\md@test@tr} or + test {\md@test@lt} ) }} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdfbackgroundstyle,mdflinestyle} +% background and line settings for pstricks +% \begin{macrocode} +\newpsstyle{mdfbackgroundstyle}{linecolor=\mdf@backgroundcolor,fillstyle=solid,% + fillcolor=\mdf@backgroundcolor,linestyle=solid,% + linewidth=\mdf@middlelinewidth@length,dimen=outer,% +}% +% +\newpsstyle{mdflinestyle}{linewidth=\mdf@middlelinewidth@length,% + linecolor=\mdf@linecolor,% + fillstyle=none,dimen=middle,}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@single} +% Single output +% \begin{macrocode} +\def\md@putbox@single{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \setlength\mdfboundingboxheight{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \ifbool{mdf@topline}% + {\advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax}{}% + \ifbool{mdf@bottomline}% + {\advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax}{}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \psset{unit=1truecm}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) + \md@test@ltrb{% + \psframe[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul % + \ptTps{\mdf@middlelinewidth@length} 0.5 mul)% + (! \ptTps{\mdfboundingboxwidth} % + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight}% + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add) + }{} + \md@test@ltr{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + 0) + }{} + \md@test@ltb{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdf@middlelinewidth@length} 0.5 mul)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + }{} + \md@test@trb{% + \psline[style=mdflinestyle]% + (! 0 + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdf@middlelinewidth@length} 0.5 mul) + (! 0 \ptTps{\mdf@middlelinewidth@length} 0.5 mul) + }{} + \md@test@lrb{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdfboundingboxheight})% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight}) + }{} + \md@test@lb{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdfboundingboxheight})% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + }{} + \md@test@rb{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight}) + }{} + \md@test@tr{% + \psline[style=mdflinestyle]% + (! 0 + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + 0) + }{} + \md@test@lt{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + }{} + \md@test@single{% + \ifbool{mdf@bottomline}{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + }{}% + \ifbool{mdf@topline}{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add) + }{}% + \ifbool{mdf@leftline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} )% + }{}% + \ifbool{mdf@rightline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add 0)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add + \ptTps{\mdfboundingboxheight} )% + }{}% + }{}% + %Hintergrund + \psframe[style=mdfbackgroundstyle]% + (!0 \ifbool{mdf@bottomline}{\ptTps{\mdf@middlelinewidth@length}}{0}) + (! \ptTps{\mdfboundingboxwidth} % + \ptTps{\mdfboundingboxheight} + \ifbool{mdf@topline}{\ptTps{\mdf@middlelinewidth@length} sub}{}) + %Ausgabe + \rput[b]% + (!\ptTps{\mdfboundingboxwidth} 0.5 mul % X-Koordinate + \ptTps{\mdf@innerbottommargin@length} + \ifbool{mdf@bottomline}{\ptTps{\mdf@middlelinewidth@length} add}{} + ){\box\@tempboxa} + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@first} +% First output +% \begin{macrocode} +\def\md@putbox@first{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\tw@}% + \setlength\mdfboundingboxheight{\dimexpr\ht\tw@+\dp\tw@\relax}% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% + \ifbool{mdf@topline}% + {\advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax}{}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@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)} + %Hintergrund + \psline[style=mdfbackgroundstyle,% + linearc={\dimexpr\mdf@roundcorner@length% + -\mdf@middlelinewidth@length\relax},] + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul + \ptTps{\mdfboundingboxheight} + \ifbool{mdf@topline}% + {\ptTps{\mdf@middlelinewidth@length} neg 1.5 mul add}% + {\ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add} )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add %X + \ptTps{\mdfboundingboxheight} + \ifbool{mdf@topline}% + {\ptTps{\mdf@middlelinewidth@length} neg 1.5 mul add}% + {\ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add} )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add %X + 0) + \ifboolexpr{ test {\md@test@ltrb} or test {\md@test@ltr}}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + 0) + }{} + \ifboolexpr{ test {\md@test@tr} or test {\md@test@trb}}{% + \psline[style=mdflinestyle]% + (! 0 + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + 0) + }{} + \ifboolexpr{ test {\md@test@ltb} or test {\md@test@lt}}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@roundcorner@length} neg add %X + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul add)% + }{} + \ifboolexpr{ test {\md@test@single} or test {\md@test@rb} or + test {\md@test@lrb} or test {\md@test@lb}}{% + \ifbool{mdf@topline}{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdfboundingboxheight} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add) + }{}% + \ifbool{mdf@leftline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} )% + }{}% + \ifbool{mdf@rightline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add 0)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add + \ptTps{\mdfboundingboxheight} )% + }{}% + }{}% + %Ausgabe + \rput[b](! + \ptTps{\mdfboundingboxwidth} 0.5 mul % X-Koordinate + \ptTps{\mdf@splitbottomskip@length}){\box\tw@} + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@middle} +% Middle output +% \begin{macrocode} +\def\md@putbox@middle{% + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\tw@}% + \setlength\mdfboundingboxheight{\dimexpr\ht\tw@+\dp\tw@\relax}% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \expandafter\psset\expandafter{\mdf@psset@local}% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolute}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \psset{unit=1truecm}% + \ifdimgreater{\mdfboundingboxheight}{\vsize} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} + \ifbool{mdf@leftline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} )% + }{}% + \ifbool{mdf@rightline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add 0)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add + \ptTps{\mdfboundingboxheight} )% + }{}% + %Hintergrund + \psframe[style=mdfbackgroundstyle,% + linearc=\z@]% + (!0 0) + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdfboundingboxheight}) + %Ausgabe + \rput[b](! + \ptTps{\mdfboundingboxwidth} 0.5 mul % X-Koordinate + \ptTps{\mdf@splitbottomskip@length} ){\box\tw@} + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{md@putbox@second} +% Last output +% \begin{macrocode} +\def\md@putbox@second{ + \ifvoid\@tempboxa + \else% + \mdf@makebox@out{% + \mdf@makeboxalign@left% + \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \setlength\mdfboundingboxheight{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \ifbool{mdf@bottomline}% + {\advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax}{}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \expandafter\psset\expandafter{\mdf@psset@local} + \psset{linearc=\mdf@roundcorner@length,cornersize=absolute}% + \psset{unit=1truecm}% + \mdf@makebox@in[\mdfboundingboxwidth]{% + \null% + \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) + %Hintergrund + \psline[style=mdfbackgroundstyle,% + linearc={\dimexpr\mdf@roundcorner@length% + -\mdf@middlelinewidth@length\relax},]%% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul + \ptTps{\mdfboundingboxheight} )% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul + \ifbool{mdf@bottomline}% + {\ptTps{\mdf@middlelinewidth@length} neg 1.5 mul neg}% + {\ptTps{\mdf@middlelinewidth@length} neg 0.5 mul neg} )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add + \ifbool{mdf@bottomline}% + {\ptTps{\mdf@middlelinewidth@length} neg 1.5 mul neg}% + {\ptTps{\mdf@middlelinewidth@length} neg 0.5 mul neg} )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg add + \ptTps{\mdfboundingboxheight} ) + %%%%%%%%%%%% + \ifboolexpr{ test {\md@test@ltrb} or test {\md@test@lrb}}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdfboundingboxheight})% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight}) + }{} + \ifboolexpr{ test {\md@test@ltb} or test {\md@test@lb}}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdfboundingboxheight})% + (! \ptTps{\mdf@middlelinewidth@length} 0.5 mul neg + \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + }{} + \ifboolexpr{ test {\md@test@trb} or test {\md@test@rb}}{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add %X + \ptTps{\mdfboundingboxheight}) + }{} + \ifboolexpr{ test {\md@test@single} or test {\md@test@ltr} or + test {\md@test@tr} or test {\md@test@lt}}{% + \ifbool{mdf@bottomline}{% + \psline[style=mdflinestyle]% + (! 0 \ptTps{\mdf@middlelinewidth@length} 0.5 mul )% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul ) + }{}% + \ifbool{mdf@leftline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul 0)% + (! \ptTps{\mdf@middlelinewidth@length} neg 0.5 mul + \ptTps{\mdfboundingboxheight} )% + }{}% + \ifbool{mdf@rightline}{% + \psline[style=mdflinestyle]% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add 0)% + (! \ptTps{\mdfboundingboxwidth} + \ptTps{\mdf@middlelinewidth@length} 0.5 mul add + \ptTps{\mdfboundingboxheight} )% + }{}% + }{}% + %Ausgabe + \rput[b](! + \ptTps{\mdfboundingboxwidth} 0.5 mul % X-Koordinate + \ptTps{\mdf@innerbottommargin@length} + \ifbool{mdf@bottomline}{\ptTps{\mdf@middlelinewidth@length} add}{} + ){\box\@tempboxa} + \end{pspicture}% + }% + \mdf@makeboxalign@right% + }% + \fi +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + \endinput +%eof +% \end{macrocode} +% \iffalse +%</mdframepstricks> +% \fi +% \Finale +% +\endinput + |