diff options
author | Karl Berry <karl@freefriends.org> | 2012-01-08 23:48:38 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-01-08 23:48:38 +0000 |
commit | 94249602eec639469e2a964a821eaf4e04ccf322 (patch) | |
tree | dc88b7c2150463d5c947d38fb2832d86f301b92f /Master/texmf-dist/source/latex | |
parent | 8ddb27d0f1bb31de2e06ebf7871975b19118d1fe (diff) |
mdframed (8jan12)
git-svn-id: svn://tug.org/texlive/trunk@25052 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx | 923 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mdframed/mdframed.dtx | 4942 |
2 files changed, 3351 insertions, 2514 deletions
diff --git a/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx b/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx deleted file mode 100644 index 5ca2c62ccef..00000000000 --- a/Master/texmf-dist/source/latex/mdframed/mdframed-examples.dtx +++ /dev/null @@ -1,923 +0,0 @@ -% \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 index 6702f39d28b..53b1a72ab32 100644 --- a/Master/texmf-dist/source/latex/mdframed/mdframed.dtx +++ b/Master/texmf-dist/source/latex/mdframed/mdframed.dtx @@ -14,12 +14,21 @@ Author's name: Marco Daniel and Elke Schubert (supports tikz implementation) License type: lppl ================================================================ +The revision history is printed in the documentation. + +================================================================ The current development is available at github: https://github.com/marcodaniel/mdframed ================================================================ -The package provides two dtx files, one Makefile and -one documentclass. By running the script `make all` you will +The package provides + * one dtx files, + * one Makefile (compiling for Linux/Mac), + * one mdframedmake.bat (compiling for Windows) + * one personal documentclass ltxmdf.cls + * one example picture donald-duck.jpg + +By running the script `make all` you will produce the following files: - README.txt - mdframed.sty @@ -28,7 +37,6 @@ produce the following files: - 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 @@ -37,8 +45,6 @@ produce the following files: - 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: @@ -53,13 +59,12 @@ I recommend the following installation in your texmf-tree: - mdframed-example-pstricks.pdf - mdframed-example-texsx.tex - mdframed-example-texsx.pdf +- donald-duck.jpg /source/latex/mdframed/ - Makefile - mdframed.dtx -- mdframed-examples.dtx -- donald-duck.jpg /tex/latex/mdframed - mdframed.sty @@ -182,6 +187,15 @@ Have fun! \nopreamble\nopostamble \usedir{doc/latex/mdframed} \generate{\file{README.txt}{\from{mdframed.dtx}{readme}}} +\nopreamble\nopostamble +\generate{\file{mdframed-example-default.tex}{\from{mdframed.dtx}{mdframed-example-default}}} +\nopreamble\nopostamble +\generate{\file{mdframed-example-tikz.tex}{\from{mdframed.dtx}{mdframed-example-tikz}}} +\nopreamble\nopostamble +\generate{\file{mdframed-example-pstricks.tex}{\from{mdframed.dtx}{mdframed-example-pstricks}}} +\nopreamble\nopostamble +\generate{\file{mdframed-example-texsx.tex}{\from{mdframed.dtx}{mdframed-example-texsx}}} + \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else @@ -189,11 +203,11 @@ Have fun! \fi %</internal> %<*driver> -%%$Id: mdframed.dtx 273 2011-12-10 09:21:09Z marco $ +%%$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,11pt,]{ltxmdf} \usepackage[framemethod=TikZ]{mdframed} -\ltxmdfsetifoot$Id: mdframed.dtx 273 2011-12-10 09:21:09Z marco $ +\ltxmdfsetifoot$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ \EnableCrossrefs \CodelineIndex @@ -204,7 +218,7 @@ Have fun! %</driver> % \fi % -% \CheckSum{3517} +% CheckSum{3517} % % \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 @@ -225,39 +239,48 @@ Have fun! % \GetFileInfo{mdframed.sty} % % \changes{v1.0a}{2011/11/26}{Created dtx and fixes bugs} +% \changes{v1.1beta}{2012/01/02}{Renamed some commands so that every command have the same prefix \protect\Cmd{mdf@}} % -% \title{The \Pack{mdframed} package\footnote{Extending the package \texttt{framed.sty}} +% \title{The \Pack{mdframed} package +% \footnote{Extending the package \texttt{framed.sty}} % \subtitle{auto-split frame environment} % \author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}% -% \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}}} +% \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.} +% \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. +% 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,% @@ -292,20 +315,38 @@ Have fun! % % % \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}. +% +% \minisec{Loadings \Pack{mdframed}} +% The package itself loads the packages +% \begin{itemize} +% \item \Pack{kvoptions}, +% \item \Pack{xparse} (new), +% \item \Pack{etoolbox} and +% \item \Pack{color}. +% \end{itemize} +% Depending on the options \Pack{mdframed} will load +% \begin{itemize} +% \item \Pack{xcolor}, +% \item \Pack{tikz} or +% \item \Pack{pstricks}. +% \end{itemize} % % Load the package as usual: % \iffalse %<*example> % \fi \begin{tltxmdfexample} -% \usepackage[<GLOBAL OPTIONS>]{mdframed} + \usepackage[<GLOBAL OPTIONS>]{mdframed} \end{tltxmdfexample} % \iffalse %</example> % \fi % +% Only the option \Opt{framemethod} should be load by the +% optional argument of \Cmd{usepackage}. All other options +% should be loaded with \Cmd{mdfsetup} or related environments. +% The package should be loaed after \Pack{amsthm} if you need the package. +% \minisec{Provided environment} % The package defines only one environment with the following syntax: % \iffalse %<*example> @@ -321,12 +362,104 @@ Have fun! % 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. +% \Pack{mdframed} detects whether the environment is used inside \Pack{float} +% or \Pack{minipage} environments. If you use \Pack{mdframed} in such +% an environment \Pack{mdframed} will use the option \Opt{nobreak} automatically. % % \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}). +% If you are using \Pack{mdframed} inside \Pack{twoside} mode you can set +% the option \Opt{innermargin} and \Opt{outermargin} (see section \ref{optlength}). +% The length will be ignored if you use the option \Opt{usetwoside}. +% +% +% %%%%%%%%%%%%%%%%%%%%%%% +% \section{The frames}\label{sec:cmds} +% +% Normally you can say \Pack{mdframed} draws only some lines. +% To allow page breaks the following designs are supported. +% If you load the package with \Opt{framemethod=default} you +% can only draw a single line. Inside the gray box the text +% will be printed. +% \newcommand\Punkt[2][below]{% +% \node[label=#1:#2] at (#2){\tikz\fill(0,0)circle(0.05);};} +% \newcommand\Single[1][]{\path[#1] (O)--(O|-P)--(P)--(P|-O)--cycle;} +% \newcommand\FirstSecond[1][]{\path[#1] (O|-P)--(O)--(P|-O)--(P);} +% \newcommand\MiddleFlaeche[1][]{\path[#1] (O)--(O|-P)--(P)--(P|-O);} +% \newcommand\MiddleLinien[1][]{\path[#1] (O)--(O|-P)(P)--(P|-O);} +% \begin{center} +% \vspace*{2\baselineskip} +% \null\hfill +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm+2mm+6mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \Single[line width=3mm,draw=blue!20] +% \Single[clip] +% \Single[fill=gray!70] +% \Single[line width=7mm,draw=green!20] +% \end{scope} +% \Single[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] at (24mm,35mm) +% {Frame of a single page}; +% \end{tikzpicture}% +% \hfill% +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{-2cm-1mm-3mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \FirstSecond[line width=3mm,draw=blue!20] +% \FirstSecond[clip] +% \FirstSecond[fill=gray!70] +% \FirstSecond[line width=7mm,draw=green!20] +% \end{scope} +% \FirstSecond[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] at (2.4,0.7) +% {First box -- first part of the output}; +% \end{tikzpicture} +% \hfill\null +% +% \vspace{2\baselineskip} +% +% \null\hfill +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm+1mm+3mm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \FirstSecond[line width=3mm,draw=blue!20] +% \FirstSecond[clip] +% \FirstSecond[fill=gray!70] +% \FirstSecond[line width=7mm,draw=green!20] +% \end{scope} +% \FirstSecond[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] at (24mm,25mm) +% {Second box -- last part of the output}; +% \end{tikzpicture}% +% \hfill% +% \begin{tikzpicture}[baseline=(current bounding box.north)] +% \coordinate (O) at (0,0); +% \pgfmathsetlengthmacro\x{4cm+2mm+6mm} +% \pgfmathsetlengthmacro\y{2cm} +% \coordinate (P) at (\x,\y); +% \begin{scope} +% \MiddleLinien[line width=3mm,draw=blue!20] +% \MiddleFlaeche[clip] +% \MiddleFlaeche[fill=gray!70] +% \MiddleLinien[line width=7mm,draw=green!20] +% \end{scope} +% \MiddleLinien[line width=2mm,draw=red!20,use as bounding box] +% \node[anchor=south,font=\bfseries,text width=4cm,align=center] at (24mm,25mm) +% {Middle box -- middle part of the output}; +% \end{tikzpicture} +% \hfill\null % +% \captionof{figure}{The basic frames}\label{fig:basicframes} +%\end{center} % %%%%%%%%%%%%%%%%%%%%%%% % \section{Commands}\label{sec:cmds} % The following commands should countenance your by the handling with \Pack{mdframed} @@ -355,45 +488,57 @@ Have fun! % \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: -% +% \ExplCmd{renewmdenv} +% By using this command you can redefine environments which are created by \Cmd{newmdenv}. +% +% \ExplCmd{surroundwithmdframed} +% Sometimes you have predefined environments. This commands allows you to set +% a \Env{environmet} surround this predefined environment. To set a \Env{mdframed} +% around the environment \Env{verbatim} you can simple say without changing the +% original name. % \iffalse %<*example> % \fi -\begin{tltxmdfexample}[deletekeywords={mdframed}] - \newmdtheoremenv[<mdframed-options>]{<envname>}% - [<numberedlike>]{<caption>}[<within>] +\begin{tltxmdfexample} + \surroundwithmdframed[linewidth=2pt]{verbatim} \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: +% +% +% \ExplCmd{mdflength} +% If you want to work with length defined by \Pack{mdframed} (for example +% \Opt{innerleftmargin}) you can now simple use the command \Cmd{mdflength}. % \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} + Some Text \hspace{\mdflength{innerleftmargin}} Some Text + + \the\mdflength{innerleftmargin} \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}. +% you can use the command \Cmd{mdfsetup} which is not limited to the preamble. +% Inside a group the settings work only local.\par +% \textbf{\color{red!70!black}At this point I want to recommend the using of the command \Cmd{mdfsetup} +% instead of setting package option via the optional argument of \Cmd{usepackage}. +% So your are avoiding breaking of non robust commands.}^^A +% \footnote{Thanks to Heiko Oberdieck and Philipp Stephani +% \href{https://groups.google.com/group/de.comp.text.tex/browse_thread/thread/15c5ad290490d426?hl=de}^^A +% {kvoptions-Declaration von Optionen schl\"agt fehl}} +% +% \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 @@ -411,14 +556,21 @@ Have fun! %</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}} +% \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}. +% 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. @@ -426,16 +578,20 @@ Have fun! % \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}. +% 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 +% 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. +% The option \Opt{framemethod} requires a string. Allowed combinations are listed in the +% following table. % \begin{table}[!ht] % \centering % \renewcommand*\arraystretch{1.3} @@ -449,19 +605,26 @@ Have fun! % \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.} +% \minisec{FYI} +% 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. +% \minisec{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. +% The options listed below can be set globally or locally and they are not +% limited to the preamble. +% I tried to define self explained names. % % \subsubsection{Options with lengths}\label{optlength} % -% In figure \eqref{fig:laengen} you can see the adjustable lengths which will be described below. +% In figure \eqref{fig:laengen} you can see the adjustable lengths +% (compare also figure \eqref{fig:basicframes}) 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. +% The figure shows three different colored frames. % % I know that the predefined lengths are not well prepared. Maybe I will change it later. % @@ -476,7 +639,8 @@ Have fun! % \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]% +% \node[fill=green!10,draw=black,framed,rounded corners, +% minimum width=3cm,minimum height=1.5cm]% % (CenterNode) {Contents}; % % %frames @@ -498,13 +662,15 @@ Have fun! % \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.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.south) +% edge node[align=center,framed,fill=white,draw=white]{innerbottommargin} % ($(CenterNode)-(0,\y1)+(0,.5\linew)$) ; % % %%innerleftmargin @@ -558,129 +724,337 @@ Have fun! % \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. +% \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 -% +% \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[TikZ or PSTricks] +% \ExplOpt[0pt]{outerlinewidth} +% Sets the width of the outer line around the environment. +% \limitation[TikZ or PSTricks] +% \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 -% +% \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[TikZ or PSTricks] +% \ExplOpt[linecolor]{middlelinecolor} +% Sets the color of the middle line around the environment. +% \limitation[TikZ or PSTricks] +% \ExplOpt[linecolor]{outerlinecolor} +% Sets the color of the outer line around the environment. +% \limitation[TikZ or PSTricks] % % \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 +% \ExplOpt[\{\}]{font} +% Sets the font of the environment. +% \ExplOpt[false]{ntheorem} +% Before setting this boolean key, you have to load +% the package \Pack{ntheorem}. With this option you set the +% values \Cmd{theorempreskipamount} and +% \Cmd{theorempostskipamount} to 0\;pt. +% \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[true]{usetwoside} +% If you set the twoside option you can work with \Opt{outermargin}. +% This option disable this and you work with +% \Opt{leftmargin} and \Opt{rightmargin}. +% \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 yet. +% \ExplOpt[none]{settings} +% This option allows the user to commit some macros. An example is shown in the +% example files. +% \ExplOpt[left]{align} +% Sometimes it is useful to align the environment itself. +% For this you have the option \Opt{align} which can be set to the following +% strings: +% \begin{itemize} +% \item \Opt{left}, +% \item \Opt{right} and +% \item \Opt{center}. +% \end{itemize} +% The alignments \Opt{left} or \Opt{right} depend on the given lengths +% \Opt{leftmargin} and \Opt{rightmargin}. Later I will present an example +% to demonstrate my bad English explanation. +% +% \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]{pstricksappsetting} +% \Pack{mdframed} works with defined style for the different elements. By +% using \Cmd{apptopsstyle} in combination with this option +% you can expand the definition. The predefined styles are +% \begin{itemize} +% \item \Opt{mdfbackgroundstyle} +% \item \Opt{mdfframetitlebackgroundstyle} +% \item \Opt{mdfouterlinestyle} +% \item \Opt{mdfinnerlinestyle} +% \item \Opt{mdfmiddlelinestyle} +% \item \Opt{mdfmiddlelinestyle} +% \end{itemize} +% \textbf{Before you change one please have a look at the file +% \texttt{md-frame-2.mdf} to see the settings.} +% \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\}} +% \item \Cmd{tikzset\{mdfframetitlerule/.style\}} +% \item \Cmd{tikzset\{mdfframetitlebackground/.sstyle\}} +% \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. +% \ExplOpt[false]{hidealllines} +% With this option you can decide whether all lines should be drawn or not. % % \subsection{Frametitle} +% In this section all relevant options of the frame title will be presented. +% They are not divided in their properties. +% +% \ExplOpt[none]{frametitle} +% The environment gets a title. To set a title use +% \Opt{frametitle=\{The Title of the frame\}} as an option of the environment. +% \ExplOpt[\Cmd{normalfont}\Cmd{bfseries}]{frametitlefont} +% Sets the format of the \Opt{frametitle}. +% \ExplOpt[\Cmd{raggedleft}]{frametitlealignment} +% Align the \Opt{frametitle}. This option must be set via \Cmd{mdfsetup}. +% \ExplOpt[false]{frametitlerule} +% Set this key to \Opt{false} to get no line between the frame title +% and the text. +% \ExplOpt[.2pt]{frametitlerulewidth} +% Sets the width of the line between the text and the title of \Env{mdframed}. +% \ExplOpt[5pt]{frametitleaboveskip} +% Sets the skip of the frame title to the margin above of \Env{mdframed}. +% \ExplOpt[5pt]{frametitlebelowskip} +% Sets the skip of the frame title to the rule of the frame title. +% \ExplOpt[white]{frametitlebackgroundcolor} +% Sets the color of the background of the frametitle +% +% \minisec{FYI and Note} +% \Pack{mdframed} can't handle page breaks inside the frametitle well. +% If you get a page break please have a closer look to the output. +% +% If a frame title is given the optional length \Opt{innertopmargin} is +% set between the rule under the frame title and the contents of \Env{mdframed}. +% +% \ExplOpt[false]{repeatframetitle} +% Repeat the frame title on every frame. The feature is currently not +% well implemented!!! +% +% +% \subsection{Theorems} +% In this section is described which commands can help you to define +% theorem environments with \Pack{mdframed}. % +% \ExplCmd{newmdtheoremenv} +% Since the package is often used to highlight theorem environments, +% 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: % -% \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}. -% +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \newmdtheoremenv[<mdframed-options>]{<envname>}% + [<numberedlike>]{<caption>}[<within>] +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% The last four arguments are equivalent to the command \Cmd{newtheorem}. +% Only the first optional argument is able to pass \Pack{mdframed}-options. A simple example is: +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample} + \theoremstyle{<some style>} + \newmdtheoremenv[linecolor=blue]{lemma}% + {Lemma}[section] + ... + \begin{lemma}[Some title] + foo foo foo foo foo foo + \end{lemma} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% So far there is no \Cmd{renewmdtheoremenv}! +% +% +% \ExplCmd{mdtheorem} +% This is a special kind of \Cmd{newtheorem}. The command has the following syntax. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \mdtheorem[<mdframed-options>]{<envname>}% + [<numberedlike>]{<caption>}[<within>] +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% How you can see the arguments are equal to \Cmd{newtheorem} but the +% command ignores every \Cmd{theoremstyle}. This is based on the following +% behavior. +% +% The command \Cmd{mdtheorem} creates two environment based on the given +% first mandotory argument. The first environment is named like the given +% argument and creates a numbered theorem. The second environment is named +% like the first mandatory argument with a star. This environment has the +% same formating but isn't numbered. +% +% The syntax of the new defined environments is equal to the normal theorem +% environments. +% \iffalse +%<*example> +% \fi +\begin{tltxmdfexample}[deletekeywords={mdframed}] + \begin{environemt}[optional title] + ... + \end{environment} +\end{tltxmdfexample} +% \iffalse +%</example> +% \fi +% What happened? The caption of the command will be set as the frame title. +% In this way all option of the frametitle are available. Furthermore +% \Pack{mdframed} provided additional options explained below. +% +% \ExplOpt[\{:\}]{theoremseparator} +% Sets the separator of the caption and the title of the theorem. +% The \Opt{theoremseparator} will be printed only if an theorem +% title is given. +% \ExplOpt[\{\}]{theoremtitlefont} +% Via the option \Opt{frametitlefont} you can manipulate the font +% of the frame title. The option \Opt{theoremtitlefont} allows to +% set a different font to the title of the theorem. +% \ExplOpt[\protect\Cmd{space}]{theoremspace} +% Sets the space after \Opt{theoremseparator}. +% +% Examples can be found in the attached files. +% % \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. +% 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. +% +% \minisec{Note} +% The output of the footnotes with the option \Opt{footnoteinside=false} +% are not in a splitted frame. I think it isn't useful because the first line +% of a new page shouldn't be a footnote. % % \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} +% \item[\texttt{mdframed-example-default}] +% Demonstration of examples created with \Opt{framemethod=default}. +% \item[\texttt{mdframed-example-tikz}] +% Demonstration of examples created with \Opt{framemethod=TikZ}. +% \item[\texttt{mdframed-example-pstricks}] +% Demonstration of examples created with \Opt{framemethod=pstricks}. +% \item[\texttt{mdframed-example-texsx}] +% Demonstration of examples like interaction with \Pack{listings} % \end{description} % % The examples are often not equivalent but normally they can be adapted to another method. +% So I really recommend to have a look to all example files. % % \section{Errors, Warnings and Messages} % @@ -816,10 +1190,12 @@ Have fun! % 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}. +% 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! +% 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}. @@ -827,9 +1203,12 @@ Have fun! % % % \section{ToDo} +% \textbf{\color{red} It is important to update the documentation} % \begin{enumerate} % \item see \enquote{Known Problems}. -% \item So far it isn't possible to combine the environment \Cmd{begin\{multicols\}} of the package \Pack{multicol} with \Pack{mdframed} with the whole option list. +% \item 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 @@ -837,22 +1216,17 @@ Have fun! % \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}. +% \textsf{Dick Nickalls;\quad Dietrich Grau;\quad Piazza Luca;\quad Jobst Hoffmann +% \quad Martin Scharrer;\quad Enrico Gregorio\quad Heiko Oberdiek; +% \quad Philipp Stephani}. % \medskip % % \noindent Thanks for proofreading % % \textsf{Alan Munn} and \textsf{Nahid Shajari} +% +% I hope I forgot nobody. % \clearpage % \appendix % \section{More information} @@ -861,8 +1235,8 @@ Have fun! % 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 +% the whole contents will be saved in a \Cmd{savebox} called \Cmd{mdf@splitbox@one}. +% After the calculation of the width and the height of the \Cmd{mdf@splitbox@one} (done by \Pack{mdframed.sty}) the box % will be set sequently (done by \Pack{md-frame-X.mdf}). The following figure demonstrates this. % % \begin{center} @@ -872,29 +1246,29 @@ Have fun! % \tikzset{mymatrixnodes/.style={% % matrix of nodes, % nodes={framed,draw=black,fill=yellow!10,}, -% column sep=4.2cm, -% row sep=1.2cm, +% column sep=4.5cm, +% row sep=1.5cm, % }} % \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}} \\ +% \mybox{read in and save contents in \Cmd{mdf@splitbox@one}} & +% \mybox{\Cmd{mdf@putbox@single}} \\ +% \mybox{split \textbackslash mdf@splitbox@one in \Cmd{mdf@splitbox@two} to the free space of the page} & +% \mybox{\Cmd{mdf@putbox@first}} \\ +% \mybox{contents of \Cmd{mdf@splitbox@one} have enough space on the new page} & +% \mybox{\Cmd{mdf@putbox@second}} \\ +% \mybox{split \Cmd{mdf@splitbox@one} in \Cmd{mdf@splitbox@two} to the free space of the page} & +% \mybox{\Cmd{mdf@putbox@middle}} \\ % }; % % \tikzstyle{every path}=[black,-triangle 45,thick,shorten >=4pt,shorten <=4pt] % \draw (m-1-1) edge node[align=center,anchor=south]{enough space on page} (m-1-2); -% \draw (m-2-1) edge node[align=center,anchor=south]{type out \Cmd{tw@}} (m-2-2); +% \draw (m-2-1) edge node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} (m-2-2); % \draw (m-3-1) edge node[align=center,anchor=south]{yes} (m-3-2); -% \draw (m-4-1) edge node[align=center,anchor=south]{type out \Cmd{tw@}} (m-4-2); +% \draw (m-4-1) edge node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} (m-4-2); % % \draw (m-2-2) edge node[align=center,fill=white]% -% {calculate the height of the new \Cmd{@tempboxa}} (m-3-1); +% {calculate the height of the new \Cmd{mdf@splitbox@one}} (m-3-1); % % % \draw (m-1-1) edge node[align=center,anchor=west]{not enough space on page} (m-2-1); @@ -903,7 +1277,7 @@ Have fun! % \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) +% {calculate the height of the new \Cmd{mdf@splitbox@one}} (\x2,\y1) % -- ($(m-3-1.west)-(0.8,0)$)-- ($(m-3-1.west)$) ; % % @@ -912,28 +1286,36 @@ Have fun! % \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}). -% -% +% 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}. +% 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. +% \item[\Cmd{mdf@putbox@single}] +% This command sets the contents of a single unsplit frame. +% \item[\Cmd{mdf@putbox@first}] +% This command sets the contents of the first frame of a split frame. +% \item[\Cmd{mdf@putbox@middle}] +% This command sets the contents of the middle frame of a split frame. +% \item[\Cmd{mdf@putbox@second}] +% This command sets the contents of the last frame of a split frame. % \end{description} % -% Using the explained commands we give an example. The command \Cmd{box} uses the contents of the savebox and types them out. +% 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). +% 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} + \def\mdf@putbox@single{\box\mdf@splitbox@one} \makeatother \end{tltxmdfexample} % \iffalse @@ -945,14 +1327,15 @@ Have fun! % \fi \begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] \makeatletter - \def\md@putbox@single{\leftline{\box\@tempboxa}} + \def\mdf@putbox@single{\leftline{\box\mdf@splitbox@one}} \makeatother \end{tltxmdfexample} % \iffalse %</example> % \fi % -% Now you have to know how the lengths are named. Every length which can be modified by the options has the following syntax: +% 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 @@ -973,19 +1356,20 @@ Have fun! %</example> % \fi % -% To create only a line at the left with the correct \Opt{leftmargin} you can set \Cmd{md@putboxsingle} as follows +% To create only a line at the left with the correct \Opt{leftmargin} you +% can set \Cmd{mdf@putboxsingle} as follows % % \iffalse %<*example> % \fi \begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] \makeatletter - \def\md@putbox@single{% + \def\mdf@putbox@single{% \leftline{% \hspace*{\mdf@leftmargin@length}% - \rule[-\dp\@tempboxa]{\mdf@linewidth}% - {\ht\@tempboxa+\dp\@tempboxa}% - \box\@tempboxa + \rule[-\dp\mdf@splitbox@one]{\mdf@linewidth}% + {\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}% + \box\mdf@splitbox@one }% } \makeatother @@ -1004,6 +1388,22 @@ Have fun! % % \subsection{Revision history}\label{rev} % \raggedright +% \minisec{Version 1.2 submitted 8 Jan 2012} +% \begin{itemize*} +% \item fixed documentation (Thanks to Dietrich Grau) +% \item fixed bug in combination with \Pack{amsthm} +% \item fixed bug in \Cmd{newmdtheoremenv} +% \item defined new styles via \Cmd{newpsstyle}\limitation[PSTricks] +% \item added new commands for interaction with \Pack{TikZ} and \Pack{PSTricks} +% \item expand frame title option by option \Opt{frametitlerule}, \Opt{frametitlerulewidth} +% \Opt{frametitlefont}, \Opt{frametitleaboveskip}, \Opt{frametitlebelowskip}, \Opt{frametitlealignment} +% \item removed limitation of three lines for PSTricks +% \item defined new commands \Cmd{surroundwithmdframed}, \Cmd{mdflength}, \Cmd{mdtheorem} +% \item load \Pack{xparse} by default +% \item changed internal names +% \item expanded examples +% \end{itemize*} +% % \minisec{Version 1.0b submitted 9 Dec 2011} % \begin{itemize*} % \item fixes documentation (Thanks to Dietrich Grau) @@ -1011,7 +1411,7 @@ Have fun! % \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} +% \item added \Cmd{@parboxrestore} to \Cmd{mdf@lrbox} % \end{itemize*} % % \footnotesize @@ -1054,7 +1454,8 @@ Have fun! % % \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 \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) @@ -1113,48 +1514,6 @@ Have fun! % \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 % @@ -1163,6 +1522,7 @@ Have fun! % And finally, here's how it all works\ldots % %\StopEventually{^^A +% \clearpage % \PrintChanges^^A % \clearpage % \PrintIndex^^A @@ -1175,38 +1535,38 @@ Have fun! % % \subsection{The Explanation of mdframed.sty} % -% %$Id: mdframed.dtx 273 2011-12-10 09:21:09Z marco $ -% %$Rev: 273 $ +% %$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ +% %$Rev: 312 $ % %$Author: marco $ -% %$Date: 2011-12-10 10:21:09 +0100 (Sa, 10. Dez 2011) $ -% \begin{macro}{mdversion,mdframedpackagename,md@maindate@svn} +% %$Date: 2012-01-08 13:43:36 +0100 (So, 08. Jan 2012) $ +% \begin{macro}{mdversion,mdframedpackagename,mdf@maindate@svn} % Set package information % \begin{macrocode} -\def\mdversion{v1.0c} +\def\mdversion{v1.2} \def\mdframedpackagename{mdframed} -\def\md@maindate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } +\def\mdf@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 273 2011-12-10 09:21:09Z marco $% + [\mdf@maindate@svn$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $% \mdversion: \mdframedpackagename] % \end{macrocode} % -% \begin{macro}{md@PackageWarning,md@PackageInfo,md@LoadFile@IfExist} +% \begin{macro}{mdf@PackageWarning,mdf@PackageInfo,mdf@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]{% +\newcommand*\mdf@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} +\newcommand*\mdf@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} +\newcommand*\mdf@LoadFile@IfExist[1]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}% }{% - \md@PackageWarning{The file #1 does not exist^^J - but needed by \mdframedpackagename^^J + \mdf@PackageWarning{The file #1 does not exist\MessageBreak + but needed by \mdframedpackagename\MessageBreak see documentation fo further information }% } @@ -1217,7 +1577,7 @@ Have fun! % Loading required packages % \begin{macrocode} \RequirePackage{kvoptions} -\RequirePackage{etex} +\RequirePackage{xparse} \RequirePackage{etoolbox}[2011/01/03] \RequirePackage{zref-abspage} \RequirePackage{color} @@ -1228,26 +1588,34 @@ Have fun! \SetupKeyvalOptions{family=mdf,prefix=mdf@} % \end{macrocode} -% \begin{macro}{md@iflength,md@iflength@check,md@iflength@check} +% \begin{macro}{mdf@iflength,mdf@iflength@check,mdf@iflength@check} % Command which checks the input of length options. If the length option is only -% a number the |defaultunit| will be used. Syntax: |\md@iflength{<Input>}{<length>}{<no length>}| +% a number the |defaultunit| will be used. Syntax: |\mdf@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 +\newlength{\mdf@templength} +\def\mdf@iflength#1{% + \afterassignment\mdf@iflength@check% + \mdf@templength=#1\mdf@defaultunit\relax\relax \expandafter\endgroup\next } -\def\md@iflength@check#1{% +\def\mdf@iflength@check#1{% \begingroup \ifx\relax#1\@empty \def\next{\@secondoftwo} \else \def\next{\@firstoftwo} - \expandafter\md@iflength@cleanup + \expandafter\mdf@iflength@cleanup \fi } -\def\md@iflength@cleanup#1\relax{} +\def\mdf@iflength@cleanup#1\relax{} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{mdf@dolist} +% Loop used by \Pack{mdframed}. +% \begin{macrocode} +\DeclareListParser*{\mdf@dolist}{,} % \end{macrocode} % \end{macro} % @@ -1265,21 +1633,15 @@ Have fun! \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}}% + \mdf@iflength{\@tempa}% + {\csxdef{mdfl@#1}{\the\mdf@templength}}% + {\csxdef{mdfl@#1}{\the\mdf@templength}}% \expandafter\setlength\csname mdf@#1@length\endcsname{\csname mdfl@#1\endcsname}% }% } % \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 @@ -1351,18 +1713,18 @@ Have fun! % Only provide to be backward compatible % \begin{macrocode} \define@key{mdf}{style}{% - \md@PackageWarning{package option style is depreciated^^J + \mdf@PackageWarning{package option style is depreciated^^J use framemethod instead\MessageBreak}% \renewcommand*\mdfglobal@style{#1}% \defcounter{mdf@globalstyle@cnt}{#1}% \ifcase\value{mdf@globalstyle@cnt}\relax %0 <- kein Grafikpaket - \or\md@LoadFile@IfExist{tikz}% - \or\md@LoadFile@IfExist{pstricks-add}% + \or\mdf@LoadFile@IfExist{tikz}% + \or\mdf@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}}% + \mdf@LoadFile@IfExist{pst-node}% + \or\mdf@LoadFile@IfExist{pst-node}% + \else\mdf@PackageWarning{Unknown global style \value{mdf@globalstyle@cnt}}% \fi% } % \end{macrocode} @@ -1370,39 +1732,39 @@ Have fun! % \begin{macro}{mdf@framemethod} % \begin{macrocode} \providecommand*\mdf@framemethod{} -\def\md@framemethod@i{}% -\def\md@framemethod@ii{}% -\def\md@framemethod@iii{}% +\def\mdf@framemethod@i{}% +\def\mdf@framemethod@ii{}% +\def\mdf@framemethod@iii{}% % \end{macrocode} % \end{macro} % % \begin{macrocode} \define@key{mdf}{framemethod}[default]{% - \lowercase{\def\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}% + \lowercase{\def\mdf@tempa{#1}} + \forcsvlist{\listadd\mdf@framemethod@i}{default,tex,latex,none,0} + \forcsvlist{\listadd\mdf@framemethod@ii}{pgf,tikz,1} + \forcsvlist{\listadd\mdf@framemethod@iii}{pstricks,ps,2,postscript} + \xifinlist{\mdf@tempa}{\mdf@framemethod@i}% {\def\mdf@@framemethod{default}\defcounter{mdf@globalstyle@cnt}{0}}% - {\xifinlist{\md@tempa}{\md@framemethod@ii}% + {\xifinlist{\mdf@tempa}{\mdf@framemethod@ii}% {\def\mdf@@framemethod{tikz}\defcounter{mdf@globalstyle@cnt}{1}}% - {\xifinlist{\md@tempa}{\md@framemethod@iii}% + {\xifinlist{\mdf@tempa}{\mdf@framemethod@iii}% {\def\mdf@@framemethod{pstricks}\defcounter{mdf@globalstyle@cnt}{2}}% {% - \md@LoadFile@IfExist{#1}% + \mdf@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}% + \or\mdf@LoadFile@IfExist{tikz}% + \or\mdf@LoadFile@IfExist{pst-node}% + \or\mdf@LoadFile@IfExist{pst-node}% \fi% } % \end{macrocode} % -% +% \changes{v1.1beta}{2011/12/17}{Added option \protect\Opt{titleaboveskip}, \protect\Opt{titlebelowskip}, \protect\Opt{frametitlerulewidth}} % \begin{macro}{mdf@do@lengthoption} % Here the declaration of the length option. The input method is explained above. % \begin{macrocode} @@ -1411,46 +1773,61 @@ Have fun! {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},% + {outermargin==\z@},% + {innermargin==\z@},% {linewidth==0.4pt},% {innerlinewidth==\z@},% {middlelinewidth==\expandafter\mdf@linewidth@length},% {outerlinewidth==\z@},% {roundcorner==\z@},% {footenotedistance==\medskipamount}, - {userdefinedwidth==\linewidth} -} + {userdefinedwidth==\linewidth}, + {frametitleaboveskip==5pt}, + {frametitlebelowskip==5pt}, + {frametitlerulewidth==.2pt}, + {frametitleleftmargin==10pt},% + {frametitlerightmargin==10pt},% +} % \end{macrocode} % \end{macro} -% +% \changes{v1.1beta}{2011/12/17}{Added option \protect\Opt{frametitlerulecolor}, \protect\Opt{frametitlebackgroundcolor}, \protect\Opt{font} } % \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}{% + {frametitle=={}},% {defaultunit==pt},% - {settings=={}},% {linecolor==black},% {backgroundcolor==white},% {fontcolor==black},% + {frametitlefontcolor==black},% {innerlinecolor==\mdf@linecolor},% {outerlinecolor==\mdf@linecolor},% {middlelinecolor==\mdf@linecolor},% {psroundlinecolor==\mdf@backgroundcolor},% - {frametitle=={}},% - {frametitlefont==\bfseries\large},% + {frametitlerulecolor==\mdf@linecolor}, + {frametitlebackgroundcolor==\mdf@backgroundcolor},% + {settings=={}},% + {frametitlesettings=={}},% + {font=={}},% + {frametitlefont==\normalfont\bfseries},% {printheight==none},% + {alignment=={}},% + {frametitlealignment=={}},% + {theoremseparator=={:}},% + {theoremcountersep=={.}},% + {theoremtitlefont=={}},% + {theoremspace=={\space}},% } % \end{macrocode} % \end{macro} -% +% \changes{v1.1beta}{2011/12/17}{Added option \protect\Opt{usetwoside}} % \begin{macro}{mdf@do@booloption} % Here the declaration of the string option. The input method is explained above. % \begin{macrocode} @@ -1460,9 +1837,16 @@ Have fun! {leftline==true},% {bottomline==true},% {rightline==true},% + {frametitletopline==true},% + {frametitleleftline==true},% + {frametitlebottomline==true},% + {frametitlerightline==true},% {hidealllines==false},% + {frametitlerule==false},% {nobreak==false},% {footnoteinside==true},% + {usetwoside==true},% + {repeatframetitle==false},%Noch nicht richtig implementiert } % \end{macrocode} % \end{macro} @@ -1488,7 +1872,7 @@ Have fun! \newcommand*\mdf@makeboxalign@right{}% \define@key{mdf}{align}[left]{% \ifcsundef{mdf@align@#1@left}{% - \md@PackageWarning{Unknown alignment #1\MessageBreak}% + \mdf@PackageWarning{Unknown alignment #1\MessageBreak}% \letcs\mdf@makeboxalign@left{mdf@align@left@left}% \letcs\mdf@makeboxalign@right{mdf@align@left@right}% }{% @@ -1513,6 +1897,11 @@ Have fun! \define@key{mdf}{pstrickssetting}{% \def\mdf@psset@local{#1} } +\def\mdfpstricks@appendsettings{} +\define@key{mdf}{pstricksappsetting}{% + \def\mdfpstricks@appendsettings{#1}% +} + % \end{macrocode} % \end{macro} % @@ -1521,17 +1910,16 @@ Have fun! % \begin{macrocode} \def\mdf@xcolor{} \define@key{mdf}{xcolor}[none]{% + \def\@tempa{#1}% \@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% - }% - } + \def\@tempa{}% + }{}% + \ifx\relax\@tempa\relax\else + \PassOptionsToPackage{\mdf@xcolor}{xcolor}% + \RequirePackage{xcolor}% + \fi% +}% % \end{macrocode} % \end{macro} % @@ -1554,14 +1942,14 @@ Have fun! % % \begin{macrocode} \DeclareDefaultOption{% - \md@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} + \mdf@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} \ProcessKeyvalOptions*\relax % \end{macrocode} % % \begin{macro}{mdfsetup} % Short form of |\setkeys{mdf}| % \begin{macrocode} -\newcommand*{\mdfsetup}{\setkeys{mdf}} +\newrobustcmd*{\mdfsetup}{\setkeys{mdf}} % \end{macrocode} % \end{macro} % @@ -1570,7 +1958,7 @@ Have fun! % \begin{macrocode} \define@key{mdf}{style}{% \ifcsundef{mdf@definestyle@#1}{% - \md@PackageWarning{Unknown definedstyle #1^^J + \mdf@PackageWarning{Unknown definedstyle #1^^J You have to define a style ^^J via \string\mdfdefinedstyle\MessageBreak }% @@ -1582,81 +1970,168 @@ Have fun! % \end{macro} % % -% \begin{macro}{md@print@space} +% \begin{macro}{mdf@print@space} % Option to type out the free vertical space of the current page. % \begin{macrocode} -\let\md@PackageNoInfo\@gobble -\newrobustcmd*\md@ifstrequal@expand{% +\let\mdf@PackageNoInfo\@gobble +\newrobustcmd*\mdf@ifstrequal@expand{% \expandafter\ifstrequal\expandafter{\mdf@printheight}% } -\newrobustcmd*\md@print@space{% +\newrobustcmd*\mdf@print@space{% %case "none" - \md@ifstrequal@expand{none}{\def\md@tempa{NoInfo}}{% + \mdf@ifstrequal@expand{none}{\def\mdf@tempa{NoInfo}}{% %case "info" - \md@ifstrequal@expand{info}{\def\md@tempa{Info}}{% + \mdf@ifstrequal@expand{info}{\def\mdf@tempa{Info}}{% %case "warning" - \md@ifstrequal@expand{warning}{\def\md@tempa{Warning}}{% + \mdf@ifstrequal@expand{warning}{\def\mdf@tempa{Warning}}{% %case "unknown" - \md@PackageWarning{Unknown key for printheight=\mdf@printheight^^J + \mdf@PackageWarning{Unknown key for printheight=\mdf@printheight^^J use none, info or warning}% - \def\md@tempa{none}% + \def\mdf@tempa{none}% }% }% }% -\def\md@PackageInfoSpace{\csname md@Package\md@tempa\endcsname}% +\def\mdf@PackageInfoSpace{\csname mdf@Package\mdf@tempa\endcsname}% } % \end{macrocode} % \end{macro} +% \changes{v1.1beta}{2011/12/15}{Joining all new definitions} +% \changes{v1.1beta}{2011/12/15}{Create new \protect\Cmd{savebox} and renamed \protect\Cmd{@tempboxa}} +% \begin{macro}{new\ldots} +% Initialize all commands and length which will we used later +% \begin{macrocode} +\newsavebox\mdf@frametitlebox +\newsavebox\mdf@footnotebox +\newsavebox\mdf@splitbox@one +\newsavebox\mdf@splitbox@two +\newlength\mdfsplitboxwidth +\newlength\mdfsplitboxtotalwidth +\newlength\mdfsplitboxheight +\newlength\mdfsplitboxdepth +\newlength\mdfsplitboxtotalheight +\newlength\mdfframetitleboxwidth +\newlength\mdfframetitleboxtotalwidth +\newlength\mdfframetitleboxheight +\newlength\mdfframetitleboxdepth +\newlength\mdfframetitleboxtotalheight +\newlength\mdffootnoteboxwidth +\newlength\mdffootnoteboxtotalwidth +\newlength\mdffootnoteboxheight +\newlength\mdffootnoteboxdepth +\newlength\mdffootnoteboxtotalheight + +\newlength\mdftotallinewidth + +\newlength\mdfboundingboxwidth +\newlength\mdfboundingboxtotalwidth + +\newlength\mdfboundingboxheight +\newlength\mdfboundingboxdepth +\newlength\mdfboundingboxtotalheight + +\newlength\mdf@freevspace@length +\newlength\mdf@horizontalwidthofbox@length +\newlength\mdf@verticalmarginwhole@length + +% Command to expand the tikz code. (see md-frame-1.mdf) +\newrobustcmd\mdfcreateextratikz{} + +% \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} +% \changes{v1.0b}{2011/11/26}{added command \protect\Cmd{@parboxrestore} to \protect\Cmd{mdf@lrbox}} +% \changes{v1.1release}{2012/01/03}{changed definition of \protect\Cmd{mdf@lrbox} (Thanks Lars Madsen)} +% \changes{v1.1release}{2012/01/06}{expand definition of \protect\Cmd{mdf@lrbox} by \protect\Cmd{mdf@restoreparams}} +% \begin{macro}{mdf@lrbox,endmdf@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% +\def\mdf@lrbox#1{% +%%patch to work with amsthm + \mdf@patchamsthm +%%end patch + \edef\mdf@restoreparams{% + \parindent=\the\parindent \parskip=\the\parskip} + \setbox#1\vbox\bgroup + \begingroup + \mdf@horizontalmargin@equation% + \color@setgroup% + \hsize=\mdf@horizontalspaceofbox% \columnwidth=\hsize% \textwidth=\hsize% - \linewidth=\hsize% - \@parboxrestore - \bgroup\md@@frametitle\egroup\noindent% - \ignorespaces} + \let\if@nobreak\iffalse + \let\if@noskipsec\iffalse + \let\par\@@par + \let\-\@dischyph + \let\'\@acci\let\`\@accii\let\=\@acciii + \parindent\z@ \parskip\z@skip + \linewidth\hsize + \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip + \parfillskip\@flushglue \lineskip\normallineskip% + \baselineskip\normalbaselineskip% + \everypar{\mdf@restoreparams}\ignorespaces% +} + -\def\endmd@lrbox{\endgroup\unskip\color@endgroup} +\def\endmdf@lrbox{\endgroup\unskip\color@endgroup\egroup} + +% \end{macrocode} +% \end{macro} +% +% \changes{v1.1beta}{2011/12/16}{added command to avoid overfull box warning by vsplit} +% \begin{macro}{mdf@ignorevbadness,mdf@restorevbadness} +% Avoiding warnings during the splitting process by \Cmd{vsplit}. +% see \href{http://tex.stackexchange.com/questions/38496/how-to-avoid-underfull-vbox-in-combination-with-vsplit/38499#38499} +% {How to avoid underfull vbox in combination with \Cmd{vsplit?}} +% \begin{macrocode} +\newrobustcmd*\mdf@ignorevbadness{% + \edef\mdf@currentvbadness{\the\vbadness}% + \vbadness=\@M% + \afterassignment\mdf@restorevbadness} +\newrobustcmd*\mdf@restorevbadness{\vbadness=\mdf@currentvbadness\relax} % \end{macrocode} % \end{macro} % -% \begin{macro}{md@trivlist,endmd@trivlist} +% +% \begin{macro}{mdf@patchamsth} +% The package \Pack{amsthm} provides a not compatible starting of +% theorem. So I have to change the header of amsthm. +% \begin{macrocode} +\@ifpackageloaded{amsthm}{% + \newrobustcmd\mdf@patchamsthm{% + \let\mdf@deferred@thm@head\deferred@thm@head + \patchcmd{\deferred@thm@head}{\indent}{}{}{} + }% + }{\let\mdf@patchamsthm\relax}% +% \end{macrocode} +% \end{macro} +% +% +% \changes{v1.1release}{2012/01/07}{Added \protect\Cmd{mbox} to the definition. +% \protect\Cmd{item}\protect\Cmd{mbox}\protect\Cmd{relax} -- Need for amsthm} +% \begin{macro}{mdf@trivlist,endmdf@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{% +\def\mdf@trivlist#1{% + \setlength{\topsep}{#1}% + \partopsep\z@% + \parsep\z@% + \@nmbrlistfalse% + \@trivlist% + \labelwidth\z@% + \leftmargin\z@% + \itemindent\z@% + \let\@itemlabel\@empty% + \def\makelabel##1{##1}% + \item\leavevmode\hrule \@height\z@ \@width\linewidth\relax% +%% \item\mbox{}\relax% second version +%% \item\relax% first Version +} +\let\endmdf@trivlist\endtrivlist +\patchcmd\endmdf@trivlist\@endparenv\mdf@endparenv{}{} +\def\mdf@endparenv{% \addpenalty\@endparpenalty\addvspace\mdf@skipbelow@length\@endpetrue} + % \end{macrocode} % \end{macro} % @@ -1681,13 +2156,29 @@ Have fun! } \newrobustcmd*\mdfapptodefinestyle[2]{% \ifcsundef{mdf@definestyle@#1}% - {\md@PackageWarning{Unknown style #1}}% + {\mdf@PackageWarning{Unknown style #1}}% {\csappto{mdf@definestyle@#1}{,#2}}% } % \end{macrocode} % \end{macro} % -% \begin{macro}{newmdenv,renewmdenv,newmdtheoremenv} +% +% \begin{macro}{mdflength,surroundwithmdframed} +% Helper macros to work with mdframed +% \begin{macrocode} +\newrobustcmd*{\mdflength}[1]{\csuse{mdf@#1@length}} + +\newrobustcmd*{\surroundwithmdframed}[2][]{% + \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% + \AfterEndEnvironment{#2}{\end{mdframed}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \changes{v1.1beta}{2011/12/15}{Redefinition of \protect\Cmd{newmdtheoremenv}. +% -- Now check of theorem definition.} +% \begin{macro}{newmdenv,renewmdenv,newmdtheoremenv,mdtheorem} % Defining of the new environment defintions. % \begin{macrocode} \newrobustcmd*\newmdenv[2][]{% @@ -1703,71 +2194,205 @@ Have fun! \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[]}% + + +\DeclareDocumentCommand\newmdtheoremenv{O{} m o m o }{% + \ifboolexpr{ test {\IfNoValueTF {#3}} and test {\IfNoValueTF {#5}} }% + {\newtheorem{#2}{#4}}{% + \IfValueTF{#3}{\newtheorem{#2}[#3]{#4}}{}% + \IfValueTF{#5}{\newtheorem{#2}{#4}[#5]}{}% + }% + \BeforeBeginEnvironment{#2}{% + \begin{mdframed}[#1]}% + \AfterEndEnvironment{#2}{% + \end{mdframed}}% } -\def\newmdtheoremenv@iii[#1]#2[#3]#4[#5]{% - \ifboolexpr{ test {\ifblank {#3}} and test {\ifblank {#5}} }% + +\DeclareDocumentCommand{\mdtheorem}{ O{} m o m o }% + {\ifcsdef{#2}% + {\mdf@PackageWarning{Environment #2 already exits\MessageBreak}}% {% - \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]}{}% - }% + \IfNoValueTF {#3}% + {%#3 not given -- number relationship + \IfNoValueTF {#5} + {%#3+#5 not given + \@definecounter{#2}% + \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} + \newenvironment{#2}[1][]{% + \refstepcounter{#2} + \ifstrempty{##1}% + {\let\@temptitle\relax}% + {% + \def\@temptitle{\mdf@theoremseparator% + \mdf@theoremspace% + \mdf@theoremtitlefont% + ##1}% + } + \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% + {\end{mdframed}}% + \newenvironment{#2*}[1][]{% + \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} + \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% + {\end{mdframed}}% + }% + {%#5 given -- reset counter + \@definecounter{#2}\@newctr{#2}[#5]% + \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} + \expandafter\xdef\csname the#2\endcsname{% + \expandafter\noexpand\csname the#5\endcsname \@thmcountersep + \@thmcounter{#2}}% + \newenvironment{#2}[1][]{% + \refstepcounter{#2} + \ifstrempty{##1}% + {\let\@temptitle\relax}% + {% + \def\@temptitle{\mdf@theoremseparator% + \mdf@theoremspace% + \mdf@theoremtitlefont% + ##1}% + } + \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% + {\end{mdframed}}% + \newenvironment{#2*}[1][]{% + \ifstrempty{##1}% + {\let\@temptitle\relax}% + {% + \def\@temptitle{\mdf@theoremseparator% + \mdf@theoremspace% + \mdf@theoremtitlefont% + ##1}% + } + \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% + {\end{mdframed}}% + }% + }% + {%#3 given -- number relationship + \global\@namedef{the#2}{\@nameuse{the#3}}% + \newenvironment{#2}[1][]{% + \refstepcounter{#3} + \ifstrempty{##1}% + {\let\@temptitle\relax}% + {% + \def\@temptitle{\mdf@theoremseparator% + \mdf@theoremspace% + \mdf@theoremtitlefont% + ##1}% + } + \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% + {\end{mdframed}}% + \newenvironment{#2*}[1][]{% + \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} + \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% + {\end{mdframed}}% + }% }% - \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% - \AfterEndEnvironment{#2}{\end{mdframed}}% -} + } + % \end{macrocode} % \end{macro} % -% -% \begin{macro}{mdframedtitleenv,md@@frametitle} +% \changes{v1.1beta}{2011/12/17}{Added method frame title via \protect\Cmd{savebox}} +% \changes{v1.1release}{2012/01/05}{Edit algorithm to combine the saveboxes \protect\Cmd{mdf@frametitlebox} +% and \protect\Cmd{mdf@splitboxone} by the predefined settings: +% \protect\Cmd{parskip}\protect\Cmd{z@}, \protect\Cmd{parindent}\protect\Cmd{z@} and +% \protect\Cmd{offinterlineskip}} +% \begin{macro}{mdfframedtitleenv,mdf@@frametitle,mdf@setopt@body,mdf@setopt@title} % 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% +%TESTVERSION +% \newrobustcmd*\mdf@setopt@title{% +% \ifbool{mdf@frametitlerule}{\booltrue{mdf@bottomline}}{\boolfalse{mdf@bottomline}}% +% \let\ifmdf@leftline\ifmdf@frametitleleftline% +% \let\ifmdf@topline\ifmdf@frametitletopline% +% \let\ifmdf@rightline\ifmdf@frametitlerightline% +% \let\ifmdf@bottomline\ifmdf@frametitlebottomline% +% \mdfsetup{innerbottommargin=\mdf@titlebelowskip@length,% +% innertopmargin=\mdf@titleaboveskip@length,% +% middlelinecolor=\mdf@frametitlerulecolor,% +% backgroundcolor=\mdf@frametitlebackgroundcolor,% +% middlelinewidth=\mdf@frametitlerulewidth@length,% +% innerleftmargin=\mdf@frametitleleftmargin@length,% +% innerrightmargin=\mdf@frametitlerightmargin@length,% +% alignment=\mdf@frametitlealignment, +% skipbelow=\z@}% +% \def\mdf@linecolor@bottom{\color{\mdf@frametitlebottomrulecolor}}% +% \mdf@frametitlesettings% +% } +% +% \newrobustcmd*\mdf@setopt@body{% +% \mdfsetup{topline=false,skipabove=\z@}% +% \unskip\nointerlineskip% +% } +% +% \newrobustcmd\mdfframedtitleenv[1]{% +% \begingroup +% \mdf@setopt@title +% \color@setgroup +% \mdf@frametitlefont +% \mdf@lrbox{\mdf@splitbox@one}% +% \mdf@frametitlealignment +% #1\par\unskip +% \endmdf@lrbox +% \mdf@ignorevbadness +% \global\setbox\mdf@frametitlebox\vbox{\unvbox\mdf@splitbox@one}% +% \mdf@ignorevbadness +% \global\setbox\mdf@splitbox@one\vbox{\unvcopy\mdf@frametitlebox}% +% \detected@mdf@put@frame% +% \color@endgroup% +% \endgroup +% } +\newrobustcmd\mdfframedtitleenv[1]{% + \begingroup% + \color@setgroup% + \mdf@frametitlefont\color{\mdf@frametitlefontcolor}% + \mdf@lrbox{\mdf@frametitlebox}% + \mdf@frametitlealignment% + #1\par\unskip + \endmdf@lrbox% + \mdf@ignorevbadness% + \global\setbox\mdf@frametitlebox\vbox{\unvbox\mdf@frametitlebox}% + \global\mdfframetitleboxwidth=\wd\mdf@frametitlebox\relax% + \global\mdfframetitleboxheight=\ht\mdf@frametitlebox\relax% + \global\mdfframetitleboxdepth=\dp\mdf@frametitlebox\relax% + \global\mdfframetitleboxtotalheight=\dimexpr\ht\mdf@frametitlebox+\dp\mdf@frametitlebox + +\mdf@frametitleaboveskip@length+\mdf@frametitlebelowskip@length\relax% + \color@endgroup% + \endgroup% +} + +\newrobustcmd*\mdf@@frametitle{% + \mdfframedtitleenv{\mdf@frametitle}% +} + +\newrobustcmd*\mdf@@frametitle@use{% + \begingroup + \parskip\z@ + \parindent\z@ + \offinterlineskip + \mdf@ignorevbadness% + \global\setbox\mdf@splitbox@one\vbox{% + \unvcopy\mdf@frametitlebox% + \mdf@@frametitlerule% + \unvbox\mdf@splitbox@one + }% + \mdf@ignorevbadness% + \global\setbox\mdf@splitbox@one\vbox{% + \unvbox\mdf@splitbox@one}% + \endgroup + \mdfsetup{innertopmargin=\mdf@frametitleaboveskip@length}% } % \end{macrocode} % \end{macro} % -% \begin{macro}{md@checkntheorem} +% \begin{macro}{mdf@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 + +\newrobustcmd*\mdf@checkntheorem{% + \ifbool{mdf@ntheorem}% {\ifundef{\theorempreskipamount}% - {\md@PackageWarning{You have not loaded ntheorem yet}}% + {\mdf@PackageWarning{You have not loaded ntheorem yet}}% {\setlength{\theorempreskipamount}{\z@}% \setlength{\theorempostskipamount}{\z@}% }% @@ -1776,22 +2401,22 @@ Have fun! % \end{macrocode} % \end{macro} % -% \begin{macro}{md@footnoterule,md@footnoteoutput,md@footnoteinput} +% \begin{macro}{mdf@footnoterule,mdf@footnoteoutput,mdf@footnoteinput} % Support for footnotes. % \begin{macrocode} -\newrobustcmd*\md@footnoterule{% +\newrobustcmd*\mdf@footnoterule{% \kern0\p@% \hrule \@width 1in \kern 2.6\p@} -\newrobustcmd*\md@footnoteoutput{% +\newrobustcmd*\mdf@footnoteoutput{% \ifvoid\@mpfootins\else \nobreak% \vskip\mdf@footenotedistance@length% \normalcolor% - \md@footnoterule + \mdf@footnoterule \unvbox\@mpfootins \fi% } -\newrobustcmd*\md@footnoteinput{% +\newrobustcmd*\mdf@footnoteinput{% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}% \c@mpfootnote\z@% @@ -1800,7 +2425,7 @@ Have fun! % \end{macrocode} % \end{macro} % -% \begin{macro}{mdf@load@style,md@styledefinition} +% \begin{macro}{mdf@load@style,mdf@styledefinition} % Load the method to draw the frame and set style definition. % \begin{macrocode} \newrobustcmd*\mdf@load@style{% @@ -1814,515 +2439,622 @@ Have fun! {\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 + \mdf@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} +\newrobustcmd*\mdf@styledefinition{%AVOID!!! + \ifnumequal{\value{mdf@globalstyle@cnt}}{0}% + {\deflength{\mdf@innerlinewidth@length}{\z@}% + \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% + \deflength{\mdf@outerlinewidth@length}{\z@}% + \let\mdf@innerlinecolor\mdf@linecolor% + \let\mdf@middlelinecolor\mdf@linecolor% + \let\mdf@outerlinecolor\mdf@linecolor% + }{}% +% \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} +% \changes{v1.1beta}{2011/12/17}{Added frametitle detection to \protect\Cmd{detected@mdf@put@frame}} +% \begin{macro}{detected@mdf@put@frame} % Detect whether inside a non breakable environment. % \begin{macrocode} -\let\md@reserved@a\@empty -\newrobustcmd*\detected@md@put@frame{% +\let\mdf@reserved@a\@empty +\newrobustcmd*\detected@mdf@put@frame{% \ifmdf@nobreak%Option nobreak=true? - \def\md@reserved@a{\md@put@frame@standalone}% + \def\mdf@reserved@a{\mdf@put@frame@standalone}% \else - \def\md@reserved@a{\md@put@frame}% + \def\mdf@reserved@a{\mdf@put@frame}% \ifnum\@floatpenalty<0\relax%Detecting float \if@twocolumn% \ifx\@captype\@undefined - \def\md@reserved@a{\md@put@frame}% + \def\mdf@reserved@a{\mdf@put@frame}% \else - \md@PackageInfo{mdframed inside float ^^J + \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% - \def\md@reserved@a{\md@put@frame@standalone}% + \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi \else - \md@PackageInfo{mdframed inside float ^^J + \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% - \def\md@reserved@a{\md@put@frame@standalone}% + \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% \if@minipage% - \md@PackageInfo{mdframed inside minipage ^^J + \mdf@PackageInfo{mdframed inside minipage ^^J mdframed uses option nobreak \mdframedpackagename}% - \def\md@reserved@a{\md@put@frame@standalone}% + \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \ifinner% - \md@PackageInfo{mdframed inside a box ^^J + \mdf@PackageInfo{mdframed inside a box ^^J mdframed uses option nobreak \mdframedpackagename}% - \def\md@reserved@a{\md@put@frame@standalone}% + \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% -\md@reserved@a% +\mdf@reserved@a% } % \end{macrocode} % \end{macro} % -% \begin{macro}{md@hidealllines@check} +% \begin{macro}{mdf@hidealllines@check} % \begin{macrocode} -\newrobustcmd*\md@hidealllines@check{% +\newrobustcmd*\mdf@hidealllines@check{% \ifbool{mdf@hidealllines}{% - \setbool{mdf@leftline}{false}% - \setbool{mdf@rightline}{false}% - \setbool{mdf@topline}{false}% - \setbool{mdf@bottomline}{false}% + \boolfalse{mdf@leftline}\boolfalse{mdf@rightline}% + \boolfalse{mdf@topline}\boolfalse{mdf@bottomline}% + \boolfalse{mdf@frametitleleftline}\boolfalse{mdf@frametitlerightline}% + \boolfalse{mdf@frametitletopline}\boolfalse{mdf@frametitlebottomline}% }{}% } % \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} -% +% \changes{v1.1beta}{2011/12/16}{Defining \protect\Env{mdframed} with \protect\Cmd{newenvironment}} +% \changes{v1.1beta}{2012/01/01}{Changed the definition of \protect\Cmd{mdf@trivlist}} +% \changes{v1.1release}{2012/01/03}{Changed the enddefinition of \protect\Env{mdframed}. +% Uses now \protect\Cmd{@doendpe} instead of \protect\Cmd{\@endparenv}} % \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% +\newenvironment{mdframed}[1][]{% +\begingroup% +\color@setgroup% + \mdfsetup{userdefinedwidth=\linewidth,#1}% + \mdf@hidealllines@check% + \mdf@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{% + \mdf@checkntheorem% + \mdf@styledefinition% + \mdf@footnoteinput% + \color{\mdf@fontcolor}% + \ifvmode\nointerlineskip\fi% + \mdf@trivlist{\mdf@skipabove@length}%% + \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle}% + \mdf@settings% + \mdf@lrbox{\mdf@splitbox@one}% + }% + {\par\unskip% \ifmdf@footnoteinside% - \def\md@reserveda{% - \md@footnoteoutput% - \end{md@lrbox}% - \detected@md@put@frame}% + \def\mdf@reserveda{% + \mdf@footnoteoutput% + \endmdf@lrbox% + \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} + \detected@mdf@put@frame}% \else% - \def\md@reserveda{% - \end{md@lrbox}% - \detected@md@put@frame% - \md@footnoteoutput% + \def\mdf@reserveda{% + \endmdf@lrbox% + \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} + \detected@mdf@put@frame% + \mdf@footnoteoutput% }% \fi% - \md@reserveda% - \end{md@trivlist}% - \hrule \@height\z@ \@width\hsize -\endgroup\@endparenv% + \mdf@reserveda% + \endmdf@trivlist% +\color@endgroup\endgroup\@doendpe%\@endparenv% } + + % \end{macrocode} % \end{macro} % -% \begin{macro}{md@twoside@checklength,md@zref@label,if@md@pageodd,md@pageisodd,md@pageiseven,md@@setzref} +% \begin{macro}{mdf@twoside@checklength,mdf@zref@label,if@mdf@pageodd,mdf@pageisodd,mdf@pageiseven,mdf@@setzref} % The whole bunch is used to work width twoside mode and uses the correct margins. % \begin{macrocode} \newtoggle{md:checktwoside} \settoggle{md:checktwoside}{false} -\newrobustcmd*\md@twoside@checklength{% +\newrobustcmd*\mdf@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}}% - }{}% + \ifbool{mdf@usetwoside}% + {\mdf@PackageInfo{mdframed works in twoside mode}% + \settoggle{md:checktwoside}{true}% + \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% + \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% + }% + {\mdf@PackageInfo{mdframed inside twoside mode but\MessageBreak + works with oneside mode}% + \settoggle{md:checktwoside}{false}% + }% \fi% } -\newcounter{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% + +\newcounter{mdf@zref@counter}%keine doppelten laebes +\zref@newprop*{mdf@pagevalue}[0]{\number\value{page}} +\zref@addprop{\ZREF@mainlist}{mdf@pagevalue} +\newrobustcmd*\mdf@zref@label{% + \stepcounter{mdf@zref@counter} + \zref@label{mdf@pagelabel-\number\value{mdf@zref@counter}}% } -\newrobustcmd*\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*\if@mdf@pageodd{% + \zref@refused{mdf@pagelabel-\the\value{mdf@zref@counter}}% + \ifodd\zref@extract{mdf@pagelabel-\the\value{mdf@zref@counter}}{mdf@pagevalue}% + \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% + \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% + \else + \setlength\mdf@rightmargin@length{\mdf@innermargin@length}% + \setlength\mdf@leftmargin@length{\mdf@outermargin@length}% + \fi% } -\newrobustcmd*\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*\mdf@@setzref{% + \iftoggle{md:checktwoside}{\mdf@zref@label\if@mdf@pageodd}{}% } -\newrobustcmd*\md@@setzref{\md@zref@label\if@md@pageodd} % \end{macrocode} % \end{macro} % % -% \begin{macro}{md@freepagevspace} +% \begin{macro}{mdf@freepagevspace} % \begin{macrocode} -\newrobustcmd*\md@freepagevspace{% +\newrobustcmd*\mdf@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% + {\mdf@freevspace@length\vsize}% + {\mdf@freevspace@length=\pagegoal\relax% + \advance\mdf@freevspace@length by -\pagetotal\relax% }% } % \end{macrocode} % \end{macro} % -% \begin{macro}{md@advancelength@orizontalmargin@add,md@horizontalspaceofbox,md@horizontalmargin@equation} +% \changes{v1.1beta}{2011/12/16}{Removing \protect\Cmd{@arrayparboxrestore}} +% \begin{macro}{mdf@advancelength@horizontalmargin@add,mdf@horizontalspaceofbox,mdf@horizontalmargin@equation} % Width of the box % \begin{macrocode} -\newrobustcmd*\md@advancelength@orizontalmargin@add[1]{% - \advance\md@horizontalspaceofbox by -\csname mdf@#1@length\endcsname\relax% +\newrobustcmd*\mdf@advancelength@horizontalmargin@sub[1]{% + \advance\mdf@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}{% +\newlength\mdf@horizontalspaceofbox +\newrobustcmd*\mdf@horizontalmargin@equation{% + \setlength{\mdf@horizontalspaceofbox}{\mdf@userdefinedwidth@length}% + \mdf@dolist{\mdf@advancelength@horizontalmargin@sub}{% leftmargin,outerlinewidth,middlelinewidth,% innerlinewidth,innerleftmargin,innerrightmargin,% innerlinewidth,middlelinewidth,outerlinewidth,% rightmargin}% \notbool{mdf@leftline}{% - \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% - \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% - \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\mdf@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% }{}% \notbool{mdf@rightline}{% - \advance\md@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% - \advance\md@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% - \advance\md@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% + \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% + \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% + \advance\mdf@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% + \ifdimless{\mdf@horizontalspaceofbox}{3cm}% + {\mdf@PackageWarning{You have only a width of 3cm}}{} + \hsize=\mdf@horizontalspaceofbox% } % \end{macrocode} % \end{macro} % -% \begin{macro}{md@keeplines@single} +% \begin{macro}{mdf@keeplines@single} % horizontal space in relation of the lines. % \begin{macrocode} -\newrobustcmd*\md@keeplines@single{% +\newrobustcmd*\mdf@keeplines@single{% \notbool{mdf@topline}{% - \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% \notbool{mdf@bottomline}{% - \advance\md@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% + \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% } % \end{macrocode} % \end{macro} % % -% \begin{macro}{md@advancelength@verticalmarginwhole,md@advancelength@freevspace@sub,md@advancelength@freevspace@add} +% \begin{macro}{mdf@advancelength@verticalmarginwhole,mdf@advancelength@freevspace@sub,mdf@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*\mdf@advancelength@verticalmarginwhole[1]{% + \advance\mdf@verticalmarginwhole@length by \csname mdf@#1@length\endcsname\relax% } -\newrobustcmd*\md@advancelength@freevspace@sub[1]{% +\newrobustcmd*\mdf@advancelength@freevspace@sub[1]{% \advance\dimen@ by -\csname mdf@#1@length\endcsname\relax% } -\newrobustcmd*\md@advancelength@freevspace@add[1]{% +\newrobustcmd*\mdf@advancelength@freevspace@add[1]{% \advance\dimen@ by \csname mdf@#1@length\endcsname\relax% } % \end{macrocode} % \end{macro} % % -% \begin{macro}{md@reset} +% \begin{macro}{mdf@reset} % Reset changes % \begin{macrocode} -\protected@edef\md@reset{\boxmaxdepth\the\boxmaxdepth +\protected@edef\mdf@reset{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}% % \end{macrocode} % \end{macro} % -% \begin{macro}{md@put@frame@standalone} +% \begin{macro}{mdf@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% +\newrobustcmd*\mdf@put@frame@standalone{\relax% + \ifvoid\mdf@splitbox@one\relax + \mdf@PackageWarning{The environment is empty\MessageBreak}% + \let\mdf@reserved@a\relax% \else %Hier berechnung Box-Inhalt+Rahmen oben und unten - \setlength{\md@verticalmarginwhole@length}% - {\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% - \mdf@dolist{\md@advancelength@verticalmarginwhole}{% + \setlength{\mdf@verticalmarginwhole@length}% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% - \md@keeplines@single% - \def\md@reserved@a{\md@putbox@single}% + \mdf@keeplines@single% + \def\mdf@reserved@a{\mdf@putbox@single}% \fi - \md@reserved@a% + \mdf@reserved@a% } % \end{macrocode} % \end{macro} % -% \begin{macro}{md@put@frame} +% \begin{macro}{mdf@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% +\def\mdf@put@frame{\relax% +\ifvoid\mdf@splitbox@one\relax +\mdf@PackageWarning{The environment is empty\MessageBreak}% +\let\mdf@reserved@a\relax% \else - \md@print@space% - \md@freepagevspace% - \md@PackageInfoSpace{\the\md@freevspace@length before the beginning of ^^J + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \mdf@print@space% + \mdf@freepagevspace%gives \mdf@freevspace@length + \mdf@PackageInfoSpace{\the\mdf@freevspace@length before the beginning of \MessageBreak the environment ending on input line \MessageBreak}% - \ifdimless{\md@freevspace@length}{2\baselineskip} - {\md@PackageInfo{Not enough space on this page} + \ifdimless{\mdf@freevspace@length}{2\baselineskip} + {\mdf@PackageInfo{Not enough space on this page} \vfill\eject% - \def\md@reserved@a{\md@put@frame}% + \def\mdf@reserved@a{\mdf@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}{% + \setlength{\mdf@verticalmarginwhole@length}% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% - \md@keeplines@single% - \ifdimless{\md@verticalmarginwhole@length}{\md@freevspace@length}% + \mdf@keeplines@single% + \ifdimless{\mdf@verticalmarginwhole@length}{\mdf@freevspace@length}% {%passt auf Seite% \begingroup - \iftoggle{md:checktwoside}{\md@@setzref}{}% - \md@putbox@single + \mdf@@setzref + \mdf@putbox@single% \endgroup - \let\md@reserved@a\relax}% - {\def\md@reserved@a{\md@put@frame@i}}%passt nicht auf Seite + \let\mdf@reserved@a\relax}% + {\def\mdf@reserved@a{\mdf@put@frame@i}}%passt nicht auf Seite }% \fi -\md@reserved@a% +\mdf@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} +% \changes{v1.0b}{2011/12/09}{removed \protect\Cmd{setbox\textbackslash mdf@splitbox@two \textbackslash vbox{\textbackslash unvbox \textbackslash mdf@splitbox@two}}} +% \begin{macro}{mdf@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% +\def\mdf@put@frame@i{%Box muss gesplittet werden -- Ausgabe der ersten Teilbox + %Berechnung der Splittgroesse -- Linien und Abstand oben + %\vbox to 0pt{}% + %\rlap{\smash{\the\mdf@freevspace@length}}%\hrule \@height\z@ \@width\hsize + \mdf@freepagevspace%gives \mdf@freevspace@length + %Berechnung ob nur oberen Linien nur auf die Seite passe + \dimen@=\the\mdf@freevspace@length% + \dimen@i=\mdf@innertopmargin@length% + \advance\dimen@i by \mdf@innerlinewidth@length% + \advance\dimen@i by \mdf@middlelinewidth@length% + \advance\dimen@i by \mdf@outerlinewidth@length% + \advance\dimen@i by 2\baselineskip% + \ifdimless{\dimen@}{\dimen@i}% + {\hrule \@height\z@ \@width\hsize% + \vfill\eject% + \def\mdf@reserved@a{\mdf@put@frame}% + }{% + \mdf@freepagevspace% + \dimen@=\the\mdf@freevspace@length% + \mdf@dolist{\mdf@advancelength@freevspace@sub}{%calculate with \dimen@ + outerlinewidth,middlelinewidth,innerlinewidth,% + innertopmargin,splitbottomskip}% + \ifbool{mdf@topline}{}{% + \advance\dimen@ by \mdf@innerlinewidth@length% + \advance\dimen@ by \mdf@middlelinewidth@length% + \advance\dimen@ by \mdf@outerlinewidth@length% + }% + \advance\dimen@.8\pageshrink + \ifdimless{\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}{\dimen@}% + {\mdf@PackageWarning{You got a bad break\MessageBreak + you have to change it manually\MessageBreak + by changing the text, the space\MessageBreak + or something else}% + \advance\dimen@ by -1.8\baselineskip\relax% + }{}% +% \advance\dimen@ by -1pt\relax%Box darf nicht zu Groß werden. + \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% + \mdf@ignorevbadness% + \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@ + \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% + \ifbool{mdf@repeatframetitle}{% + \setbox\mdf@splitbox@one\vbox{% + \vbox to \mdf@splittopskip@length{\hsize\z@} + %\par\unskip\nointerlineskip + \unvcopy\mdf@frametitlebox% + \mdf@@frametitlerule% + \vbox to\dimexpr + -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox + +\mdf@innertopmargin@length\relax{\hsize\z@}% + \unvbox\mdf@splitbox@one}% + }{}% + \ifdimgreater{\ht\mdf@splitbox@two+\dp\mdf@splitbox@two}{\dimen@}% + {%Falsch gesplittet + \mdf@PackageInfo{Box was splittet wrong\MessageBreak}% + \dimen@i=\dimen@ + \advance\dimen@ by -\ht\mdf@splitbox@two + \advance\dimen@ by -\dp\mdf@splitbox@two + \advance\dimen@i by 0.5\dimen@ + \splittopskip\z@% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two% + %benoetigt um Tiefe zu haben + \hrule \@height\dp\strutbox \@width\z@ + \unvbox\mdf@splitbox@one} + \splittopskip\mdf@splittopskip@length% + \mdf@ignorevbadness% + \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \dimen@i + \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% + \ifbool{mdf@repeatframetitle}{% + \setbox\mdf@splitbox@one\vbox{% + \vbox to \mdf@splittopskip@length{\hsize\z@} + %\par\unskip\nointerlineskip + \unvcopy\mdf@frametitlebox% + \mdf@@frametitlerule% + \vbox to\dimexpr + -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox + +\mdf@innertopmargin@length\relax{\hsize\z@}% + \unvbox\mdf@splitbox@one}% + }{}% + }{}% + \ifvoid\mdf@splitbox@one + \mdf@PackageWarning{You got a bad break\MessageBreak + because the splittet box is empty\MessageBreak + You have to change the page settings\MessageBreak + like enlargethispage or something else}% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two% + %benoetigt um Tiefe zu haben + \hrule \@height\dp\strutbox \@width\z@ + \unvbox\mdf@splitbox@one}% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}% + \enlargethispage{\baselineskip}% + \def\mdf@reserved@a{\mdf@put@frame}% + \fi + \ifvoid\mdf@splitbox@two%%pruefe, ob erste Box leer ist + \hrule \@height\z@ \@width\hsize + \vfill\eject% + \def\mdf@reserved@a{\mdf@put@frame}% + \else + \ifdimequal{\ht\mdf@splitbox@two}{0pt}% + {\hrule \@height\z@ \@width\hsize% \vfill\eject% - \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% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@two\unvbox\mdf@splitbox@one} + \def\mdf@reserved@a{\mdf@put@frame}% + }% + {% + \begingroup% + \mdf@@setzref + \mdf@putbox@first%%%Groesse des Splittens passt + \endgroup% + \hrule \@height\z@ \@width\hsize% + \vfill\eject% + \def\mdf@reserved@a{\mdf@put@frame@ii}% + }% + \fi% + }% +\mdf@reserved@a% } % \end{macrocode} % \end{macro} % % -% \begin{macro}{md@put@frame@ii} +% \begin{macro}{mdf@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}{% +\def\mdf@put@frame@ii{%Ausgabe der mittleren Box(en) wenn vorhanden + \setlength{\mdf@freevspace@length}{\vsize}% + \setlength{\dimen@}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \mdf@dolist{\mdf@advancelength@freevspace@add}{%used \dimen@ outerlinewidth,middlelinewidth,innerlinewidth,% innerbottommargin}%%%Addition der Linien unten - \ifbool{mdf@bottomline}{}{\advance\dimen@ by -\mdf@middlelinewidth@length\relax}% - \ifdimgreater{\dimen@}{\md@freevspace@length}% + \ifbool{mdf@bottomline}{}{% + \advance\dimen@i by \mdf@innerlinewidth@length% + \advance\dimen@i by \mdf@middlelinewidth@length% + \advance\dimen@i by \mdf@outerlinewidth@length% + \relax}% + \ifdimgreater{\dimen@}{\mdf@freevspace@length}% {% - \advance\md@freevspace@length by -\mdf@splitbottomskip@length + \advance\mdf@freevspace@length by -\mdf@splitbottomskip@length\relax% + \ifbool{mdf@bottomline}{}{% + \advance\dimen@i by -\mdf@innerlinewidth@length% + \advance\dimen@i by -\mdf@middlelinewidth@length% + \advance\dimen@i by -\mdf@outerlinewidth@length% + \relax}% \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% - \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 + \mdf@ignorevbadness% + \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \mdf@freevspace@length% + \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%PRUEFEN!!! + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%PRUEFEN!!!! + \ifbool{mdf@repeatframetitle}{% + \setbox\mdf@splitbox@one\vbox{% + \vbox to \mdf@splittopskip@length{\hsize\z@} + %\par\unskip\nointerlineskip + \unvcopy\mdf@frametitlebox% + \mdf@@frametitlerule% + \vbox to\dimexpr + -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox + +\mdf@innertopmargin@length\relax{\hsize\z@}% + \unvbox\mdf@splitbox@one}% + }{}% + \ifvoid\mdf@splitbox@one\relax% + \mdf@PackageWarning{You got a bad break\MessageBreak because the split box is empty\MessageBreak You have to change the settings}% - \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}% + \setbox\mdf@splitbox@one{\unvbox\mdf@splitbox@two}% + \def\mdf@reserved@a{\enlargethispage{\baselineskip}\mdf@put@frame@ii}% + \else + \begingroup + \mdf@@setzref + \mdf@putbox@middle% + \endgroup + \hrule \@height\z@ \@width\hsize + \vfill\eject + \def\mdf@reserved@a{\mdf@put@frame@ii}% + \fi }%Hier die Ausgabe der mittleren Box - {\ifvoid\@tempboxa - \md@PackageWarning{You got a bad break\MessageBreak + {\ifvoid\mdf@splitbox@one + \mdf@PackageWarning{You got a bad break\MessageBreak because the last split box is empty\MessageBreak - You have to change the settings}% + You have to change the settings}%% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% \fi% - \begingroup - \iftoggle{md:checktwoside}{\md@@setzref}{}% - \md@putbox@second% - \endgroup - \let\md@reserved@a\relax% + \ifdimless{\ht\mdf@splitbox@one}{1sp}{% + \mdf@PackageWarning{You got a bad break\MessageBreak + because the last split box is empty\MessageBreak + You have to change the settings}% + %\hb@xt@\z@{\box\mdf@splitbox@one}% + \let\mdf@reserved@a\relax% + \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% + }{}% + \begingroup% + \mdf@@setzref + \mdf@putbox@second% + \hrule \@height\z@ \@width\hsize% + \endgroup% + \let\mdf@reserved@a\relax% }%Hier kommt die Ausgabe der letzten Box - \md@reserved@a% + \mdf@reserved@a% } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@test@ltrb,mdf@test@ltr,mdf@test@ltb,mdf@test@trb,mdf@test@lrb,mdf@test@lb,mdf@test@rb,^^A +% mdf@test@tr,mdf@test@lt,mdf@test@lr,mdf@test@tb,mdf@test@l,mdf@test@r,mdf@test@t,mdf@test@b,mdf@test@noline} +% Short forms of checking the option which lines should be drawn. +% \begin{macrocode} +%%%% _____t_____ +%%%% | | +%%%% | | +%%%% | | +%%%% l| |r +%%%% | | +%%%% | | +%%%% |___________| +%%%% b +%%Zusammenhaenge abfragen: +\newrobustcmd*\mdf@test@ltrb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%3-set +\newrobustcmd*\mdf@test@ltr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@ltb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@trb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@lrb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +%2-set +\newrobustcmd*\mdf@test@lb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@rb{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@tr{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@lt{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@lr{% + \ifboolexpr{not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@tb{% + \ifboolexpr{ (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +%Einzellinien +\newrobustcmd*\mdf@test@l{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@r{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@t{% + \ifboolexpr{ (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@b{% + \ifboolexpr{ not (bool {mdf@topline}) and (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +%keine Linien +\newrobustcmd*\mdf@test@noline{% + \ifboolexpr{ not (bool {mdf@topline}) and not (bool {mdf@bottomline}) + and not (bool {mdf@leftline}) and not (bool {mdf@rightline})}} +\newrobustcmd*\mdf@test@single{% + \ifboolexpr{ not (test {\mdf@test@ltrb} or test {\mdf@test@ltr} or + test {\mdf@test@ltb} or test {\mdf@test@trb} or + test {\mdf@test@lrb} or test {\mdf@test@lb} or + test {\mdf@test@rb} or test {\mdf@test@tr} or + test {\mdf@test@lt} ) }} +% % \end{macrocode} % \end{macro} % % +% % \begin{macrocode} \DisableKeyvalOption[action=warning,package=mdframed]{mdf}{framemethod}% \DisableKeyvalOption[action=warning,package=mdframed]{mdf}{xcolor}% @@ -2349,43 +3081,69 @@ Have fun! %% 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 273 2011-12-10 09:21:09Z marco $ +%%$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ % % \end{macrocode} % -% \begin{macro}{mdframedOpackagename,md@frameOdate@svn} +% \begin{macro}{mdframedOpackagename,mdf@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 } +\def\mdf@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 273 2011-12-10 09:21:09Z marco $% + [\mdf@frameOdate@svn$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $% \mdversion: \mdframedOpackagename] % \end{macrocode} % \end{macro} - - -% \begin{macro}{mdframedOpackagename,md@frameOdate@svn} +% +% +% \begin{macro}{mdf@background@default,mdf@linecolor@default,mdf@linecolor@bottom} % short command % \begin{macrocode} \def\mdf@background@default{\color{\mdf@backgroundcolor}} -\def\mdf@linecolor@default{\color{\mdf@middlelinecolor}} +\def\mdf@frametitlebackground@default{\color{\mdf@frametitlebackgroundcolor}} +\def\mdf@innerlinecolor@default{\color{\mdf@innerlinecolor}} +\def\mdf@middlelinecolor@default{\color{\mdf@middlelinecolor}} +\def\mdf@outerlinecolor@default{\color{\mdf@outerlinecolor}} +\def\mdf@frametitlerulecolor@default{\color{\mdf@frametitlerulecolor}} +\let\mdf@linecolor@default\mdf@middlelinecolor@default +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox to \mdf@frametitlerulewidth@length {\hsize\mdfframetitleboxwidth% + \par\unskip\vskip\mdf@frametitlebelowskip@length% + \rlap{\noindent\hspace*{-\mdf@innerleftmargin@length}% + \mdf@frametitlerulecolor@default% + \rule{\dimexpr\mdfframetitleboxwidth% + +\mdf@innerleftmargin@length + +\mdf@innerrightmargin@length\relax + }{\mdf@frametitlerulewidth@length}% + }}% + }{} + \par\unskip\vskip\mdf@innertopmargin@length% +}% + % \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} +% \begin{macro}{mdf@putbox@single,mdf@frame@background@single,mdf@frame@topandbottomline@single,mdf@frame@leftline@single,mdf@frame@rightline@single,mdf@frame@rightline@single} % The frame of of a non splitted contents of mdframed % \begin{macrocode} -\def\md@frame@background@single{% +\def\mdf@frame@background@single{% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% -% -\def\md@frame@topandbottomline@single{% +\def\mdf@frame@frametitlebackground@single{% + \rlap{\mdf@frametitlebackground@default% + \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% +}% + +\def\mdf@frame@topline@single{% \rlap{\mdf@linecolor@default% \ifbool{mdf@topline}{% \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth% @@ -2394,56 +3152,57 @@ Have fun! {\mdf@middlelinewidth@length}}% {}% }% - \rlap{\mdf@linecolor@default% +}% +\def\mdf@frame@bottomline@single{% + \rlap{\ifbool{mdf@leftline}{\hspace*{-\mdf@middlelinewidth@length}}{}\mdf@linecolor@default% \ifbool{mdf@bottomline}{% \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% - {\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}\relax}% {\mdf@middlelinewidth@length}}% {}% - }% -} -% -\def\md@frame@leftline@single{% + }% +}% +\def\mdf@frame@leftline@single{% \llap{\mdf@linecolor@default% - \rule[\dimexpr-\mdfboundingboxdepth% - \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% + \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\dimexpr\mdfboundingboxtotalheight% - +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}% - +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% - }% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{}\relax}% + }% }% -% -\def\md@frame@rightline@single{% +\def\mdf@frame@rightline@single{% \rlap{\mdf@linecolor@default% \hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[\dimexpr-\mdfboundingboxdepth% - \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% + \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 +\def\mdf@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox + \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% \setlength{\mdfboundingboxwidth}% - {\wd\@tempboxa}% + {\wd\mdf@splitbox@one}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% \setlength{\mdfboundingboxheight}% - {\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \setlength{\mdfboundingboxdepth}% - {\dimexpr\dp\@tempboxa+\mdf@innerbottommargin@length\relax}% + {\dimexpr\dp\mdf@splitbox@one+\mdf@innerbottommargin@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innertopmargin@length% +\mdf@innerbottommargin@length\relax}% + \setlength{\mdftotallinewidth}{% + \dimexpr\mdf@innerlinewidth@length+\mdf@middlelinewidth@length% + +\mdf@outerlinewidth@length}% \noindent% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% +\ifbool{mdf@leftline}% @@ -2453,16 +3212,18 @@ Have fun! \mdf@makebox@in[\@tempdima]{% \null% \ifbool{mdf@leftline}{% - \hspace*{\mdf@middlelinewidth@length}% - \md@frame@leftline@single% + \hspace*{\mdftotallinewidth}% + \mdf@frame@leftline@single% }{}% - \md@frame@topandbottomline@single% - \md@frame@background@single% + \mdf@frame@topline@single% + \mdf@frame@bottomline@single% + \mdf@frame@background@single% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@single}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% - \md@frame@rightline@single% + \mdf@frame@rightline@single% }{}% - {\box\@tempboxa}% + {\box\mdf@splitbox@one}% }% \mdf@makeboxalign@right% }% @@ -2472,18 +3233,41 @@ Have fun! % \end{macro} % % -% \begin{macro}{md@putbox@first,md@frame@background@first,md@frame@leftline@first,md@frame@topline@first,md@frame@rightline@first} +% \begin{macro}{mdf@putbox@first,mdf@frame@background@first,mdf@frame@leftline@first,mdf@frame@topline@first,mdf@frame@rightline@first} % The first frame of of a splitted contents of mdframed % \begin{macrocode} -\def\md@frame@background@first{% +\def\mdf@frame@background@first{% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% -% -\def\md@frame@leftline@first{% +\def\mdf@frame@frametitlebackground@first{% + \ifdimless{\mdfframetitleboxtotalheight}{\mdfboundingboxtotalheight}% + {% + \rlap{\mdf@frametitlebackground@default% + \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=-\p@\relax% + }{\mdf@PackageWarning{You got a page break inside the frame title\MessageBreak + Current this isn't well supported}% + \rlap{\mdf@frametitlebackground@default% + \rule[-\mdfboundingboxdepth]% + {\mdfboundingboxtotalwidth}% + {\mdfboundingboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=\dimexpr\mdfframetitleboxtotalheight + -\mdfboundingboxheight + +\mdf@frametitlebelowskip@length + +.5\baselineskip-1pt +% +\dp\strutbox + \relax% + }% +}% +\def\mdf@frame@leftline@first{% \llap{\mdf@linecolor@default% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% @@ -2491,8 +3275,7 @@ Have fun! +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% }% }% -% -\def\md@frame@topline@first{% +\def\mdf@frame@topline@first{% \rlap{\mdf@linecolor@default% \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth+% \mdf@splitbottomskip@length+\mdf@innertopmargin@length\relax]% @@ -2500,8 +3283,7 @@ Have fun! {\mdf@middlelinewidth@length}% }% } -% -\def\md@frame@rightline@first{% +\def\mdf@frame@rightline@first{% \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[-\mdfboundingboxdepth]% @@ -2510,19 +3292,18 @@ Have fun! +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% }% }% -% -\def\md@putbox@first{%%%% Ausgabe der Teilbox 1 - \ifvoid\@tempboxa +\def\mdf@putbox@first{%%%% Ausgabe der Teilbox 1 + \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out[\linewidth]{% \mdf@makeboxalign@left% - \setlength{\mdfboundingboxwidth}{\wd\tw@}% + \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@two}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% - \setlength{\mdfboundingboxheight}{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \setlength{\mdfboundingboxdepth}% - {\dimexpr\dp\tw@+\mdf@splitbottomskip@length\relax}% + {\dimexpr\dp\mdf@splitbox@two+\mdf@splitbottomskip@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innertopmargin@length% +\mdf@splitbottomskip@length\relax}% @@ -2535,14 +3316,15 @@ Have fun! \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% - \md@frame@leftline@first}{}% + \mdf@frame@leftline@first}{}% \ifbool{mdf@topline}{% - \md@frame@topline@first}{}% - \md@frame@background@first% + \mdf@frame@topline@first}{}% + \mdf@frame@background@first% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@first}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% - \md@frame@rightline@first}{}% - {\box\tw@}% + \mdf@frame@rightline@first}{}% + {\box\mdf@splitbox@two}% }% \mdf@makeboxalign@right% }% @@ -2552,58 +3334,62 @@ Have fun! % \end{macro} % % -% \begin{macro}{md@putbox@second,md@frame@background@second,md@frame@leftline@second,md@frame@bottomline@second,md@frame@rightline@second} +% \begin{macro}{mdf@putbox@second,mdf@frame@background@second,mdf@frame@leftline@second,mdf@frame@bottomline@second,mdf@frame@rightline@second} % The last frame of of a splitted contents of mdframed % \begin{macrocode} -\def\md@frame@background@second{% +\def\mdf@frame@background@second{% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% -% -\def\md@frame@leftline@second{% +\def\mdf@frame@frametitlebackground@second{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@}% + {}% + {\rlap{\mdf@frametitlebackground@default% + \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + }% +}% +\def\mdf@frame@leftline@second{% \llap{\mdf@linecolor@default% - \rule[\dimexpr-\mdfboundingboxdepth% - -\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax]% + \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% - {\dimexpr\mdfboundingboxtotalheight% - +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax}% - }% + {\dimexpr\mdfboundingboxtotalheight}% + }% }% -% -\def\md@frame@bottomline@second{% - \rlap{\mdf@linecolor@default% +\def\mdf@frame@bottomline@second{% + \rlap{\ifbool{mdf@leftline}{\hspace*{-\mdf@middlelinewidth@length}}{}\mdf@linecolor@default% \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% - {\mdfboundingboxtotalwidth}% + {\dimexpr\mdfboundingboxtotalwidth + \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} + \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}\relax}% {\mdf@middlelinewidth@length}% }% }% -% -\def\md@frame@rightline@second{% +\def\mdf@frame@rightline@second{% \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% - \rule[\dimexpr-\mdfboundingboxdepth% - -\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax]% + \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% - {\dimexpr\mdfboundingboxtotalheight% - +\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}\relax}% + {\mdfboundingboxtotalheight}% }% -}% -% -\def\md@putbox@second{% - \ifvoid\@tempboxa% +}% +\def\mdf@putbox@second{% + \ifvoid\mdf@splitbox@one% \else \mdf@makebox@out{% \mdf@makeboxalign@left% - \setlength{\mdfboundingboxwidth}{\wd\@tempboxa}% + \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@one}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% - \setlength{\mdfboundingboxheight}{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \setlength{\mdfboundingboxdepth}% - {\dimexpr\dp\@tempboxa+\mdf@innerbottommargin@length\relax}% + {\dimexpr\dp\mdf@splitbox@one+\mdf@innerbottommargin@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innerbottommargin@length\relax}% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% @@ -2614,14 +3400,15 @@ Have fun! \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% - \md@frame@leftline@second}{}% + \mdf@frame@leftline@second}{}% \ifbool{mdf@bottomline}{% - \md@frame@bottomline@second}{}% - \md@frame@background@second% + \mdf@frame@bottomline@second}{}% + \mdf@frame@background@second% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@second}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% - \md@frame@rightline@second}{}% - {\box\@tempboxa}% + \mdf@frame@rightline@second}{}% + {\box\mdf@splitbox@one}% }% \mdf@makeboxalign@right% }% @@ -2631,46 +3418,54 @@ Have fun! % \end{macro} % % -% \begin{macro}{md@putbox@middle,md@frame@background@middle,md@frame@leftline@middle,md@frame@rightline@middle} +% \begin{macro}{mdf@putbox@middle,mdf@frame@background@middle,mdf@frame@leftline@middle,mdf@frame@rightline@middle} % The last frame of of a splitted contents of mdframed % \begin{macrocode} -\def\md@frame@background@middle{% - \rlap{\mdf@background@default% +\def\mdf@frame@leftline@middle{% + \llap{\mdf@linecolor@default% \rule[-\mdfboundingboxdepth]% - {\mdfboundingboxtotalwidth}% + {\mdf@middlelinewidth@length}% {\mdfboundingboxtotalheight}% }% }% -% -\def\md@frame@leftline@middle{% - \llap{\mdf@linecolor@default% +\def\mdf@frame@background@middle{% + \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% - {\mdf@middlelinewidth@length}% + {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% - }% + }% }% -% -\def\md@frame@rightline@middle{% +\def\mdf@frame@frametitlebackground@middle{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@}% + {}% + {\rlap{\mdf@frametitlebackground@default% + \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% + {\mdfboundingboxtotalwidth}% + {\mdfframetitleboxtotalheight}% + }% + \global\mdfframetitleboxtotalheight=-\p@\relax% + }% +}% +\def\mdf@frame@rightline@middle{% \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\mdfboundingboxtotalheight}% }% -}% -% -\def\md@putbox@middle{% - \ifvoid\@tempboxa% +}% +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two% \else \mdf@makebox@out{% \mdf@makeboxalign@left% - \setlength{\mdfboundingboxwidth}{\wd\tw@}% + \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@two}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% - \setlength{\mdfboundingboxheight}{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \setlength{\mdfboundingboxdepth}% - {\dimexpr\dp\tw@+\mdf@splitbottomskip@length\relax}% + {\dimexpr\dp\mdf@splitbox@two+\mdf@splitbottomskip@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@splitbottomskip@length\relax}% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% @@ -2681,12 +3476,13 @@ Have fun! \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% - \md@frame@leftline@middle}{}% - \md@frame@background@middle% + \mdf@frame@leftline@middle}{}% + \mdf@frame@background@middle% + \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@middle}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% - \md@frame@rightline@middle}{}% - {\box\tw@}% + \mdf@frame@rightline@middle}{}% + {\box\mdf@splitbox@two}% }% \mdf@makeboxalign@right% } @@ -2717,97 +3513,27 @@ Have fun! %% 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 273 2011-12-10 09:21:09Z marco $ +%%$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ % % \end{macrocode} -% -% \begin{macro}{mdframedIpackagename,md@frameIdate@svn} +% \changes{v1.1beta}{2011/12/16}{added lost semicolons} +% \begin{macro}{mdframedIpackagename,mdf@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 } +\def\mdf@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 273 2011-12-10 09:21:09Z marco $ % + [\mdf@frameIdate@svn$Id: mdframed.dtx 312 2012-01-08 12:43:36Z 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} +% \begin{macro}{mdf@tikz@settings} % Define settings for tikz % \begin{macrocode} %Allgemeine Einstellungen fuer tikz -\def\md@tikz@settings{% +\def\mdf@tikz@settings{% % \tikzset{mdfbox/.style={anchor=south west,% inner sep=0pt,% @@ -2816,6 +3542,11 @@ Have fun! \tikzset{mdfcorners/.style={rounded corners=\mdf@roundcorner@length}}% \tikzset{mdfbackground/.style={fill=\mdf@backgroundcolor,% draw=\mdf@backgroundcolor}}% + \tikzset{mdfframetitlebackground/.style={fill=\mdf@frametitlebackgroundcolor,% + draw=none,% + rounded corners={max(\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length,0)}}}% % \tikzset{mdfouterline/.style={}}% % nur wenn outerlinewidth>0 wird aussere Linie gezeichnet @@ -2845,29 +3576,61 @@ Have fun! % \end{macrocode} % \end{macro} % -% \begin{macro}{md@tikzbox@tfl,md@tikzbox@otl} +% \begin{macro}{mdf@tikzbox@tfl,mdf@tikzbox@otl} % Befehle fuer Ausgabe von Rahmen und Hintergrund % \begin{macrocode} -\newrobustcmd*\md@tikzbox@tfl[1]{%three or four borders +\newrobustcmd*\mdf@tikzbox@tfl[1]{%three or four borders \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% \begin{scope}[mdfcorners]% \clip[preaction=mdfouterline]% [postaction=mdfbackground]% [postaction=mdfinnerline]#1;% \end{scope}% - \path[mdfmiddleline,mdfcorners]#1;}% -\newrobustcmd*\md@tikzbox@otl[2]{%one or two borders + \path[mdfmiddleline,mdfcorners]#1; + }% + + + +\newrobustcmd*\mdf@tikzbox@otl[2]{%one or two borders \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% \begin{scope} \path[mdfouterline,mdfcorners]#1;% \clip[postaction=mdfbackground]#2;% \path[mdfinnerline,mdfcorners]#1;% - \end{scope} + \end{scope}% \path[mdfmiddleline,mdfcorners]#1;}% % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@single} +% +% +% \begin{macro}{mdf@put@frametitlerule} +% frametitlerule with tikz +% \begin{macrocode} +\tikzset{mdfframetitlerule/.style={% + draw=none, + fill=\mdf@frametitlerulecolor, + }% +} +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{\hspace*{-\mdf@innerleftmargin@length}% + \begingroup% + \pgfmathsetlength{\dimen@}{\mdfframetitleboxwidth+\mdf@innerleftmargin@length+\mdf@innerrightmargin@length}% + \tikz\draw[mdfframetitlerule] (0,0)% + rectangle (\dimen@,\mdf@frametitlerulewidth@length); + \endgroup} + }% + }{} + \par\unskip\vskip\mdf@innertopmargin@length% +}% + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{mdf@putbox@single} % Output of the non breakable contents. % \begin{macrocode} % Info zu den verwendeten Punkten: @@ -2875,14 +3638,14 @@ Have fun! % 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 +\def\mdf@putbox@single{% + \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \md@tikz@settings% + \mdf@tikz@settings% % - \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% @@ -2894,7 +3657,7 @@ Have fun! \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% % - \setlength\mdfboundingboxheight{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% \ifbool{mdf@topline}{% @@ -2909,84 +3672,87 @@ Have fun! \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}% + \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\mdf@Ay{+\mdf@innerbottommargin@length}% + \pgfmathsetlengthmacro\mdf@Ox{+0pt}% + \pgfmathsetlengthmacro\mdf@Oy{+0pt}% + \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline}% {% - \pgfmathsetlengthmacro\md@Ax% - {\md@Ax+\mdf@outerlinewidth@length+% + \pgfmathsetlengthmacro\mdf@Ax% + {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Ox% - {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@bottomline}% {% - \pgfmathsetlengthmacro\md@Ay% - {\md@Ay+\mdf@outerlinewidth@length+\mdf@middlelinewidth@length% + \pgfmathsetlengthmacro\mdf@Ay% + {\mdf@Ay+\mdf@outerlinewidth@length+\mdf@middlelinewidth@length% +\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Oy% - {\md@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Oy% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % - \coordinate(O)at(\md@Ox,\md@Oy);% - \coordinate(P)at(\md@Px,\md@Py);% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% % - \md@test@ltrb{\md@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)--cycle}}{}% + \mdf@test@ltrb{\mdf@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)}}{}% + \mdf@test@ltb{\mdf@tikzbox@tfl{(P|-O)--(O)--(O|-P)--(P)}}{}% + \mdf@test@trb{\mdf@tikzbox@tfl{(O|-P)--(P)--(P|-O)--(O)}}{}% + \mdf@test@ltr{\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}{}% + \mdf@test@lrb{\mdf@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}{}% % - \md@test@lb{\md@tikzbox@otl{(P|-O)--(O)--(O|-P)}% + \mdf@test@lb{\mdf@tikzbox@otl{(P|-O)--(O)--(O|-P)}% {(P)--(P|-O)[mdfcorners]--(O)--(O|-P)}% }{}% - \md@test@rb{\md@tikzbox@otl{(P)--(P|-O)--(O)}% + \mdf@test@rb{\mdf@tikzbox@otl{(P)--(P|-O)--(O)}% {(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}% }{}% - \md@test@tr{\md@tikzbox@otl{(O-|P)--(P)--(P-|O)}% + \mdf@test@tr{\mdf@tikzbox@otl{(O-|P)--(P)--(P-|O)}% {(O)--(O|-P)[mdfcorners]--(P)--(P|-O)}% }{}% - \md@test@lt{\md@tikzbox@otl{(O)--(O|-P)--(P)}% + \mdf@test@lt{\mdf@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)}% + \mdf@test@lr{\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}% {(O)rectangle(P)}% }{}% - \md@test@tb{\md@tikzbox@otl{(O)--(O-|P)(O|-P)--(P)}% + \mdf@test@tb{\mdf@tikzbox@otl{(O)--(O-|P)(O|-P)--(P)}% {(O)rectangle(P)}% }{}% % - \md@test@l{\md@tikzbox@otl{(O)--(O|-P)}% + \mdf@test@l{\mdf@tikzbox@otl{(O)--(O|-P)}% {(O)rectangle(P)}% }{}% - \md@test@r{\md@tikzbox@otl{(O-|P)--(P)}% + \mdf@test@r{\mdf@tikzbox@otl{(O-|P)--(P)}% {(O)rectangle(P)}% }{}% - \md@test@t{\md@tikzbox@otl{(O|-P)--(P)}% + \mdf@test@t{\mdf@tikzbox@otl{(O|-P)--(P)}% {(O)rectangle(P)}% }{}% - \md@test@b{\md@tikzbox@otl{(O)--(O-|P)}% + \mdf@test@b{\mdf@tikzbox@otl{(O)--(O-|P)}% {(O)rectangle(P)}% }{}% % - \md@test@noline{\path[mdfbackground,mdfcorners](O)rectangle(P);}{}% + \mdf@test@noline{\path[mdfbackground,mdfcorners](O)rectangle(P);}{}% +% + %Frametitlebackground + \drawbrackgroundframetitle@single % - \node[mdfbox]at(\md@Ax,\md@Ay){\box\@tempboxa};% Ausgabebox einfuegen + \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz @@ -2996,19 +3762,86 @@ Have fun! }% \fi }% +\def\drawbrackgroundframetitle@single{% + \ifdefempty{\mdf@frametitle}{}{% + \drawbrackgroundframetitle@@single% + }% +}% +\def\drawbrackgroundframetitle@@single{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +} % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@first} +% \begin{macro}{mdf@putbox@first} % Output of the first breakable contents. % \begin{macrocode} -\def\md@putbox@first{% - \ifvoid\@tempboxa +\def\drawbrackgroundframetitle@first{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight}% + {% + \drawbrackgroundframetitle@@first + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}{-\p@}% + }{\mdf@PackageWarning{You got a page break inside the frame title\MessageBreak + Currently this isn't well supported}% + \drawbrackgroundframetitle@@first + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}% + {\mdfframetitleboxtotalheight-\mdfboundingboxheight- + \mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length% + +\mdf@frametitlebelowskip@length+\mdf@splitbottomskip@length+\mdf@splittopskip@length + +\dp\strutbox% + }% + }% + }% +}% +% +\def\drawbrackgroundframetitle@@first{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@topline}{% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {max(0,\mdf@Py-\mdfframetitleboxtotalheight)} + \path[mdfframetitlebackground] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope}% +}% +% +\def\mdf@putbox@first{% + \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \md@tikz@settings% - \setlength\mdfboundingboxwidth{\wd\tw@}% + \mdf@tikz@settings% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% @@ -3020,7 +3853,7 @@ Have fun! \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% % - \setlength\mdfboundingboxheight{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% \ifbool{mdf@topline}{% @@ -3035,58 +3868,60 @@ Have fun! \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}% + \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\mdf@Ay{+\mdf@splitbottomskip@length}% + \pgfmathsetlengthmacro\mdf@Ox{+0pt}% + \pgfmathsetlengthmacro\mdf@Oy{+0pt}% + \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline} {% - \pgfmathsetlengthmacro\md@Ax% - {\md@Ax+\mdf@outerlinewidth@length+% + \pgfmathsetlengthmacro\mdf@Ax% + {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Ox% - {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Py% + {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % - \coordinate(O)at(\md@Ox,\md@Oy);% - \coordinate(P)at(\md@Px,\md@Py);% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% % - \ifboolexpr{test {\md@test@ltrb} or test {\md@test@ltr}}% - {\md@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}% + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@ltr}}% + {\mdf@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 {\mdf@test@ltb} or test {\mdf@test@lt}}% + {\mdf@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 {\mdf@test@trb} or test {\mdf@test@tr}}% + {\mdf@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 {\mdf@test@lrb} or test {\mdf@test@lr}}% + {\mdf@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 {\mdf@test@tb} or test {\mdf@test@t}}% + {\mdf@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 {\mdf@test@lb} or test {\mdf@test@l}}% + {\mdf@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)}}% + \ifboolexpr{test {\mdf@test@rb} or test {\mdf@test@r}}% + {\mdf@tikzbox@otl{(O-|P)--(P)}{(O)rectangle(P)}}% {}% - \md@test@b{\path[mdfbackground](O)rectangle(P)}{}% + \mdf@test@b{\path[mdfbackground](O)rectangle(P);}{}% % - \md@test@noline{\path[mdfbackground,mdfcorners](O)--(O|-P)--(P)--(P|-O);}{}% + \mdf@test@noline{\path[mdfbackground,mdfcorners](O)--(O|-P)--(P)--(P|-O);}{}% +% + \drawbrackgroundframetitle@first % - \node[mdfbox]at(\md@Ax,\md@Ay){\box\tw@};% Ausgabebox einfuegen + \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz% @@ -3099,17 +3934,45 @@ Have fun! % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@middle} +% \begin{macro}{mdf@putbox@middle} % Output of the middle breakable contents. % \begin{macrocode} -\def\md@putbox@middle{% - \ifvoid\@tempboxa +\def\drawbrackgroundframetitle@middle{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}{% + \drawbrackgroundframetitle@@middle% + \pgfmathsetlength{\global\mdfframetitleboxtotalheight}{-\p@}% + }% + }% +}% +% +\def\drawbrackgroundframetitle@@middle{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \path[mdfframetitlebackground,rounded corners=\z@] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +}% +% +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \md@tikz@settings% + \mdf@tikz@settings% % - \setlength\mdfboundingboxwidth{\wd\tw@}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% @@ -3121,46 +3984,48 @@ Have fun! \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% % - \setlength\mdfboundingboxheight{\dimexpr\ht\tw@+\dp\tw@\relax}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\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}% + \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\mdf@Ay{+\mdf@splitbottomskip@length}% + \pgfmathsetlengthmacro\mdf@Ox{+0pt}% + \pgfmathsetlengthmacro\mdf@Oy{+0pt}% + \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline}% {% - \pgfmathsetlengthmacro\md@Ax% - {\md@Ax+\mdf@outerlinewidth@length+% + \pgfmathsetlengthmacro\mdf@Ax% + {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Ox% - {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % - \coordinate(O)at(\md@Ox,\md@Oy);% - \coordinate(P)at(\md@Px,\md@Py);% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% % \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% - {\md@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}{}% + {\mdf@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)}}{}% + {\mdf@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)}}{}% + {\mdf@tikzbox@otl{(P)--(P|-O)}{(O)rectangle(P)}}{}% \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% - {\path[mdfbackground](O)rectangle(P)}{}% + {\path[mdfbackground](O)rectangle(P);}{}% % - \node[mdfbox]at(\md@Ax,\md@Ay){\box\tw@};% Ausgabebox einfuegen + \drawbrackgroundframetitle@middle +% + \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \end{tikzpicture}% @@ -3172,17 +4037,43 @@ Have fun! % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@second} +% \begin{macro}{mdf@putbox@second} % Output of the last breakable contents. % \begin{macrocode} -\def\md@putbox@second{% - \ifvoid\@tempboxa +\def\drawbrackgroundframetitle@second{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}{% + \drawbrackgroundframetitle@@second% + }% + }% +}% +% +\def\drawbrackgroundframetitle@@second{% + \begin{scope}%background frame title + \ifbool{mdf@leftline}{ + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} + }{}% + \ifbool{mdf@rightline}{% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} + }{}% + \pgfmathsetlengthmacro\mdf@Fy + {\mdf@Py-\mdfframetitleboxtotalheight} + \path[mdfframetitlebackground,rounded corners=\z@] + (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% + --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); + \end{scope} +}% +\def\mdf@putbox@second{% + \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \md@tikz@settings% + \mdf@tikz@settings% % - \setlength\mdfboundingboxwidth{\wd\@tempboxa}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% @@ -3194,7 +4085,7 @@ Have fun! \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% % - \setlength\mdfboundingboxheight{\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% \ifbool{mdf@bottomline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% @@ -3205,63 +4096,65 @@ Have fun! \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}% + \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% + \pgfmathsetlengthmacro\mdf@Ay{+\mdf@innerbottommargin@length}% + \pgfmathsetlengthmacro\mdf@Ox{+0pt}% + \pgfmathsetlengthmacro\mdf@Oy{+0pt}% + \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% + \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline}% {% - \pgfmathsetlengthmacro\md@Ax% - {\md@Ax+\mdf@outerlinewidth@length+% + \pgfmathsetlengthmacro\mdf@Ax% + {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Ox% - {\md@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Ox% + {\mdf@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}% + \pgfmathsetlengthmacro\mdf@Px% + {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@bottomline}% {% - \pgfmathsetlengthmacro\md@Ay% - {\md@Ay+\mdf@outerlinewidth@length+% + \pgfmathsetlengthmacro\mdf@Ay% + {\mdf@Ay+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% - \pgfmathsetlengthmacro\md@Oy% - {\md@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% + \pgfmathsetlengthmacro\mdf@Oy% + {\mdf@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% % - \coordinate(O)at(\md@Ox,\md@Oy);% - \coordinate(P)at(\md@Px,\md@Py);% + \coordinate(O)at(\mdf@Ox,\mdf@Oy);% + \coordinate(P)at(\mdf@Px,\mdf@Py);% % - \ifboolexpr{test {\md@test@ltrb} or test {\md@test@lrb}}% - {\md@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}% + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@lrb}}% + {\mdf@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 {\mdf@test@ltb} or test {\mdf@test@lb}}% + {\mdf@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 {\mdf@test@trb} or test {\mdf@test@rb}}% + {\mdf@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 {\mdf@test@ltr} or test {\mdf@test@lr}}% + {\mdf@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 {\mdf@test@tb} or test {\mdf@test@b}}% + {\mdf@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 {\mdf@test@lt} or test {\mdf@test@l}}% + {\mdf@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)}}% + \ifboolexpr{test {\mdf@test@tr} or test {\mdf@test@r}}% + {\mdf@tikzbox@otl{(O-|P)--(P)}{(O)rectangle(P)}}% {}% - \md@test@t{\path[mdfbackground](O)rectangle(P)}{}% + \mdf@test@t{\path[mdfbackground,mdfcorners](O|-P)--(O)--(O-|P)--(P);}{}% +% + \mdf@test@noline{\path[mdfbackground,mdfcorners](O|-P)--(O)--(O-|P)--(P);}{}% % - \md@test@noline{\path[mdfbackground,mdfcorners](O|-P)--(O)--(O-|P)--(P)}{}% + \drawbrackgroundframetitle@second % - \node[mdfbox] at (\md@Ax,\md@Ay){\box\@tempboxa};% Ausgabebox einfuegen + \node[mdfbox] at (\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \end{tikzpicture}% @@ -3294,561 +4187,677 @@ Have fun! %% 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 273 2011-12-10 09:21:09Z marco $ +%%$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ % % \end{macrocode} % -% \begin{macro}{mdframedIIpackagename,md@frameIIdate@svn} +% \begin{macro}{mdframedIIpackagename,mdf@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 } +\def\mdf@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 273 2011-12-10 09:21:09Z marco $ % + [\mdf@frameIIdate@svn$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ % \mdversion: \mdframedIIpackagename] % \end{macrocode} % \end{macro} % -% \begin{macro}{md@ptlength@to@pscode,ptTps} +% \begin{macro}{mdf@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} ) }} - +\def\mdf@ptlength@to@pscode#1{\pst@number{#1} \pst@number\psxunit div } +\def\mdf@ptlength@to@pscode@length#1{\pst@number{\csname mdf@#1@length\endcsname} \pst@number\psxunit div } +\let\ptTps\mdf@ptlength@to@pscode\relax +\let\ptTpsL\mdf@ptlength@to@pscode@length\relax % \end{macrocode} % \end{macro} % -% \begin{macro}{mdfbackgroundstyle,mdflinestyle} +% \begin{macro}{mdfbackgroundstyle,mdflinestyle,mdfframetitlerule,mdfframetitlebackground} % 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,% +\def\mdfpstricks@settings{%expand by \addtopsstyle + \newpsstyle{mdfbackgroundstyle}% + {linecolor=\mdf@backgroundcolor,fillstyle=solid,% + fillcolor=\mdf@backgroundcolor,linestyle=none,% + ,dimen=middle,% + }% +% + \newpsstyle{mdfframetitlebackgroundstyle}{% + linecolor=\mdf@frametitlebackgroundcolor, + fillcolor=\mdf@frametitlebackgroundcolor, + fillstyle=solid,linestyle=none, + linearc=\ifdimgreater{\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length} + {\z@}{\dimexpr\mdf@roundcorner@length% + -\mdf@innerlinewidth@length% + -.5\mdf@middlelinewidth@length}{\z@}, + } +% + \newpsstyle{mdfouterlinestyle}{linestyle=none}% + \ifdimgreater{\mdf@outerlinewidth@length}{\z@} + {\newpsstyle{mdfouterlinestyle}{% + linecolor=\mdf@outerlinecolor,% + linewidth=\dimexpr2\mdf@outerlinewidth@length+\mdf@middlelinewidth@length\relax, + dimen=middle, + }}{}% +% + \newpsstyle{mdfinnerlinestyle}{linestyle=none}% + \ifdimgreater{\mdf@innerlinewidth@length}{\z@}% + {\newpsstyle{mdfinnerlinestyle}{% + linecolor=\mdf@innerlinecolor,% + linewidth=\dimexpr2\mdf@innerlinewidth@length+\mdf@middlelinewidth@length\relax, + dimen=middle, + }}{}% +% + \newpsstyle{mdfmiddlelinestyle}{linestyle=none}% + \ifdimgreater{\mdf@middlelinewidth@length}{\z@}% + {\newpsstyle{mdfmiddlelinestyle}{% + linewidth=\mdf@middlelinewidth@length,% + linecolor=\mdf@middlelinecolor,dimen=middle + }}{}% +\mdfpstricks@appendsettings }% % -\newpsstyle{mdflinestyle}{linewidth=\mdf@middlelinewidth@length,% - linecolor=\mdf@linecolor,% - fillstyle=none,dimen=middle,}% +\newrobustcmd*\mdf@pstricksbox@fl[2]{%four lines + \psframe[style=mdfouterlinestyle](#1)(#2)%aussen=3mm + \psframe[style=mdfbackgroundstyle](#1)(#2)%Hintergrund + \psclip{\psframe[style=mdfmiddlelinestyle](#1)(#2)} + \psframe[style=mdfinnerlinestyle](#1)(#2)%innere=3mm + \endpsclip + \psframe[style=mdfmiddlelinestyle](#1)(#2)%mittlere=2mm + }% +\newrobustcmd*\mdf@pstricksbox@tl[1]{%three lines + \psline[style=mdfouterlinestyle]#1%aussen=3mm + \psline[style=mdfbackgroundstyle]#1%Hintergrund + \psclip{\psline[style=mdfmiddlelinestyle]#1} + \psline[style=mdfinnerlinestyle]#1%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm + }% +\newrobustcmd*\mdf@pstricksbox@tcl[2]{%two combined lines +%%#1 background comple +%%#2 line path + \psline[style=mdfouterlinestyle]#2%aussen=3mm + \psline[style=mdfbackgroundstyle]#2%Hintergrund + \psclip{\pscustom[linestyle=none]{ + \psline[style=mdfmiddlelinestyle]#2 + \psline[linestyle=none,linearc=0pt]#1} + } + \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund + \psline[style=mdfinnerlinestyle]#2%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#2%mittlere=2mm +}% +\newrobustcmd*\mdf@pstricksbox@tncl[2]{%two not combined lines + \begingroup + \psset{linearc=0pt} + \psline[style=mdfouterlinestyle](mdf@O)#1%aussen=3mm + \psline[style=mdfouterlinestyle](mdf@P)#2%aussen=3mm + \psclip{ + \pscustom[linestyle=none]{% + \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm + \psline[linestyle=none](mdf@O)#2 + \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm + \psline[linestyle=none](mdf@P)#1 + }% + }% + \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund + \psline[style=mdfinnerlinestyle](mdf@O)#1%innere=3mm + \psline[style=mdfinnerlinestyle](mdf@P)#2%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm + \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm + \endgroup +}% +\newrobustcmd*\mdf@pstricksbox@ol[1]{%one line + \begingroup + \psset{linearc=0pt} + \psline[style=mdfouterlinestyle]#1%aussen=3mm + \psline[style=mdfbackgroundstyle]#1%Hintergrund + \psclip{\pscustom[linestyle=none]{ + \psline[style=mdfmiddlelinestyle]#1 + \psframe[linestyle=none,fillstyle=none,dimen=inner](mdf@O)(mdf@P) + }} + \psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P) + \psline[style=mdfinnerlinestyle]#1%innere=3mm + \endpsclip + \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm + \endgroup% +}% + +% +\newpsstyle{mdfframetitlerule}{% + linecolor=\mdf@frametitlerulecolor,% + fillcolor=\mdf@frametitlerulecolor,% + fillstyle=solid,dimen=outer,% +} +% % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@single} +% +% \begin{macro}{mdf@put@frametitlerule} +% frametitlerule with pstricks +% \begin{macrocode} +\def\mdf@@frametitlerule{% + \ifbool{mdf@frametitlerule}{% + \vbox{\hsize0pt + \par\unskip\vskip\mdf@frametitlebelowskip@length + \noindent\rlap{% + \begingroup% + \begin{pspicture}(0,0)(0,\mdf@frametitlerulewidth@length) + \psframe[style=mdfframetitlerule](!\ptTpsL{innerleftmargin} neg 0)% + (! \ptTpsL{innerrightmargin} + \ptTps{\mdfframetitleboxwidth} add \ptTpsL{frametitlerulewidth}) + \end{pspicture} + \endgroup} + }% + }{} + \par\unskip\vskip\mdf@innertopmargin@length% +}% +% +% \begin{macro}{mdf@putbox@single} % Single output % \begin{macrocode} -\def\md@putbox@single{% - \ifvoid\@tempboxa +% Info zu den verwendeten Punkten: +% O ist die untere linke Ecke der Mitte der middleline +% P ist die obere rechte Ecke der Mitte der middleline +% A ist der Punkt fuer den anchor (d.h. die untere linke Ecke) der Ausgabebox +\def\mdf@putbox@single{% + \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \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}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% +% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% +% + \setlength\mdftotallinewidth{\dimexpr\mdf@innerlinewidth@length% + +\mdf@middlelinewidth@length + +\mdf@outerlinewidth@length\relax}% \psset{unit=1truecm}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) - \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}% + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A}% + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A}% + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O}% + }{}% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% +% \psclip{% + %Four lines + \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} + %three lines + \mdf@test@ltb{\mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \mdf@test@trb{\mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@ltr{\mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% + \mdf@test@lrb{\mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %two lines combinded + \mdf@test@lb{\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \mdf@test@rb{\mdf@pstricksbox@tcl{(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + \mdf@test@tr{\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@lt{\mdf@pstricksbox@tcl{(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + %two lines not combinded combinded + \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} + }{} + \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} + }{} + %single line + \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{} +% } + %Frametitlebackground + \drawbrackgroundframetitle@single + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@one} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} +% +% \endpsclip + \end{pspicture}% }% \mdf@makeboxalign@right% }% \fi }% +\def\drawbrackgroundframetitle@single{% + \ifdefempty{\mdf@frametitle}{}{% + \drawbrackgroundframetitle@@single% + }% +}% +\def\drawbrackgroundframetitle@@single{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@first} +% \begin{macro}{mdf@putbox@first} % First output % \begin{macrocode} -\def\md@putbox@first{% - \ifvoid\@tempboxa +\def\mdf@putbox@first{% + \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% - \setlength\mdfboundingboxwidth{\wd\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% + %\ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% + \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% + \ifbool{mdf@topline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \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}% + \null% + \psset{unit=1truecm}% + \ifdimgreater{\mdfboundingboxheight}{\vsize} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + \ifbool{mdf@topline}% + {% + \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} + }{}% +% \psclip{ + %Four or Three lines + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@ltr}}% + {\mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}% + {}% + %two combinded lines + \ifboolexpr{test {\mdf@test@ltb} or test {\mdf@test@lt}} + {\mdf@pstricksbox@tcl{(mdf@O)(mdf@P|mdf@O)(mdf@P)}% + {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} + \ifboolexpr{test {\mdf@test@trb} or test {\mdf@test@tr}}% + {\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} + %two not combinded lines + \ifboolexpr{test {\mdf@test@lrb} or test {\mdf@test@lr}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{} + %single line + \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@t}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@lb} or test {\mdf@test@l}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@rb} or test {\mdf@test@r}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@b{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% +% } + %Frametitlebackground + \drawbrackgroundframetitle@first + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@two} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} +% \endpsclip + \end{pspicture} }% \mdf@makeboxalign@right% }% \fi }% +\def\drawbrackgroundframetitle@first{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight}% + {% + \drawbrackgroundframetitle@@first + \global\mdfframetitleboxtotalheight=-\p@% + }{\mdf@PackageWarning{You got a page break inside the frame title\MessageBreak + Currently this isn't well supported}% + \drawbrackgroundframetitle@@first + \global\mdfframetitleboxtotalheight=\dimexpr\mdfframetitleboxtotalheight + -\mdfboundingboxheight + -\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length% + +\mdf@frametitlebelowskip@length+\mdf@splitbottomskip@length + +\mdf@splittopskip@length + +\dp\strutbox\relax% + }% + }% +}% +\def\drawbrackgroundframetitle@@first{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \ifbool{mdf@topline}{% + \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) + -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% + }{}% + \ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight} + {\nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}}% + {\nodexn{(mdf@O)}{mdf@F}}% + \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@middle} +% \begin{macro}{mdf@putbox@middle} % Middle output % \begin{macrocode} -\def\md@putbox@middle{% - \ifvoid\@tempboxa +\def\mdf@putbox@middle{% + \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% - \setlength\mdfboundingboxwidth{\wd\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}% +% \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% + \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% + \psset{unit=1truecm}% \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}% + \null% + \ifdimgreater{\mdfboundingboxheight}{\vsize} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} + {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} + \mdfpstricks@settings% + \psset{linearc=0pt,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + %%%% + \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + %% + \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{}% + \ifboolexpr{bool {mdf@leftline} and not (bool {mdf@rightline})}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and bool {mdf@rightline}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{}% + \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% + {\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + %Frametitlebackground + \drawbrackgroundframetitle@middle + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@two} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} + \end{pspicture}% }% \mdf@makeboxalign@right% }% \fi }% +\def\drawbrackgroundframetitle@middle{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}{% + \drawbrackgroundframetitle@@middle + \global\mdfframetitleboxtotalheight=-\p@\relax% + }% + }% +}% +\def\drawbrackgroundframetitle@@middle{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle,linearc=\z@](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} % \end{macrocode} % \end{macro} % -% \begin{macro}{md@putbox@second} +% \begin{macro}{mdf@putbox@second} % Last output % \begin{macrocode} -\def\md@putbox@second{ - \ifvoid\@tempboxa +\def\mdf@putbox@second{ + \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% - \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% - \setlength\mdfboundingboxwidth{\wd\@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}% +% \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% + \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% + \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% + \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% + \ifbool{mdf@leftline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \ifbool{mdf@rightline}{% + \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% + \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% + \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% + \ifbool{mdf@bottomline}{% + \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% + \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \psset{unit=1truecm}% - \mdf@makebox@in[\mdfboundingboxwidth]{% + \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}% + \mdfpstricks@settings% + \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% + \expandafter\psset\expandafter{\mdf@psset@local}% + \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length){mdf@A} + \pnode(0,0){mdf@O} + \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} + \ifbool{mdf@leftline}% + {% + \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) + +(\mdf@middlelinewidth@length,0) + +(\mdf@innerlinewidth@length,0)}{mdf@A} + \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} + }{}% + \ifbool{mdf@rightline}% + {% + \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} + }{}% + \ifbool{mdf@bottomline}% + {% + \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) + +(0,\mdf@middlelinewidth@length) + +(0,\mdf@innerlinewidth@length)}{mdf@A} + \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) + +0.5(0,\mdf@middlelinewidth@length)}{mdf@O} + }{}% + %Four + Three + \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@lrb}}% + {\mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% + %Two combinded + \ifboolexpr{test {\mdf@test@ltb} or test {\mdf@test@lb}}% + {\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% + {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} + \ifboolexpr{test {\mdf@test@trb} or test {\mdf@test@rb}}% + {\mdf@pstricksbox@tcl{(mdf@P)(mdf@O|mdf@P)(mdf@O)}% + {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} + %Two not combinded + \ifboolexpr{test {\mdf@test@ltr} or test {\mdf@test@lr}}% + {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{}% + %one line + \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@b}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} + \ifboolexpr{test {\mdf@test@lt} or test {\mdf@test@l}}% + {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} + \ifboolexpr{test {\mdf@test@tr} or test {\mdf@test@r}}% + {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} + %no line + \mdf@test@t{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% + %Frametitlebackground + \drawbrackgroundframetitle@second + %output% + \rput[bl](mdf@A){\box\mdf@splitbox@one} +% \psdot(mdf@A)\uput[90](mdf@A){mdf at A} +% \psdot(mdf@P)\uput[90](mdf@P){mdf at P} +% \psdot(mdf@O)\uput[90](mdf@O){mdf at O} + \end{pspicture}% }% \mdf@makeboxalign@right% }% \fi }% +\def\drawbrackgroundframetitle@second{% + \ifdefempty{\mdf@frametitle}{}{% + \ifdimless{\mdfframetitleboxtotalheight}{\z@} + {}{% + \drawbrackgroundframetitle@@second + }% + }% +}% +\def\drawbrackgroundframetitle@@second{% + \begingroup% + \ifbool{mdf@leftline}{% + \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) + +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% + }{}% + \ifbool{mdf@rightline}{% + \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) + -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% + }{}% + \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% + \psline[style=mdfframetitlebackgroundstyle,linearc=\z@](mdf@O|mdf@F)(mdf@O|mdf@P) + (mdf@P)(mdf@P|mdf@F)% + \endgroup +} % \end{macrocode} % \end{macro} % @@ -3859,6 +4868,757 @@ Have fun! % \iffalse %</mdframepstricks> % \fi +% +% +% +%\iffalse +% \begin{macrocode} +%<*mdframed-example-default> +% \end{macrocode} +%\fi +% +% \section{The file mdframed-example-default} +% +% \begin{macrocode} +%Documenation of the package mdframed +%%$Id: mdframed.dtx 312 2012-01-08 12:43:36Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed.dtx 312 2012-01-08 12:43:36Z 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} + +\global\mdfapptodefinestyle{exampledefault}{% + rightline=true,innerleftmargin=10,innerrightmargin=10, + frametitlerule=true,frametitlerulecolor=green, + frametitlebackgroundcolor=yellow, + frametitlerulewidth=2pt} +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{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} + +\clearpage +\Examplesec{Theorem environments} +\begin{LTXexample} +\mdfdefinestyle{theoremstyle}{% + linecolor=red,linewidth=2pt,% + frametitlerule=true,% + frametitlebackgroundcolor=gray!20, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition} +\ExampleText +\end{definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{LTXexample} + + +\clearpage +\Examplesec{theorem with separate header and the help of TikZ (complex)} +\begin{LTXexample} +\newcounter{theo}[section] +\newenvironment{theo}[1][]{% + \stepcounter{theo}% + \ifstrempty{#1}% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo};}} + }% + {\mdfsetup{% + frametitle={% + \tikz[baseline=(current bounding box.east),outer sep=0pt] + \node[anchor=east,rectangle,fill=blue!20] + {\strut Theorem~\thetheo:~#1};}}% + }% + \mdfsetup{innertopmargin=10pt,linecolor=blue!20,% + linewidth=2pt,topline=true, + frametitleaboveskip=\dimexpr-\ht\strutbox\relax,} + \begin{mdframed}[]\relax% + }{\end{mdframed}} +\begin{theo}[Inhomogeneous Linear] +\ExampleText +\end{theo} + +\begin{theo} +\ExampleText +\end{theo} +\end{LTXexample} + +\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\mdf@frame@leftline@single{% + \llap{\color{white}% + \rule[\dimexpr-\mdfboundingboxdepth+\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{} + -2\interruptlength\relax}% + }% + }% + \appto\mdf@frame@rightline@single{% + \rlap{\color{white}% + \hspace*{\mdfboundingboxwidth}% + \hspace*{\mdf@innerrightmargin@length}% + \rule[\dimexpr-\mdfboundingboxdepth% + +\interruptlength\relax]% + {\mdf@middlelinewidth@length}% + {\dimexpr\mdfboundingboxtotalheight% + +\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.dtx 312 2012-01-08 12:43:36Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed.dtx 312 2012-01-08 12:43:36Z 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} +} +\newrobustcmd\mdfcreateextratikzlocal{% + \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}\let\mdfcreateextratikz\mdfcreateextratikzlocal}, + } + +\begin{mdframed}[style=exercisestyle,] +\ExampleText +\end{mdframed} + +\begin{mdframed}[style=exercisestyle,exercisepoints=10] +\ExampleText +\end{mdframed} + +\clearpage +\Examplesec{Theorem environments} +\begin{LTXexample} +\mdfdefinestyle{theoremstyle}{% + linecolor=red,linewidth=2pt,% + frametitlerule=true,% + apptotikzsetting={\tikzset{mdfframetitlebackground/.append style={% + shade,left color=white, right color=blue!20}}}, + frametitlerulecolor=green!60, + frametitlerulewidth=1pt, + innertopmargin=\topskip, + } +\mdtheorem[style=theoremstyle]{definition}{Definition} +\begin{definition}[Inhomogeneous linear] +\ExampleText +\end{definition} +\begin{definition*}[Inhomogeneous linear] +\ExampleText +\end{definition*} +\end{LTXexample} + +\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.dtx 312 2012-01-08 12:43:36Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt]{ltxmdf} +\ltxmdfsetifoot$Id: mdframed.dtx 312 2012-01-08 12:43:36Z 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,middlelinewidth=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, + frametitlerule=true,innertopmargin=6pt, + outerlinewidth=6pt,outerlinecolor=blue, + pstricksappsetting={\addtopsstyle{mdfouterlinestyle}{linestyle=dashed}}, + innerlinecolor=yellow,innerlinewidth=5pt}% +\begin{mdframed}[style=exampledefault,frametitle={Inhomogeneous linear}] +\ExampleText +\end{mdframed} +\end{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=6pt}, + linecolor=red,linewidth=5pt,middlelinewidth=4pt} +\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.dtx 312 2012-01-08 12:43:36Z marco $ +\setcounter{errorcontextlines}{999} +\documentclass[parskip=false,english,11pt,ltxlipsum]{ltxmdf} +\ltxmdfsetifoot $Id: mdframed.dtx 312 2012-01-08 12:43:36Z 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} + +With the new command \Cmd{surroundwithmdframed} you can use +\begin{tltxmdfexample}[moretexcs={BeforeBeginEnvironment,AfterEndEnvironment},morekeywords={lstlisting}] +\surroundwithmdframed{listings} +\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[1]\lipsum[2] +\begin{mdframed}[% + leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\end{tltxmdfexample} +\lipsum[1]\lipsum[2] +\begin{mdframed}[leftmargin=10pt,% + rightmargin=10pt,% + linecolor=red, + backgroundcolor=yellow] +\ExampleText +\end{mdframed} +\lipsum[2] +\clearpage +\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 |