% \iffalse meta-comment % !TEX program = pdfLaTeX %<*internal> \iffalse % %<*readme> ================================================================ ================================================================ Working with the command \fbox or \fcolorbox, one has to handle page breaks by hand. The present package defines the environment mdframed which automatically deals with page breaks. Author's name: Marco Daniel and Elke Schubert (supports tikz implementation) License type: lppl ================================================================ The revision history is printed in the documentation. ================================================================ The current development is available at github: https://github.com/marcodaniel/mdframed ================================================================ The package provides * one dtx files, * one Makefile (compiling for Linux/Mac), * one mdframedmake.bat (compiling for Windows) * one personal documentclass ltxmdf.cls * one example picture donald-duck.jpg By running the script `make all` you will produce the following files: - README.txt - mdframed.sty - mdframed.pdf - md-frame-0.mdf - md-frame-1.mdf - md-frame-2.mdf - md-frame-3.mdf - mdframed-example-default.tex - mdframed-example-default.pdf - mdframed-example-tikz.tex - mdframed-example-tikz.pdf - mdframed-example-pstricks.tex - mdframed-example-pstricks.pdf - mdframed-example-texsx.tex - mdframed-example-texsx.pdf I recommend the following installation in your texmf-tree: /doc/latex/mdframed/ - README.txt - mdframed.pdf - mdframed-example-default.tex - mdframed-example-default.pdf - mdframed-example-tikz.tex - mdframed-example-tikz.pdf - mdframed-example-pstricks.tex - mdframed-example-pstricks.pdf - mdframed-example-texsx.tex - mdframed-example-texsx.pdf - donald-duck.jpg /source/latex/mdframed/ - Makefile - mdframed.dtx /tex/latex/mdframed - mdframed.sty - md-frame-0.mdf - md-frame-1.mdf - md-frame-2.mdf - md-frame-3.mdf - ltxmdf.cls ================================================================ ================================================================ % %<*internal> \fi \def\nameofplainTeX{plain} \ifx\fmtname\nameofplainTeX\else \expandafter\begingroup \fi % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble ---------------------------------------------------------------- Working with the command fbox or fcolorbox, one has to handle page breaks by hand. The present package defines the environment mdframed which automatically deals with page breaks. Author's name: Marco Daniel and Elke Schubert (!new) License type: lppl ================================================== ========Is based on the idea of framed.sty======== ================================================== ===== Currently the package has a beta-Status ==== ================================================== WITH THANKS TO (alphabetically): ROLF NIEPRASCHK HEIKO OBERDIEK HERBERT VOSS Copyright (c) 2010 Marco Daniel This package may be distributed under the terms of the LaTeX Project Public License, as described in lppl.txt in the base LaTeX distribution. Either version 1.0 or, at your option, any later version. ================================================= Erstellung eines Rahmens, der am Seitenende keine horizontale Linie einfuegt >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _______________ | page 1 | | Text | | __Text__ | | | Text | | P A G E B R E A K | | Text | | | |_Text_| | | Text | |____page 2___| >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ================================================== \endpreamble \postamble ================================================================ Copyright (C) 2011 by Marco Daniel This work may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this license or (at your option) any later version. The latest version of this license is in the file: http://www.latex-project.org/lppl.txt This work is "maintained" (as per LPPL maintenance status) by Marco Daniel. Have fun! ================================================================ \endpostamble \usedir{tex/latex/mdframed} \generate{\file{mdframed.sty}{\from{mdframed.dtx}{package}}} \nopreamble\nopostamble\usedir{tex/latex/mdframed} \generate{\file{md-frame-0.mdf}{\from{mdframed.dtx}{mdframedefault}}} \nopreamble\nopostamble\usedir{tex/latex/mdframed} \generate{\file{md-frame-1.mdf}{\from{mdframed.dtx}{mdframetikz}}} \nopreamble\nopostamble\usedir{tex/latex/mdframed} \generate{\file{md-frame-2.mdf}{\from{mdframed.dtx}{mdframepstricks}}} \nopreamble\nopostamble\usedir{tex/latex/mdframed} \generate{\file{md-frame-3.mdf}{\from{mdframed.dtx}{mdframepstricks}}} \Msg{*********************************************************} \Msg{*} \Msg{* To finish the installation you have to move the} \Msg{* following file into a directory searched by TeX:} \Msg{*} \Msg{* \space\space documentation.sty} \Msg{*} \Msg{* To produce the documentation run the file mdframed.dtx} \Msg{* once through LaTeX. Then, run} \Msg{*} \Msg{* \space\space makeindex -s gglo.ist -o mdframed.gls mdframed.glo} \Msg{* \space\space makeindex -s gind.ist mdframed.idx} \Msg{*} \Msg{* through makeIndex to produce the glossary. Finally, run PdfLaTeX once again.} \Msg{*} \Msg{* To create the examples run (pdf)latex on the tex-files.} \Msg{*} \Msg{* That's all!} \Msg{*} \Msg{* Happy TeXing!} \Msg{*********************************************************} % %\endbatchfile %<*internal> \usedir{source/latex/mdframed} \generate{\file{mdframed.ins}{\from{mdframed.dtx}{install}}} \nopreamble\nopostamble\usedir{doc/latex/mdframed} \generate{\file{README.txt}{\from{mdframed.dtx}{readme}}} \nopreamble\nopostamble\usedir{source/latex/mdframed} \generate{\file{mdframed-example-default.tex}{\from{mdframed.dtx}{mdframed-example-default}}} \nopreamble\nopostamble\usedir{source/latex/mdframed} \generate{\file{mdframed-example-tikz.tex}{\from{mdframed.dtx}{mdframed-example-tikz}}} \nopreamble\nopostamble\usedir{source/latex/mdframed} \generate{\file{mdframed-example-pstricks.tex}{\from{mdframed.dtx}{mdframed-example-pstricks}}} \nopreamble\nopostamble\usedir{source/latex/mdframed} \generate{\file{mdframed-example-texsx.tex}{\from{mdframed.dtx}{mdframed-example-texsx}}} \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else \expandafter\endgroup \fi % %<*driver> %%$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,11pt,]{ltxmdf} \usepackage[framemethod=TikZ]{mdframed} \ltxmdfsetifoot$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{mdframed.dtx} \end{document} % % \fi % %% CheckSum{5147} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \GetFileInfo{mdframed.sty} % % \changes{v1.0a}{2011/11/26}{Created dtx and fixes bugs} % \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}} % \subtitle{auto-split frame environment} % \author{\href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}% % \href{mailto:marco.daniel@mada-nada.de}{Elke Schubert}}} % \version{\mdversion} % \date{\mdfdateID$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $} % \introduction{The standard methods for framing text (\Cmd{fbox} % or \Cmd{fcolorbox}) require you to handle page breaks % by hand, meaning that you have to split the \Cmd{fbox} % into two. The present package defines the environment % \Pack{mdframed} which automatically deals with pagebreaks % in framed text.\par % By defining new environments the user may choose between % several individual designs.% % \par\kern.5\baselineskip\noindent % Linked files:\quad % \begin{tabular}[t]{ll} % \url{mdframed-example-default.pdf} & % \url{mdframed-example-tikz.pdf} \\ % \url{mdframed-example-pstricks.pdf} & % \url{mdframed-example-texsx.pdf} % \end{tabular} % \par\kern.5\baselineskip\noindent % FYI:\quad\parbox[t]{.8\linewidth}{% % I create a repository for \Pack{mdframed} % on \href{https://github.com/marcodaniel/mdframed}{github} % where you can \href{https://github.com/marcodaniel/mdframed}{download} % the current development status.}% % } % % \maketitle % % \vspace*{2\baselineskip} % % \section{Motivation} % Many users wish to (further) emphasize lemmata, definitions, proofs, % etc. The package \Pack{mdframed} allows you to create environments with % breakable frames. I think an example is the best way to demonstrate its properties. % % % \newmdtheoremenv[outerlinewidth=2,leftmargin=40,rightmargin=40,% % backgroundcolor=yellow,outerlinecolor=blue,innertopmargin=0pt,% % splittopskip=\topskip,skipbelow=\baselineskip,% % skipabove=\baselineskip,ntheorem,roundcorner=5pt]{theorem}{Theorem}[section] % % \begin{theorem}[Pythagorean theorem] % In any right triangle, the area of the square whose side is the hypotenuse % is equal to the sum of the areas of the squares whose sides are the two legs. % % \[ a^2+b^2=c^2 \] % \end{theorem} % % The frame was defined with the following settings. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} \newmdtheoremenv[outerlinewidth=2,leftmargin=40,% rightmargin=40,backgroundcolor=yellow,% outerlinecolor=blue,innertopmargin=0pt,% splittopskip=\topskip,skipbelow=\baselineskip,% skipabove=\baselineskip,ntheorem]{theorem}% {Theorem}[section] \begin{theorem}[Pythagorean theorem] ... \end{theorem} \end{tltxmdfexample} % \iffalse % % \fi % % % \section{Syntax}\label{sec:syntax} % % \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[]{mdframed} \end{tltxmdfexample} % \iffalse % % \fi % % Only the option \Opt{framemethod} should be loaded by the % optional argument of \Cmd{usepackage}. All other options % should be loaded with \Cmd{mdfsetup} or related environments. % The package should be loaded after \Pack{amsthm} if you need the package. % \minisec{Provided environment} % The package defines only one environment with the following syntax: % \iffalse %<*example> % \fi \begin{tltxmdfexample} \begin{mdframed}[] \end{mdframed} \end{tltxmdfexample} % \iffalse % % \fi % To create own environments with \Pack{mdframed} see section \ref{sec:cmds}. % % \minisec{Autodetecting floats} % \Pack{mdframed} detects whether the environment is used inside \Pack{float} % or \Pack{minipage} environments. If you use \Pack{mdframed} in such % an environment \Pack{mdframed} will use the option \Opt{nobreak} automatically. % % \minisec{Twoside-mode} % 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} % % \ExplCmd{newmdenv} The command has the following syntax: % \iffalse %<*example> % \fi \begin{tltxmdfexample} \newmdenv[]{Name of the environment} \end{tltxmdfexample} % \iffalse % % \fi % In this way you can simply use: % \iffalse %<*example> % \fi \begin{tltxmdfexample} \newmdenv[linecolor=red,frametitle=Infobox]{infobox} ... \begin{infobox}[backgroundcolor=yellow] foo foo foo foo foo foo \end{infobox} \end{tltxmdfexample} % \iffalse % % \fi % \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 % an \Env{environment} 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} \surroundwithmdframed[linewidth=2pt]{verbatim} \end{tltxmdfexample} % \iffalse % % \fi % % % \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} Some Text \hspace{\mdflength{innerleftmargin}} Some Text \the\mdflength{innerleftmargin} \end{tltxmdfexample} % \iffalse % % \fi % % % % \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.\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 you are avoiding breaking of non robust commands.}^^A % \footnote{Thanks to Heiko Oberdiek and Philipp Stephani % \href{https://groups.google.com/group/de.comp.text.tex/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 %<*example> % \fi \begin{tltxmdfexample}[morekeywords={mystyle}] \mdfdefinestyle{mystyle}{leftmargin=0pt,% linecolor=blue} .... \begin{mdframed}[style=mystyle] foo \end{mdframed} \end{tltxmdfexample} % \iffalse % % \fi % % \ExplCmd{mdfapptodefinestyle} % This commands allows to expand a defined style.\footnote{Thanks % to Martin Scharrer and Enrico Gregorio:\newline % \href{http://tex.stackexchange.com/questions/34684/argument-of-setkeys} % {http://tex.stackexchange.com/questions/34684/argument-of-setkeys}} % % % % %%%%%%%%%%%%%%%%%%%%%%% % \section{Options} % The package provides various options to manipulate frames. In the following section % all options are listed. Some internal macros which can be manipulated are not shown % in this documentation. % The listed options are divided in global and local options. The global options can not % be used inside \Cmd{mdfsetup}. % % \subsection{Global Options}\label{globopt} % The following options are only global options. % % \ExplOpt[none]{xcolor} % By setting this key, the package \Pack{xcolor} will % be loaded with the given value(s). Without any value \mbox{\Pack{mdframed}} loads % the package \Pack{color} without any options. If the package \Pack{xcolor} % is already loaded the given option will be ignored. % I recommend to load \Pack{xcolor} before \Pack{mdframed}. % % \ExplOpt[default]{framemethod} % With this key you can change the way frames are drawn. You can decide % whether the frame is drawn with % \begin{enumerate} % \item \LaTeX-commands {\small\Cmd{hrule}, \Cmd{vrule}, \Cmd{rule}}, % \item \Pack{TikZ} {\small(the package \Pack{TikZ} will be loaded)} or % \item \Pack{PSTricks} {\small(the package \Pack{pstricks} will be loaded)}. % \end{enumerate} % The option \Opt{framemethod} requires a string. Allowed combinations are listed in the % following table. % \begin{table}[!ht] % \centering % \renewcommand*\arraystretch{1.3} % \caption{Allowed keys for \Opt{framemethod}} % \begin{tabular}{@{}>{\small\bfseries}l>{\small\ttfamily}l@{}} % \toprule % \multicolumn{1}{@{}l}{\textbf{Method}} & \multicolumn{1}{l}{Allowed keys} \\\midrule % \LaTeX-commands & default, tex, latex, none, 0 \\ % \Pack{TikZ} & tikz, pgf, 1 \\ % \Pack{PSTricks} & pstricks, ps, postscript, 2 \\\bottomrule % \end{tabular} % \end{table} % % \minisec{FYI} % It is independently whether the \texttt{method} is % written with no, one or more capital letter. % % \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. % I tried to define self explained names. % % \subsubsection{Options with lengths}\label{optlength} % % 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. % % I know that the predefined lengths are not well prepared. Maybe I will change it later. % % \ExplOpt[pt]{defaultunit} see the sentence above. % % \begin{center} % \begin{tikzpicture}[scale=0.9] % %Declaration % \newlength{\linew} % \setlength{\linew}{5pt} % \tikzstyle{every node}=[font=\bfseries\large\sffamily] % \coordinate (innersep) at (3.2,2.25); % \coordinate (outersep) at (3.2,2); % %Center % \node[fill=green!10,draw=black,framed,rounded corners, % minimum width=3cm,minimum height=1.5cm]% % (CenterNode) {Contents}; % % %frames % \draw[draw=red!70!black,line width=\linew] % % ($(CenterNode)+(innersep)$) % % rectangle ($(CenterNode)-(innersep)$); % \draw[draw=blue!70!black,line width=\linew] % % ($(CenterNode)+(innersep)+(\linew,\linew)$)% % rectangle ($(CenterNode)-(innersep)+(-\linew,-\linew)$); % \draw[draw=yellow!70!black,line width=\linew] % ($(CenterNode)+(innersep)+(2\linew,2\linew)$)% % rectangle ($(CenterNode)-(innersep)+(-2\linew,-2\linew)$); % \draw[draw=black,line width=1] ($(CenterNode)+(innersep)+(outersep)$)% % rectangle ($(CenterNode)-(innersep)-(outersep)$); % % % \tikzstyle{every node}=[font=\small\ttfamily] % %%innertopmargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in % (CenterNode.north) -- ($(CenterNode)+(0,\y1)-(0,.5\linew)$) ; % \path let \p1=(innersep) in % (CenterNode.north) % edge node[align=center,framed,fill=white,draw=white]{innertopmargin} % ($(CenterNode)+(0,\y1)-(0,.5\linew)$) ; % %%innerbottommargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in % (CenterNode.south) -- ($(CenterNode)-(0,\y1)+(0,.5\linew)$) ; % \path let \p1=(innersep) in % (CenterNode.south) % edge node[align=center,framed,fill=white,draw=white]{innerbottommargin} % ($(CenterNode)-(0,\y1)+(0,.5\linew)$) ; % % %%innerleftmargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in % (CenterNode.west) -- ($(CenterNode)-(\x1,0)+(.5\linew,0)$) ; % \path let \p1=(innersep) in % (CenterNode.west) edge % node[align=center,rotate=90,framed,fill=white,draw=white]{innerleftmargin} % ($(CenterNode)-(\x1,0)+(.5\linew,0)$) ; % %%innerrightmargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) in % (CenterNode.east) -- ($(CenterNode)+(\x1,0)-(.5\linew,0)$) ; % \path let \p1=(innersep) in % (CenterNode.east) edge % node[align=center,rotate=90,framed,fill=white,draw=white]{innerrightmargin} % ($(CenterNode)+(\x1,0)-(.5\linew,0)$) ; % % % %%leftmargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)-(\x1,0)-(2.5\linew,0)$) -- ($(CenterNode)-(\x1,0)-(\x2,0)$) ; % \path let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)-(\x1,0)-(2.5\linew,0)$) edge % node[align=center,rotate=0,framed,fill=white,draw=white]{leftmargin} % ($(CenterNode)-(\x1,0)-(\x2,0)$) ; % %%rightmargin % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)+(\x1,0)+(2.5\linew,0)$) -- ($(CenterNode)+(\x1,0)+(\x2,0)$) ; % \path let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)+(\x1,0)+(2.5\linew,0)$) edge % node[align=center,rotate=0,framed,fill=white,draw=white]{rightmargin} % ($(CenterNode)+(\x1,0)+(\x2,0)$) ; % % %%skipabove % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)+(0,\y1)+(0,2.5\linew)$) -- ($(CenterNode)+(0,\y1)+(0,\y2)$) ; % \path let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)+(0,\y1)+(0,2.5\linew)$) edge % node[align=center,rotate=0,framed,fill=white,draw=white]{skipabove} % ($(CenterNode)+(0,\y1)+(0,\y2)$) ; % %%skipbelow % \draw[draw=black,triangle 45-triangle 45]let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)-(0,\y1)-(0,2.5\linew)$) -- ($(CenterNode)-(0,\y1)-(0,\y2)$) ; % \path let \p1=(innersep) , \p2=(outersep) in % ($(CenterNode)-(0,\y1)-(0,2.5\linew)$) edge % node[align=center,rotate=0,framed,fill=white,draw=white]{skipbelow} % ($(CenterNode)-(0,\y1)-(0,\y2)$) ; % \end{tikzpicture} % % \captionof{figure}{adjustable lengths of \Pack{mdframed}} % \label{fig:laengen} % \end{center} % % \ExplOpt[0pt]{skipabove} % Sets an additional skip above the frame. % \ExplOpt[0pt]{skipbelow} % Sets an additional skip below the frame. % \ExplOpt[]{margin} % This option is not longer supported. Use \Opt{leftmargin} % and \Opt{rightmargin} instead. % \ExplOpt[0pt]{leftmargin} % Sets the length of the left margin of the environment. % \ExplOpt[0pt]{rightmargin} % Sets the length of the right margin of the environment. % \ExplOpt[10pt]{innerleftmargin} % Sets the length of the inner left margin of the environment. % \ExplOpt[10pt]{innerrightmargin} % Sets the length of the inner right margin of the environment. % \ExplOpt[.4\textbackslash baselineskip]{innertopmargin} % Sets the length of the inner top margin of the environment. % \ExplOpt[.4\textbackslash baselineskip]{innerbottommargin} % Sets the length of the inner bottom margin of the environment. % % \paragraph*{The following lengths are not shown in figure \eqref{fig:laengen}.} % % \mbox{} % \ExplOpt[0pt]{userdefinedwidth} % Sets the width of the whole \Pack{mdframed} environment. % The width represent the width including the line width and % the inner margins. The outer margins will be ignored. % \ExplOpt{outermargin} % Sets the length of the outer margin. This option is only available % in \texttt{twoside}-mode. % \ExplOpt{innermargin} % Sets the length of the inner margin. This option is only available % in \texttt{twoside}-mode. % \ExplOpt[0pt]{splittopskip} % Sets the length of the skip above the split part of the environment. % \ExplOpt[0pt]{splitbottomskip} % Sets the length of the skip below the split part of the environment. % \ExplOpt[0.4pt]{linewidth} % Sets the width of the line around the environment. % \ExplOpt[0pt]{roundcorner} % Sets the size of the radius of the corners of the frames. % \limitation[TikZ or PSTricks] % \ExplOpt[0pt]{innerlinewidth} % Sets the width of the inner line around the environment. % \limitation[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[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[\{\}]{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[false]{shadow} % Draw a shadow. The shadow doesn't influence the bounding box so the shadow % can be drawn in the margin without any overfull box. % Note if you are using the TikZ you must load the library. % \Pack{mdframed} doesn't do the job to avoid double loading of a library. % % \ExplOpt[8\,pt]{shadowsize} % Specify the size of the shadow. % \ExplOpt[black!50]{shadowcolor} % Specify the color of the shadow. % % % \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{addtopsstyle} in combination with this option % you can expand the definition. The predefined styles are % \begin{itemize} % \item \Opt{mdfbackgroundstyle} % \item \Opt{mdfframetitlebackgroundstyle} % \item \Opt{mdfouterlinestyle} % \item \Opt{mdfinnerlinestyle} % \item \Opt{mdfmiddlelinestyle} % \end{itemize} % \textbf{Before you change one please have a look at the file % \texttt{md-frame-2.mdf} to see the settings.} % \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/.style\}} % \item \Cmd{tikzset\{mdfshadow/.style\}} % \end{itemize} % \textbf{Before you change one please have a look at the % file \texttt{md-frame-1.mdf} to see the settings.} % \limitation % % \subsection{Hidden Lines} % \ExplOpt[true]{topline} Draws a line at the top. % \ExplOpt[true]{bottomline} Draws a line at the bottom. % \ExplOpt[true]{leftline} Draws a line on the left. % \ExplOpt[true]{rightline} Draws a line on the right. % \ExplOpt[false]{hidealllines} % With this option you can decide whether all lines should be drawn or not. % % \subsection{Frametitle} % In this section all relevant options of the frame title will be presented. % They are not divided in their properties. % % \ExplOpt[none]{frametitle} % The environment gets a title. To set a title use % \Opt{frametitle=\{The Title of the frame\}} as an option of the environment. % \ExplOpt[\Cmd{normalfont}\Cmd{bfseries}]{frametitlefont} % Sets the format of the \Opt{frametitle}. % \ExplOpt[\Cmd{raggedleft}]{frametitlealignment} % Align the \Opt{frametitle}. This option must be set via \Cmd{mdfsetup}. % \ExplOpt[false]{frametitlerule} % Set this key to \Opt{true} to get a line between the frame title % and the text. % \ExplOpt[.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: % % \iffalse %<*example> % \fi \begin{tltxmdfexample}[deletekeywords={mdframed}] \newmdtheoremenv[]{}% []{}[] \end{tltxmdfexample} % \iffalse % % \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{} \newmdtheoremenv[linecolor=blue]{lemma}% {Lemma}[section] ... \begin{lemma}[Some title] foo foo foo foo foo foo \end{lemma} \end{tltxmdfexample} % \iffalse % % \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[]{}% []{}[] \end{tltxmdfexample} % \iffalse % % \fi % As you can see the arguments are equal to \Cmd{newtheorem} but the % command ignores every \Cmd{theoremstyle}. This is based on the following % behavior. % % The command \Cmd{mdtheorem} creates two environments based on the given % first mandatory argument. The first environment is named like the given % argument and creates a numbered theorem. The second environment is named % like the first mandatory argument with a star. This environment has the % same formating but isn't numbered. % % The syntax of the new defined environments is equal to the normal theorem % environments. % \iffalse %<*example> % \fi \begin{tltxmdfexample}[deletekeywords={mdframed}] \begin{environment}[optional title] ... \end{environment} \end{tltxmdfexample} % \iffalse % % \fi % What happened? The caption of the command will be set as the frame title. % In this way all options of the frame title are available. Furthermore % \Pack{mdframed} provides additional options explained below. % % \ExplOpt[\{:\}]{theoremseparator} % Sets the separator of the caption and the title of the theorem. % The \Opt{theoremseparator} will be printed only if an theorem % title is given. % \ExplOpt[\{\}]{theoremtitlefont} % Via the option \Opt{frametitlefont} you can manipulate the font % of the frame title. The option \Opt{theoremtitlefont} allows to % set a different font to the title of the theorem. % \ExplOpt[\protect\Cmd{space}]{theoremspace} % Sets the space after \Opt{theoremseparator}. % % Examples can be found in the attached files. % % \subsection{Footnotes} % Inside the environment you can use the command \Cmd{footnote} as usual. % \Pack{mdframed} uses the syntax of environment \Pack{minipage} with % the same counter. % % Every footnote text will be collected inside a box and will be displayed % at the end of the environment \Pack{mdframed}. % % \ExplOpt[\mbox{} \Cmd{bigskipamount}]{footnotedistance} % The length is the distance between the end of the environment % \Pack{mdframed} and the displaying of the \Cmd{footnoterule}. % \ExplOpt[true]{footnoteinside} % The position of the footnotes can be changed with the option % \Opt{footnoteinside}. The footnotes will be displayed at the end % of the environment but you can decide whether the output is inside % \Pack{mdframed} or after. % % \minisec{Note} % The output of the footnotes with the option \Opt{footnoteinside=false} % are not in a splitted frame. I think it isn't useful because the first line % of a new page shouldn't be a footnote. % % \section{Examples} % % I outsource the examples in four files to limit the documentation. The files are % \begin{description}[style=nextline] % \item[\texttt{mdframed-example-default}] % Demonstration of examples created with \Opt{framemethod=default}. % \item[\texttt{mdframed-example-tikz}] % Demonstration of examples created with \Opt{framemethod=TikZ}. % \item[\texttt{mdframed-example-pstricks}] % Demonstration of examples created with \Opt{framemethod=pstricks}. % \item[\texttt{mdframed-example-texsx}] % Demonstration of examples like interaction with \Pack{listings} % \end{description} % % The examples are often not equivalent but normally they can be adapted to another method. % So I really recommend to have a look to all example files. % % \section{Errors, Warnings and Messages} % % The package \Pack{mdframed} provides different errors, warnings and % messages in the \texttt{log}-file. Some \LaTeX-editors like % \TeX Maker or \TeX Studio have a special tab for errors and warnings % but not for messages. So you should look in the \texttt{log-File} itself. % % The following errors and warnings are generated by \Pack{mdframed}. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} The package ... does not exist but needed by mdframed \end{tltxmdfexample} % \iffalse % % \fi % To avoid this problem you should install the required % packages which are listed in section \ref{sec:syntax}. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} package option style is depreciated use framemethod instead style \end{tltxmdfexample} % \iffalse % % \fi % With version 0.9d \Pack{mdframed} changed the meaning of the option \Opt{style}. The option is used to load a defined style by \Cmd{mdfdefinestyle}. Instead use \Opt{framemethod} (see section \ref{globopt}). % % \iffalse %<*example> % \fi \begin{tltxmdfexample} Unknown framemethod .... mdframed \end{tltxmdfexample} % \iffalse % % \fi % The input string for the option \Opt{framemethod} is unkown. See section \ref{globopt}. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} You have not loaded ntheorem yet \end{tltxmdfexample} % \iffalse % % \fi % To use the option \Opt{ntheorem} you have to % load the package \Pack{ntheorem}. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} You have only a width of 3cm \end{tltxmdfexample} % \iffalse % % \fi % The package \Pack{mdframed} calculates the width of the contents % based on the given options. If the width of the contents is smaller than % 3\,cm you will get this warnings. You should change the % settings to get a greater width. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} You got a bad break you have to change it manually by changing the text, the space or something else \end{tltxmdfexample} % \iffalse % % \fi % Sometimes you have enough vertical space for the rules and the space % between the rules and the contents but not for the contents itself. % In this situation you will get this warning because the contents % of this box is empty. You have the possibility to change the % settings or include a \Cmd{clearpage} in front of % the environment \Pack{mdframed}. % So far I have no idea how to avoid such things. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} You got a bad break because the split box is empty You have to change the page settings like enlargethispage or something else You got a bad break \end{tltxmdfexample} % \iffalse % % \fi % See the explanation above. % % \iffalse %<*example> % \fi \begin{tltxmdfexample} You got a bad break because the last split box is empty You have to change the settings \end{tltxmdfexample} % \iffalse % % \fi % The same reason as above but only in the last box. % % % \iffalse %<*example> % \fi \begin{tltxmdfexample} Option ... is already consumed and has no effect on input line ... \end{tltxmdfexample} % \iffalse % % \fi % If you set a global option inside the document % body you will get this warning. % % \section{Known Problems} % In this section I will collect known problems. In case you encounter % any further problems, please drop me an email, % \href{mailto:marco.daniel@mada-nada.de}{marco.daniel at mada-nada.de}. % % Do you have any ideas / wishes on further extensions to this package? % Please let me know! % % \begin{enumerate} % \item So far the environment isn't compatible with the package \Pack{gmverb}. % \end{enumerate} % % % \section{ToDo} % \textbf{\color{red} It is important to update the documentation} % \begin{enumerate} % \item see \enquote{Known Problems}. % \item So far it isn't possible to combine the environment % \Cmd{begin\{multicols\}} of the package \Pack{multicol} % with \Pack{mdframed} with the whole option list. % \item Create new styles. % \item Improve page breaks. % \item Improve footnotes. % \item Improve documentation and examples. % \item Create styles for \Opt{frametitle}. % \end{enumerate} % % \section{Acknowledgements} % \textsf{Dick Nickalls;\quad Dietrich Grau;\quad Piazza Luca;\quad Jobst Hoffmann; % \quad Martin Scharrer;\quad Enrico Gregorio;\quad Heiko Oberdiek; % \quad Philipp Stephani}. % \medskip % % \noindent Thanks for proofreading % % \textsf{Alan Munn} and \textsf{Nahid Shajari} % % I hope I forgot nobody. % \clearpage % \appendix % \section{More information} % %\addtocontents{toc}{\protect\setcounter{tocdepth}{-4}} % In the following section I want to present how to create % your own frame. % \subsection{How does \Pack{mdframed} work?} % With the environment \Cmd{begin\{mdframed\}} \ldots \Cmd{end\{mdframed\}} % the whole contents will be saved in a \Cmd{savebox} called \Cmd{mdf@splitbox@one}. % After the calculation of the width and the height of the \Cmd{mdf@splitbox@one} (done by \Pack{mdframed.sty}) the box % will be set sequently (done by \Pack{md-frame-X.mdf}). The following figure demonstrates this. % % \begin{center} % \begin{tikzpicture} % \newcommand{\mybox}[1]{\parbox{3.5cm}{\centering\small #1}} % \tikzstyle{every node}=[font=\sffamily] % \tikzset{mymatrixnodes/.style={% % matrix of nodes, % nodes={framed,draw=black,fill=yellow!10,}, % column sep=4.5cm, % row sep=1.5cm, % }} % \matrix(m)[mymatrixnodes] % {% % \mybox{read in and save contents in \Cmd{mdf@splitbox@one}} & % \mybox{\Cmd{mdf@putbox@single}} \\ % \mybox{split \textbackslash mdf@splitbox@one in \Cmd{mdf@splitbox@two} to the free space of the page} & % \mybox{\Cmd{mdf@putbox@first}} \\ % \mybox{contents of \Cmd{mdf@splitbox@one} have enough space on the new page} & % \mybox{\Cmd{mdf@putbox@second}} \\ % \mybox{split \Cmd{mdf@splitbox@one} in \Cmd{mdf@splitbox@two} to the free space of the page} & % \mybox{\Cmd{mdf@putbox@middle}} \\ % }; % % \tikzstyle{every path}=[black,-triangle 45,thick,shorten >=4pt,shorten <=4pt] % \draw (m-1-1) edge node[align=center,anchor=south]{enough space on page} (m-1-2); % \draw (m-2-1) edge node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} (m-2-2); % \draw (m-3-1) edge node[align=center,anchor=south]{yes} (m-3-2); % \draw (m-4-1) edge node[align=center,anchor=south]{type out \Cmd{mdf@splitbox@two}} (m-4-2); % % \draw (m-2-2) edge node[align=center,fill=white]% % {calculate the height of the new \Cmd{mdf@splitbox@one}} (m-3-1); % % % \draw (m-1-1) edge node[align=center,anchor=west]{not enough space on page} (m-2-1); % \draw (m-3-1) edge node[align=center,anchor=west]{no} (m-4-1); % % \draw let \p1=($(m-4-2.south)-(0,1)$), \p2=($(m-3-1.west)-(0.8,0)$) in % (m-4-2.south) -- ($(m-4-2.south)+(0,-1)$) -- % node[align=center,anchor=north]% % {calculate the height of the new \Cmd{mdf@splitbox@one}} (\x2,\y1) % -- ($(m-3-1.west)-(0.8,0)$)-- ($(m-3-1.west)$) ; % % % \end{tikzpicture} % % \captionof{figure}{Setting the contents of \Pack{mdframed}}\label{fig:way} % \end{center} % % The width of the contents is the result of the settings of % \Opt{leftmargin}, \Opt{rightmargin}, \Opt{linewidth}, % \Opt{innerleftmargin} and \Opt{innerrightmargin} % (see figure \eqref{fig:laengen}). % % \subsection{The Framecommands} % The package \Pack{mdframed} knows four kinds of \enquote{Framecommand}. % These commands tell \LaTeX\ how to set the contents of \Pack{mdframed}. % \begin{description} % \item[\Cmd{mdf@putbox@single}] % This command sets the contents of a single unsplit frame. % \item[\Cmd{mdf@putbox@first}] % This command sets the contents of the first frame of a split frame. % \item[\Cmd{mdf@putbox@middle}] % This command sets the contents of the middle frame of a split frame. % \item[\Cmd{mdf@putbox@second}] % This command sets the contents of the last frame of a split frame. % \end{description} % % Using the explained commands we give an example. The command \Cmd{box} % uses the contents of the savebox and types them out. % % First we want to type out the single box without any settings % (but with the calculated width). % \iffalse %<*example> % \fi \begin{tltxmdfexample} \makeatletter \def\mdf@putbox@single{\box\mdf@splitbox@one} \makeatother \end{tltxmdfexample} % \iffalse % % \fi % I am using the command \Cmd{leftline} to start the \enquote{Framecommands} at the left. % \iffalse %<*example> % \fi \begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] \makeatletter \def\mdf@putbox@single{\leftline{\box\mdf@splitbox@one}} \makeatother \end{tltxmdfexample} % \iffalse % % \fi % % Now you have to know how the lengths are named. Every length which can be % modified by the options has the following syntax: % \iffalse %<*example> % \fi \begin{tltxmdfexample} \mdf@@length \end{tltxmdfexample} % \iffalse % % \fi % For example the leftmargin is: % \iffalse %<*example> % \fi \begin{tltxmdfexample} \mdf@leftmargin@length \end{tltxmdfexample} % \iffalse % % \fi % % To create only a line at the left with the correct \Opt{leftmargin} you % can set \Cmd{mdf@putboxsingle} as follows % % \iffalse %<*example> % \fi \begin{tltxmdfexample}[deletekeywords={leftline},moretexcs={leftline}] \makeatletter \def\mdf@putbox@single{% \leftline{% \hspace*{\mdf@leftmargin@length}% \rule[-\dp\mdf@splitbox@one]{\mdf@linewidth}% {\ht\mdf@splitbox@one+\dp\mdf@splitbox@one}% \box\mdf@splitbox@one }% } \makeatother \end{tltxmdfexample} % \iffalse % % \fi % % In this way you can do what you want. If you create your own style you % can save the file as \Pack{md-frame-X.mdf}. % \Pack{X} must be an integer. % In this way you can use the option \Opt{framemethod} to % load the file by setting \Opt{framemethod=X}. % % \clearpage % % \subsection{Revision history}\label{rev} % \raggedright % \minisec{Version 1.3a submitted 5 Feb 2012} % \begin{itemize*} % \item fixed bug (Thanks to Dietrich Grau) % \end{itemize*} % % \minisec{Version 1.3 submitted 4 Feb 2012} % \begin{itemize*} % \item fixed documentation (Thanks to Dietrich Grau) % \item added option \Opt{shadow} % \item improved handling \Cmd{parindent} and \Cmd{parskip} (Thanks to Enrico Gregorio and Joseph Wright) % \end{itemize*} % % \minisec{Version 1.2 submitted 8 Jan 2012} % \begin{itemize*} % \item fixed documentation (Thanks to Dietrich Grau) % \item fixed bug in combination with \Pack{amsthm} % \item fixed bug in \Cmd{newmdtheoremenv} % \item defined new styles via \Cmd{newpsstyle}\limitation[PSTricks] % \item added new commands for interaction with \Pack{TikZ} and \Pack{PSTricks} % \item expand frame title option by option \Opt{frametitlerule}, \Opt{frametitlerulewidth} % \Opt{frametitlefont}, \Opt{frametitleaboveskip}, \Opt{frametitlebelowskip}, \Opt{frametitlealignment} % \item removed limitation of three lines for PSTricks % \item defined new commands \Cmd{surroundwithmdframed}, \Cmd{mdflength}, \Cmd{mdtheorem} % \item load \Pack{xparse} by default % \item changed internal names % \item expanded examples % \end{itemize*} % % \minisec{Version 1.0b submitted 9 Dec 2011} % \begin{itemize*} % \item fixes documentation (Thanks to Dietrich Grau) % \item fixes bug in \Cmd{newmdtheoremenv} % \item fixes bug with overfull boxes (Thanks to Dietrich Grau) % \item defined \Cmd{newpsstyle}\Opt{mdfbackgroundstyle} and \Opt{mdflinestyle} \limitation[PSTricks] % \item created dtx-file (Thanks to Kevin Godby) % \item added \Cmd{@parboxrestore} to \Cmd{mdf@lrbox} % \end{itemize*} % % \footnotesize % \minisec{Version 1.0 submitted 13 Nov 2011} % \begin{itemize*} % \item add option \Opt{userdefinedwidth} % \item add option \Opt{align} % \item add option \Opt{apptotikzsetting} % \item create new command \Cmd{mdfapptodefinestyle} % \item changed internal algorithm % \item removed calc instead using \eTeX\ \verb+\dimexpr+ % \item expand documentation % \item trying to fixe problems with \Pack{xcolor} % \item fixed bug with \Opt{framemethod=pstricks} % \item create file \Pack{mdframed-example-default} % \item create file \Pack{mdframed-example-tikz} % \item create file \Pack{mdframed-example-pstricks} % \item create file \Pack{mdframed-example-texsx} (texsx stands for tex stackexchange) % \end{itemize*} % % % \minisec{Version 0.9g submitted 08 Oct 2011} % \begin{itemize*} % \item fixed documentation % \item added small footnote compatibility % \end{itemize*} % % \minisec{Version 0.9f submitted 04 Oct 2011} % \begin{itemize*} % \item fixes bugs (thanks to Lars Madsen) % \item added option \Opt{hidealllines} % \item fixed documentation % \end{itemize*} % % % \minisec{Version 0.9e submitted 11 Sep 2011} % \begin{itemize*} % \item working with \texttt{twoside} modus % \end{itemize*} % % \minisec{Version 0.9d submitted 10 Sep 2011} % \begin{itemize*} % \item \textcolor{red}{changed the meaning of the option % \Opt{style}}!!! (inspired by Lars Madsen) % \item added option \Opt{framemethod} (inspired by Lars Madsen) % \item added options \Opt{needspace} (inspired by Lars Madsen) % \item added new command \Cmd{mdfdefinestyle} (inspired by Lars Madsen) % \item fixes documentation % \item renamed \Pack{md-frame-3.mdf} to \Pack{md-frame-2.mdf} % \end{itemize*} % % % % \minisec{Version 0.9b submitted 7 Sep 2011} % \begin{itemize*} % \item fixes bugs in \Cmd{newmdtheoremenv} (Thanks to Enrico Gregorio) % \end{itemize*} % % \minisec{Version 0.9a submitted 5 Sep 2011} % \begin{itemize*} % \item fixes bugs (Thanks to Lars Madson) % \item expanded documentation (added revision history) % \end{itemize*} % % % \minisec{Version 0.9 submitted 4 Sep 2011} % \begin{itemize*} % \item added option \Opt{nobreak} % \item detecting float environments to prevent split calculation % \item expand documentation (Thanks to Alan Munn) % \end{itemize*} % % \minisec{Version 0.8a} % \begin{itemize*} % \item fixes bugs % \item fixes documentation % \end{itemize*} % % \minisec{Version 0.8 submitted 22 Aug 2011} % \begin{itemize*} % \item added commands: \Cmd{newmdenv}, \Cmd{renewmdenv}, \Cmd{newmdtheoremenv} % \item fixes bugs % \item fixes documentation % \end{itemize*} % % \minisec{Version 0.7a submitted 6 August 2011} % \begin{itemize*} % \item added option \Opt{frametitle} % \item added option \Opt{frametitlefont} % \item allow twolumn-mode % \item changed the calculation % \item added option \Opt{tikzsetting} % \item added options for hidden lines for all styles % \item fixes bugs % \end{itemize*} % % \minisec{Version 0.6a submitted 22 Dec 2010} % \begin{itemize*} % \item fixes bugs % \item added \Cmd{mdfsetup} % \item expanded documentation % \end{itemize*} % % \ltxmdfappendix % % \section{Implementation}\label{implementation} % % And finally, here's how it all works\ldots % %\StopEventually{^^A % \clearpage % \PrintChanges^^A % \clearpage % \PrintIndex^^A %} %\iffalse % \begin{macrocode} %<*package> % \end{macrocode} %\fi % % \subsection{The Explanation of mdframed.sty} % % %$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % %$Rev: 344 $ % %$Author: marco $ % %$Date: 2012-02-05 00:50:02 +0100 (So, 05. Feb 2012) $ % \begin{macro}{mdversion,mdframedpackagename,mdf@maindate@svn} % Set package information % \begin{macrocode} \def\mdversion{v1.3a} \def\mdframedpackagename{mdframed} \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}% [\mdf@maindate@svn$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $% \mdversion: \mdframedpackagename] % \end{macrocode} % % \begin{macro}{mdf@PackageWarning,mdf@PackageInfo,mdf@LoadFile@IfExist} % Set short form of |\PackageWarning|, |\PackageInfo| and |IfFileExists| in combination % with |\RequirePackage|. % \begin{macrocode} \newcommand*\mdf@PackageWarning[1]{\PackageWarning{\mdframedpackagename}{#1}} \newcommand*\mdf@PackageInfo[1]{\PackageInfo{\mdframedpackagename}{#1}} \newcommand*\mdf@LoadFile@IfExist[1]{% \IfFileExists{#1.sty}{% \RequirePackage{#1}% }{% \mdf@PackageWarning{The file #1 does not exist\MessageBreak but needed by \mdframedpackagename\MessageBreak see documentation fo further information }% } } % \end{macrocode} % \end{macro} % % Loading required packages % \begin{macrocode} \RequirePackage{kvoptions} \RequirePackage{xparse} \RequirePackage{etoolbox}[2011/01/03] \RequirePackage{zref-abspage} \RequirePackage{color} % \end{macrocode} % % Set the family and the prefix of all options. (see documentation of |kvoptions| % \begin{macrocode} \SetupKeyvalOptions{family=mdf,prefix=mdf@} % \end{macrocode} % \begin{macro}{mdf@iflength,mdf@iflength@check,mdf@iflength@check} % Command which checks the input of length options. If the length option is only % a number the |defaultunit| will be used. Syntax: |\mdf@iflength{}{}{}| % \begin{macrocode} \newlength{\mdf@templength} \def\mdf@iflength#1{% \afterassignment\mdf@iflength@check% \mdf@templength=#1\mdf@defaultunit\relax\relax \expandafter\endgroup\next } \def\mdf@iflength@check#1{% \begingroup \ifx\relax#1\@empty \def\next{\@secondoftwo} \else \def\next{\@firstoftwo} \expandafter\mdf@iflength@cleanup \fi } \def\mdf@iflength@cleanup#1\relax{} % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@dolist} % Loop used by \Pack{mdframed}. % \begin{macrocode} \DeclareListParser*{\mdf@dolist}{,} % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@option@length,mdf@define@key@length} % Command to define a new length width a default value. %| \mdf@option@length{}{}| % \begin{macrocode} \newrobustcmd*{\mdf@option@length}[2]{% \expandafter\newlength\csname mdf@#1@length\endcsname% \expandafter\setlength\csname mdf@#1@length\endcsname{#2}% } % \end{macrocode} % Command to create a new length option.|\mdf@define@key@length{}| % \begin{macrocode} \newrobustcmd*{\mdf@define@key@length}[1]{% \define@key{mdf}{#1}{% \def\@tempa{##1} \mdf@iflength{\@tempa}% {\csxdef{mdfl@#1}{\the\mdf@templength}}% {\csxdef{mdfl@#1}{\the\mdf@templength}}% \expandafter\setlength\csname mdf@#1@length\endcsname{\csname mdfl@#1\endcsname}% }% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@do@lengthoption,mdf@lengthoption@doubledo} % The loop of |\mdf@dolist| expected one argument. So I have to define to commands % to allow a loop with two arguments. The separation for the input is |==|. % \begin{macrocode} \def\mdf@do@lengthoption#1{% \mdf@lengthoption@doubledo#1\@nil% } \def\mdf@lengthoption@doubledo#1==#2\@nil{% \mdf@option@length{#1}{#2}% \mdf@define@key@length{#1}% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@do@stringoption,mdf@stringoption@doubledo} % Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. % \begin{macrocode} \def\mdf@do@stringoption#1{% \mdf@stringoption@doubledo#1\@nil% } \def\mdf@stringoption@doubledo#1==#2\@nil{% \expandafter\gdef\csname mdf@#1\endcsname{#2}% \define@key{mdf}{#1}{% \csdef{mdf@#1}{##1}% }% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@do@booloption,mdf@booloption@doubledo} % Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. % \begin{macrocode} \def\mdf@do@booloption#1{% \mdf@booloption@doubledo#1\@nil% } \def\mdf@booloption@doubledo#1==#2\@nil{% \newbool{mdf@#1}\setbool{mdf@#1}{#2}% \define@key{mdf}{#1}[#2]{% \setbool{mdf@#1}{##1}% }% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@do@alignoption,mdf@alignoption@tripledo} % Same as |\mdf@do@lengthoption| and |\mdf@lengthoption@doubledo|. Here % three arguments are required. % \begin{macrocode} \def\mdf@do@alignoption#1{% \mdf@alignoption@tripledo#1\@nil% } \def\mdf@alignoption@tripledo#1==#2==#3\@nil{% \csdef{mdf@align@#1@left}{\null\hspace*{#2}}% \csdef{mdf@align@#1@right}{\hspace*{#3}\null}% } % \end{macrocode} % \end{macro} % % Start declaration of options % \begin{macrocode} \newcounter{mdf@globalstyle@cnt} \defcounter{mdf@globalstyle@cnt}{0} \newcommand*\mdfglobal@style{0} % \end{macrocode} % Only provide to be backward compatible % \begin{macrocode} \define@key{mdf}{style}{% \mdf@PackageWarning{package option style is depreciated^^J use framemethod instead\MessageBreak}% \renewcommand*\mdfglobal@style{#1}% \defcounter{mdf@globalstyle@cnt}{#1}% \ifcase\value{mdf@globalstyle@cnt}\relax %0 <- kein Grafikpaket \or\mdf@LoadFile@IfExist{tikz}% \or\mdf@LoadFile@IfExist{pstricks-add}% \or\defcounter{mdf@globalstyle@cnt}{2}% \mdf@LoadFile@IfExist{pst-node}% \or\mdf@LoadFile@IfExist{pst-node}% \else\mdf@PackageWarning{Unknown global style \value{mdf@globalstyle@cnt}}% \fi% } % \end{macrocode} % % \begin{macro}{mdf@framemethod} % \begin{macrocode} \providecommand*\mdf@framemethod{} \def\mdf@framemethod@i{}% \def\mdf@framemethod@ii{}% \def\mdf@framemethod@iii{}% % \end{macrocode} % \end{macro} % % \begin{macrocode} \define@key{mdf}{framemethod}[default]{% \lowercase{\def\mdf@tempa{#1}} \forcsvlist{\listadd\mdf@framemethod@i}{default,tex,latex,none,0} \forcsvlist{\listadd\mdf@framemethod@ii}{pgf,tikz,1} \forcsvlist{\listadd\mdf@framemethod@iii}{pstricks,ps,2,postscript} \xifinlist{\mdf@tempa}{\mdf@framemethod@i}% {\def\mdf@@framemethod{default}\defcounter{mdf@globalstyle@cnt}{0}}% {\xifinlist{\mdf@tempa}{\mdf@framemethod@ii}% {\def\mdf@@framemethod{tikz}\defcounter{mdf@globalstyle@cnt}{1}}% {\xifinlist{\mdf@tempa}{\mdf@framemethod@iii}% {\def\mdf@@framemethod{pstricks}\defcounter{mdf@globalstyle@cnt}{2}}% {% \mdf@LoadFile@IfExist{#1}% }% }% }% \ifcase\value{mdf@globalstyle@cnt}\relax% %0 <- kein Grafikpaket \or\mdf@LoadFile@IfExist{tikz}% \or\mdf@LoadFile@IfExist{pst-node}% \or\mdf@LoadFile@IfExist{pst-node}% \fi% } % \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} \mdf@dolist{\mdf@do@lengthoption}{% {skipabove==\z@},% {skipbelow==\z@},% {leftmargin==\z@},% {rightmargin==\z@},% {innerleftmargin==10pt},% {innerrightmargin==10pt},% {innertopmargin==0.4\baselineskip},% {innerbottommargin==0.4\baselineskip},% {splittopskip==\z@},% {splitbottomskip==\z@},% {outermargin==\z@},% {innermargin==\z@},% {linewidth==0.4pt},% {innerlinewidth==\z@},% {middlelinewidth==\expandafter\mdf@linewidth@length},% {outerlinewidth==\z@},% {roundcorner==\z@},% {footenotedistance==\medskipamount}, {userdefinedwidth==\linewidth}, {frametitleaboveskip==5pt}, {frametitlebelowskip==5pt}, {frametitlerulewidth==.2pt}, {frametitleleftmargin==10pt},% {frametitlerightmargin==10pt},% {shadowsize==8pt},% } % \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},% {linecolor==black},% {backgroundcolor==white},% {fontcolor==black},% {frametitlefontcolor==black},% {innerlinecolor==\mdf@linecolor},% {outerlinecolor==\mdf@linecolor},% {middlelinecolor==\mdf@linecolor},% {psroundlinecolor==\mdf@backgroundcolor},% {frametitlerulecolor==\mdf@linecolor}, {frametitlebackgroundcolor==\mdf@backgroundcolor},% {shadowcolor==black!50},% {settings=={}},% {frametitlesettings=={}},% {font=={}},% {frametitlefont==\normalfont\bfseries},% {printheight==none},% {alignment=={}},% {frametitlealignment=={}},% {theoremseparator=={:}},% {theoremcountersep=={.}},% {theoremtitlefont=={}},% {theoremspace=={\space}},% } % \end{macrocode} % \end{macro} % \changes{v1.1beta}{2011/12/17}{Added option \protect\Opt{usetwoside}} % \changes{v1.3}{2012/02/04}{Added option \protect\Opt{shadow}} % \begin{macro}{mdf@do@booloption} % Here the declaration of the string option. The input method is explained above. % \begin{macrocode} \mdf@dolist{\mdf@do@booloption}{% {ntheorem==false},% {topline==true},% {leftline==true},% {bottomline==true},% {rightline==true},% {frametitletopline==true},% {frametitleleftline==true},% {frametitlebottomline==true},% {frametitlerightline==true},% {hidealllines==false},% {frametitlerule==false},% {nobreak==false},% {footnoteinside==true},% {usetwoside==true},% {repeatframetitle==false},%Noch nicht richtig implementiert {shadow==false},% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@do@alignoption} % Here the declaration of the align option. The input method is explained above. % \begin{macrocode} \mdf@dolist{\mdf@do@alignoption}{% {left==\mdf@leftmargin@length==\z@},% {center==\fill==\fill},% {right==\fill==\mdf@rightmargin@length},% {outer==\fill==\mdf@rightmargin@length},%not supported yet {outer==\mdf@leftmargin@length==\fill},%not supported yet } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@align,mdf@makeboxalign@left,mdf@makeboxalign@right,mdf@makeboxalign@right} % Set the alignment. % \begin{macrocode} \newcommand*\mdf@align{}% \newcommand*\mdf@makeboxalign@left{\null\hspace*{\mdf@leftmargin@length}}% \newcommand*\mdf@makeboxalign@right{}% \define@key{mdf}{align}[left]{% \ifcsundef{mdf@align@#1@left}{% \mdf@PackageWarning{Unknown alignment #1\MessageBreak}% \letcs\mdf@makeboxalign@left{mdf@align@left@left}% \letcs\mdf@makeboxalign@right{mdf@align@left@right}% }{% \def\mdf@makeboxalign@left{\csuse{mdf@align@#1@left}}% \def\mdf@makeboxalign@right{\csuse{mdf@align@#1@right}}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@tikzset@local,mdf@psset@local} % Option to pass options to tikz or pstricks % \begin{macrocode} \def\mdf@tikzset@local{\tikzset{tikzsetting/.style={}}} \define@key{mdf}{tikzsetting}{% \def\mdf@tikzset@local{\tikzset{tikzsetting/.style={#1}}}% } \define@key{mdf}{apptotikzsetting}{% \appto\mdf@tikzset@local{#1}% } \def\mdf@psset@local{} \define@key{mdf}{pstrickssetting}{% \def\mdf@psset@local{#1} } \def\mdfpstricks@appendsettings{} \define@key{mdf}{pstricksappsetting}{% \def\mdfpstricks@appendsettings{#1}% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@xcolor} % \textcolor{red}{\bfseries Problem width xcolor. This part must be reworked!} % \begin{macrocode} \def\mdf@xcolor{} \define@key{mdf}{xcolor}[none]{% \def\@tempa{#1}% \@ifpackageloaded{xcolor}{% \let\mdf@xcolor\@empty %ignoriere die Eingabe der Optionen \def\@tempa{}% }{}% \ifx\relax\@tempa\relax\else \PassOptionsToPackage{\mdf@xcolor}{xcolor}% \RequirePackage{xcolor}% \fi% }% % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@needspace} % Defining the option needspace % \begin{macrocode} \define@key{mdf}{needspace}[\z@]{% \begingroup% \setlength{\dimen@}{#1}% \vskip\z@\@plus\dimen@% \penalty -100\vskip\z@\@plus -\dimen@% \vskip\dimen@% \penalty 9999% \vskip -\dimen@% \vskip\z@skip % hide the previous |\vskip| from |\addvspace| \endgroup% } % \end{macrocode} % \end{macro} % % \begin{macrocode} \DeclareDefaultOption{% \mdf@PackageWarning{Unknown Option '\CurrentOption' for mdframed}} \ProcessKeyvalOptions*\relax % \end{macrocode} % % \begin{macro}{mdfsetup} % Short form of |\setkeys{mdf}| % \begin{macrocode} \newrobustcmd*{\mdfsetup}{\setkeys{mdf}} % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@style} % Redefinition of the option |style| to use the key in combination with |mdfdefinedstyle|. % \begin{macrocode} \define@key{mdf}{style}{% \ifcsundef{mdf@definestyle@#1}{% \mdf@PackageWarning{Unknown definedstyle #1^^J You have to define a style ^^J via \string\mdfdefinedstyle\MessageBreak }% }% {\expandafter\expandafter\expandafter\mdfsetup% \expandafter\expandafter\expandafter{\csname mdf@definestyle@#1\endcsname}}% }% % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@print@space} % Option to type out the free vertical space of the current page. % \begin{macrocode} \let\mdf@PackageNoInfo\@gobble \newrobustcmd*\mdf@ifstrequal@expand{% \expandafter\ifstrequal\expandafter{\mdf@printheight}% } \newrobustcmd*\mdf@print@space{% %case "none" \mdf@ifstrequal@expand{none}{\def\mdf@tempa{NoInfo}}{% %case "info" \mdf@ifstrequal@expand{info}{\def\mdf@tempa{Info}}{% %case "warning" \mdf@ifstrequal@expand{warning}{\def\mdf@tempa{Warning}}{% %case "unknown" \mdf@PackageWarning{Unknown key for printheight=\mdf@printheight^^J use none, info or warning}% \def\mdf@tempa{none}% }% }% }% \def\mdf@PackageInfoSpace{\csname mdf@Package\mdf@tempa\endcsname}% } % \end{macrocode} % \end{macro} % \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/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.3a}{2012/02/05}{fixes bug with \protect\Cmd{@doendpe} (Thanks Dietrich Grau)} % \begin{macro}{mdf@lrbox,endmdf@lrbox} % Modification of the default |\lrbox| and |\endlrbox| % \begin{macrocode} \def\mdf@lrbox#1{% %%patch to work with amsthm \mdf@patchamsthm %%end patch \edef\mdf@restoreparams{% \parindent=\the\parindent \parskip=\the\parskip} \setbox#1\vbox\bgroup \color@begingroup% \mdf@horizontalmargin@equation% \columnwidth=\hsize% \textwidth=\hsize% \@parboxrestore% \mdf@restoreparams% %SETZE \@afterindentfalse% \@afterheading% %STREICHE %\@doendpe } \def\endmdf@lrbox{\color@endgroup\egroup} % \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}{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} % \changes{v1.3}{2012/02/04}{Use now \protect\Cmd{item}\protect\Cmd{mbox}\protect\Cmd{relax}} % \begin{macro}{mdf@trivlist,endmdf@trivlist} % Modification of the default |\trivlist| and |\endtrivlist|. % \begin{macrocode} \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} % % \begin{macro}{mdf@makebox@out,mdf@makebox@in} % \begin{macrocode} \newrobustcmd*\mdf@makebox@out[2][\linewidth]{% \noindent\hb@xt@\z@{% \noindent\makebox[\dimexpr #1\relax][l]{#2}% \hss}% }% \newrobustcmd*\mdf@makebox@in[2][\mdf@userdefinedwidth@length]{% \noindent\makebox[\dimexpr #1\relax][l]{#2}% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdfdefinestyle,mdfapptodefinestyle} % See explanation of this commands above. % \begin{macrocode} \newrobustcmd*\mdfdefinestyle[2]{% \csdef{mdf@definestyle@#1}{#2}% } \newrobustcmd*\mdfapptodefinestyle[2]{% \ifcsundef{mdf@definestyle@#1}% {\mdf@PackageWarning{Unknown style #1}}% {\csappto{mdf@definestyle@#1}{,#2}}% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdflength,surroundwithmdframed} % Helper macros to work with mdframed % \begin{macrocode} \newrobustcmd*{\mdflength}[1]{\csuse{mdf@#1@length}} \newrobustcmd*{\surroundwithmdframed}[2][]{% \BeforeBeginEnvironment{#2}{\begin{mdframed}[#1]}% \AfterEndEnvironment{#2}{\end{mdframed}}% } % \end{macrocode} % \end{macro} % % % \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][]{% \newenvironment{#2}{% \mdfsetup{#1}% \begin{mdframed}% }{% \end{mdframed}% }% } \newrobustcmd*\renewmdenv[2][]{% \expandafter\let\csname #2\endcsname\relax% \expandafter\let\csname end#2\endcsname\relax% \newmdenv[#1]{#2}% }% \DeclareDocumentCommand\newmdtheoremenv{O{} m o m o }{% \ifboolexpr{ test {\IfNoValueTF {#3}} and test {\IfNoValueTF {#5}} }% {\newtheorem{#2}{#4}}{% \IfValueTF{#3}{\newtheorem{#2}[#3]{#4}}{}% \IfValueTF{#5}{\newtheorem{#2}{#4}[#5]}{}% }% \BeforeBeginEnvironment{#2}{% \begin{mdframed}[#1]}% \AfterEndEnvironment{#2}{% \end{mdframed}}% } \DeclareDocumentCommand{\mdtheorem}{ O{} m o m o }% {\ifcsdef{#2}% {\mdf@PackageWarning{Environment #2 already exits\MessageBreak}}% {% \IfNoValueTF {#3}% {%#3 not given -- number relationship \IfNoValueTF {#5} {%#3+#5 not given \@definecounter{#2}% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} \newenvironment{#2}[1][]{% \refstepcounter{#2} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% {%#5 given -- reset counter \@definecounter{#2}\@newctr{#2}[#5]% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}} \expandafter\xdef\csname the#2\endcsname{% \expandafter\noexpand\csname the#5\endcsname \@thmcountersep \@thmcounter{#2}}% \newenvironment{#2}[1][]{% \refstepcounter{#2} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% {%#3 given -- number relationship \global\@namedef{the#2}{\@nameuse{the#3}}% \newenvironment{#2}[1][]{% \refstepcounter{#3} \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname\@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}} \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% } % \end{macrocode} % \end{macro} % % \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} %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}{mdf@checkntheorem} % Command which checks only |ntheorem|. Later I will support also % |thmtools|. % \begin{macrocode} \newrobustcmd*\mdf@checkntheorem{% \ifbool{mdf@ntheorem}% {\ifundef{\theorempreskipamount}% {\mdf@PackageWarning{You have not loaded ntheorem yet}}% {\setlength{\theorempreskipamount}{\z@}% \setlength{\theorempostskipamount}{\z@}% }% }{}% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@footnoterule,mdf@footnoteoutput,mdf@footnoteinput} % Support for footnotes. % \begin{macrocode} \newrobustcmd*\mdf@footnoterule{% \kern0\p@% \hrule \@width 1in \kern 2.6\p@} \newrobustcmd*\mdf@footnoteoutput{% \ifvoid\@mpfootins\else \nobreak% \vskip\mdf@footenotedistance@length% \normalcolor% \mdf@footnoterule \unvbox\@mpfootins \fi% } \newrobustcmd*\mdf@footnoteinput{% \def\@mpfn{mpfootnote}% \def\thempfn{\thempfootnote}% \c@mpfootnote\z@% \let\@footnotetext\@mpfootnotetext% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@load@style,mdf@styledefinition} % Load the method to draw the frame and set style definition. % \begin{macrocode} \newrobustcmd*\mdf@load@style{% \ifcase\value{mdf@globalstyle@cnt}\relax% \input{md-frame-0.mdf}% \or\input{md-frame-1.mdf}% \or\input{md-frame-2.mdf}% \or\input{md-frame-3.mdf}% \else% \IfFileExists{md-frame-\value{mdf@globalstyle@cnt}.mdf}% {\input{md-frame-\value{mdf@globalstyle@cnt}.mdf}}% {% \input{md-frame-0.mdf}% \mdf@PackageWarning{The style number \value{mdf@globalstyle@cnt} does not exist^^J mdframed ues instead style=0 \mdframedpackagename}% }% \fi% }% \mdf@load@style \newrobustcmd*\mdf@styledefinition{%AVOID!!! \ifnumequal{\value{mdf@globalstyle@cnt}}{0}% {\deflength{\mdf@innerlinewidth@length}{\z@}% \deflength{\mdf@middlelinewidth@length}{\mdf@linewidth@length}% \deflength{\mdf@outerlinewidth@length}{\z@}% \let\mdf@innerlinecolor\mdf@linecolor% \let\mdf@middlelinecolor\mdf@linecolor% \let\mdf@outerlinecolor\mdf@linecolor% }{}% % \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\mdf@reserved@a\@empty \newrobustcmd*\detected@mdf@put@frame{% \ifmdf@nobreak%Option nobreak=true? \def\mdf@reserved@a{\mdf@put@frame@standalone}% \else \def\mdf@reserved@a{\mdf@put@frame}% \ifnum\@floatpenalty<0\relax%Detecting float \if@twocolumn% \ifx\@captype\@undefined \def\mdf@reserved@a{\mdf@put@frame}% \else \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi \else \mdf@PackageInfo{mdframed inside float ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% \if@minipage% \mdf@PackageInfo{mdframed inside minipage ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \ifinner% \mdf@PackageInfo{mdframed inside a box ^^J mdframed uses option nobreak \mdframedpackagename}% \def\mdf@reserved@a{\mdf@put@frame@standalone}% \fi% \fi% \mdf@reserved@a% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@hidealllines@check} % \begin{macrocode} \newrobustcmd*\mdf@hidealllines@check{% \ifbool{mdf@hidealllines}{% \boolfalse{mdf@leftline}\boolfalse{mdf@rightline}% \boolfalse{mdf@topline}\boolfalse{mdf@bottomline}% \boolfalse{mdf@frametitleleftline}\boolfalse{mdf@frametitlerightline}% \boolfalse{mdf@frametitletopline}\boolfalse{mdf@frametitlebottomline}% }{}% } % \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} \newenvironment{mdframed}[1][]{% \begingroup% \color@setgroup% \mdfsetup{userdefinedwidth=\linewidth,#1}% \mdf@hidealllines@check% \mdf@twoside@checklength% \let\width\z@% \let\height\z@% \mdf@checkntheorem% \mdf@styledefinition% \mdf@footnoteinput% \color{\mdf@fontcolor}% \ifvmode\nointerlineskip\fi% \mdf@trivlist{\mdf@skipabove@length}%% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle}% \mdf@settings% \mdf@lrbox{\mdf@splitbox@one}% }% {\par\unskip% \ifmdf@footnoteinside% \def\mdf@reserveda{% \mdf@footnoteoutput% \endmdf@lrbox% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} \detected@mdf@put@frame}% \else% \def\mdf@reserveda{% \endmdf@lrbox% \ifdefempty{\mdf@frametitle}{}{\mdf@@frametitle@use} \detected@mdf@put@frame% \mdf@footnoteoutput% }% \fi% \mdf@reserveda% \endmdf@trivlist% \color@endgroup\endgroup\@doendpe%\@endparenv% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@twoside@checklength,mdf@zref@label,if@mdf@pageodd,mdf@pageisodd,mdf@pageiseven,mdf@@setzref} % The whole bunch is used to work width twoside mode and uses the correct margins. % \begin{macrocode} \newtoggle{md:checktwoside} \settoggle{md:checktwoside}{false} \newrobustcmd*\mdf@twoside@checklength{% \if@twoside \ifbool{mdf@usetwoside}% {\mdf@PackageInfo{mdframed works in twoside mode}% \settoggle{md:checktwoside}{true}% \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% }% {\mdf@PackageInfo{mdframed inside twoside mode but\MessageBreak works with oneside mode}% \settoggle{md:checktwoside}{false}% }% \fi% } \newcounter{mdf@zref@counter}%keine doppelten laebes \zref@newprop*{mdf@pagevalue}[0]{\number\value{page}} \zref@addprop{\ZREF@mainlist}{mdf@pagevalue} \newrobustcmd*\mdf@zref@label{% \stepcounter{mdf@zref@counter} \zref@label{mdf@pagelabel-\number\value{mdf@zref@counter}}% } \newrobustcmd*\if@mdf@pageodd{% \zref@refused{mdf@pagelabel-\the\value{mdf@zref@counter}}% \ifodd\zref@extract{mdf@pagelabel-\the\value{mdf@zref@counter}}{mdf@pagevalue}% \setlength\mdf@rightmargin@length{\mdf@outermargin@length}% \setlength\mdf@leftmargin@length{\mdf@innermargin@length}% \else \setlength\mdf@rightmargin@length{\mdf@innermargin@length}% \setlength\mdf@leftmargin@length{\mdf@outermargin@length}% \fi% } \newrobustcmd*\mdf@@setzref{% \iftoggle{md:checktwoside}{\mdf@zref@label\if@mdf@pageodd}{}% } % \end{macrocode} % \end{macro} % % \changes{v1.2a}{2012/01/09}{take account of \protect\Cmd{parskip} for the vertical calculation} % \begin{macro}{mdf@freepagevspace} % \begin{macrocode} \newrobustcmd*\mdf@freepagevspace{% \penalty\@M \vskip 2\baselineskip \penalty9999 \vskip -2\baselineskip \penalty9999 \ifdimequal{\pagegoal}{\maxdimen}% {\mdf@freevspace@length\vsize}% {\mdf@freevspace@length=\pagegoal\relax% \advance\mdf@freevspace@length by -\pagetotal\relax% \addtolength\mdf@freevspace@length{\dimexpr-\parskip\relax}\relax% }% } % \end{macrocode} % \end{macro} % % \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*\mdf@advancelength@horizontalmargin@sub[1]{% \advance\mdf@horizontalspaceofbox by -\csname mdf@#1@length\endcsname\relax% } \newlength\mdf@horizontalspaceofbox \newrobustcmd*\mdf@horizontalmargin@equation{% \setlength{\mdf@horizontalspaceofbox}{\mdf@userdefinedwidth@length}% \mdf@dolist{\mdf@advancelength@horizontalmargin@sub}{% leftmargin,outerlinewidth,middlelinewidth,% innerlinewidth,innerleftmargin,innerrightmargin,% innerlinewidth,middlelinewidth,outerlinewidth,% rightmargin}% \notbool{mdf@leftline}{% \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% }{}% \notbool{mdf@rightline}{% \advance\mdf@horizontalspaceofbox by \mdf@innerlinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@middlelinewidth@length\relax% \advance\mdf@horizontalspaceofbox by \mdf@outerlinewidth@length\relax% }{}% \ifdimless{\mdf@horizontalspaceofbox}{3cm}% {\mdf@PackageWarning{You have only a width of 3cm}}{} \hsize=\mdf@horizontalspaceofbox% } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@keeplines@single} % horizontal space in relation of the lines. % \begin{macrocode} \newrobustcmd*\mdf@keeplines@single{% \notbool{mdf@topline}{% \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% \notbool{mdf@bottomline}{% \advance\mdf@verticalmarginwhole@length by -\mdf@innerlinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@middlelinewidth@length% \advance\mdf@verticalmarginwhole@length by -\mdf@outerlinewidth@length% }{}% } % \end{macrocode} % \end{macro} % % % \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*\mdf@advancelength@verticalmarginwhole[1]{% \advance\mdf@verticalmarginwhole@length by \csname mdf@#1@length\endcsname\relax% } \newrobustcmd*\mdf@advancelength@freevspace@sub[1]{% \advance\dimen@ by -\csname mdf@#1@length\endcsname\relax% } \newrobustcmd*\mdf@advancelength@freevspace@add[1]{% \advance\dimen@ by \csname mdf@#1@length\endcsname\relax% } % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@reset} % Reset changes % \begin{macrocode} \protected@edef\mdf@reset{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}% % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@put@frame@standalone} % Output of |mdframed| inside a non breakable environement. % \begin{macrocode} \newrobustcmd*\mdf@put@frame@standalone{\relax% \ifvoid\mdf@splitbox@one\relax \mdf@PackageWarning{The environment is empty\MessageBreak}% \let\mdf@reserved@a\relax% \else %Hier berechnung Box-Inhalt+Rahmen oben und unten \setlength{\mdf@verticalmarginwhole@length}% {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% \mdf@keeplines@single% \def\mdf@reserved@a{\mdf@putbox@single}% \fi \mdf@reserved@a% } % \end{macrocode} % \end{macro} % % \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\mdf@put@frame{\relax% \ifvoid\mdf@splitbox@one\relax \mdf@PackageWarning{The environment is empty\MessageBreak}% \let\mdf@reserved@a\relax% \else \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \mdf@print@space% \mdf@freepagevspace%gives \mdf@freevspace@length \mdf@PackageInfoSpace{\the\mdf@freevspace@length before the beginning of \MessageBreak the environment ending on input line \MessageBreak}% \ifdimless{\mdf@freevspace@length}{2\baselineskip} {\mdf@PackageInfo{Not enough space on this page} \vfill\eject% \def\mdf@reserved@a{\mdf@put@frame}% }{% %Hier berechnung Box-Inhalt+Rahmen oben und unten \setlength{\mdf@verticalmarginwhole@length}% {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@verticalmarginwhole}{% outerlinewidth,middlelinewidth,innerlinewidth,innertopmargin, innerbottommargin,innerlinewidth,middlelinewidth,outerlinewidth}% \mdf@keeplines@single% \ifdimless{\mdf@verticalmarginwhole@length}{\mdf@freevspace@length}% {%passt auf Seite% \begingroup \mdf@@setzref \mdf@putbox@single% \endgroup \let\mdf@reserved@a\relax}% {\def\mdf@reserved@a{\mdf@put@frame@i}}%passt nicht auf Seite }% \fi \mdf@reserved@a% } % \end{macrocode} % \end{macro} % % \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\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% \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}{mdf@put@frame@ii} % Output of the middle and last box. % \begin{macrocode} \def\mdf@put@frame@ii{%Ausgabe der mittleren Box(en) wenn vorhanden \setlength{\mdf@freevspace@length}{\vsize}% \setlength{\dimen@}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \mdf@dolist{\mdf@advancelength@freevspace@add}{%used \dimen@ outerlinewidth,middlelinewidth,innerlinewidth,% innerbottommargin}%%%Addition der Linien unten \ifbool{mdf@bottomline}{}{% \advance\dimen@i by \mdf@innerlinewidth@length% \advance\dimen@i by \mdf@middlelinewidth@length% \advance\dimen@i by \mdf@outerlinewidth@length% \relax}% \ifdimgreater{\dimen@}{\mdf@freevspace@length}% {% \advance\mdf@freevspace@length by -\mdf@splitbottomskip@length\relax% \ifbool{mdf@bottomline}{}{% \advance\dimen@i by -\mdf@innerlinewidth@length% \advance\dimen@i by -\mdf@middlelinewidth@length% \advance\dimen@i by -\mdf@outerlinewidth@length% \relax}% \splitmaxdepth\z@ \splittopskip\mdf@splittopskip@length% \mdf@ignorevbadness% \setbox\mdf@splitbox@two\vsplit\mdf@splitbox@one to \mdf@freevspace@length% \setbox\mdf@splitbox@two\vbox{\unvbox\mdf@splitbox@two}%PRUEFEN!!! \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one}%PRUEFEN!!!! \ifbool{mdf@repeatframetitle}{% \setbox\mdf@splitbox@one\vbox{% \vbox to \mdf@splittopskip@length{\hsize\z@} %\par\unskip\nointerlineskip \unvcopy\mdf@frametitlebox% \mdf@@frametitlerule% \vbox to\dimexpr -\mdf@splittopskip@length+\ht\strutbox+\dp\strutbox +\mdf@innertopmargin@length\relax{\hsize\z@}% \unvbox\mdf@splitbox@one}% }{}% \ifvoid\mdf@splitbox@one\relax% \mdf@PackageWarning{You got a bad break\MessageBreak because the split box is empty\MessageBreak You have to change the settings}% \setbox\mdf@splitbox@one{\unvbox\mdf@splitbox@two}% \def\mdf@reserved@a{\enlargethispage{\baselineskip}\mdf@put@frame@ii}% \else \begingroup \mdf@@setzref \mdf@putbox@middle% \endgroup \hrule \@height\z@ \@width\hsize \vfill\eject \def\mdf@reserved@a{\mdf@put@frame@ii}% \fi }%Hier die Ausgabe der mittleren Box {\ifvoid\mdf@splitbox@one \mdf@PackageWarning{You got a bad break\MessageBreak because the last split box is empty\MessageBreak You have to change the settings}%% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% \fi% \ifdimless{\ht\mdf@splitbox@one}{1sp}{% \mdf@PackageWarning{You got a bad break\MessageBreak because the last split box is empty\MessageBreak You have to change the settings}% %\hb@xt@\z@{\box\mdf@splitbox@one}% \let\mdf@reserved@a\relax% \setbox\mdf@splitbox@one\vbox{\unvbox\mdf@splitbox@one\hrule \@height\z@ \@width\mdfboundingboxwidth}% }{}% \begingroup% \mdf@@setzref \mdf@putbox@second% \hrule \@height\z@ \@width\hsize% \endgroup% \let\mdf@reserved@a\relax% }%Hier kommt die Ausgabe der letzten Box \mdf@reserved@a% } % \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}% \endinput % \end{macrocode} % %\iffalse % \begin{macrocode} % % \end{macrocode} %\fi % %\iffalse % \begin{macrocode} %<*mdframedefault> % \end{macrocode} %\fi % \subsection{The Explanation of md-frame-0.mdf} % \begin{macrocode} %% Style file for mdframed for package option `framemethod=default` %% %% This package may be distributed under the terms of the LaTeX Project %% Public License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.0 or, at your option, any later version. %% %% %%$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % % \end{macrocode} % % \begin{macro}{mdframedOpackagename,mdf@frameOdate@svn} % local settings % \begin{macrocode} \def\mdframedOpackagename{md-frame-0} \def\mdf@frameOdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \ProvidesFile{md-frame-0.mdf}% [\mdf@frameOdate@svn$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $% \mdversion: \mdframedOpackagename] % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@background@default,mdf@linecolor@default,mdf@linecolor@bottom} % short command % \begin{macrocode} \def\mdf@background@default{\color{\mdf@backgroundcolor}} \def\mdf@frametitlebackground@default{\color{\mdf@frametitlebackgroundcolor}} \def\mdf@shadow@default{\color{\mdf@shadowcolor}} \def\mdf@innerlinecolor@default{\color{\mdf@innerlinecolor}} \def\mdf@middlelinecolor@default{\color{\mdf@middlelinecolor}} \def\mdf@outerlinecolor@default{\color{\mdf@outerlinecolor}} \def\mdf@frametitlerulecolor@default{\color{\mdf@frametitlerulecolor}} \let\mdf@linecolor@default\mdf@middlelinecolor@default \def\mdf@@frametitlerule{% \ifbool{mdf@frametitlerule}{% \vbox 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}{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\mdf@frame@background@single{% \ifbool{mdf@shadow}{% \rlap{\smash{\mdf@shadow@default% \rule[\dimexpr-\mdfboundingboxdepth -\mdf@shadowsize@length \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% {\dimexpr\mdfboundingboxtotalwidth +\mdf@shadowsize@length \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}\relax}% {\dimexpr\mdfboundingboxtotalheight +\mdf@shadowsize@length \ifbool{mdf@bottomline}{+\mdf@middlelinewidth@length}{}\relax}% }% }}{}% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% \def\mdf@frame@frametitlebackground@single{% \rlap{\mdf@frametitlebackground@default% \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% {\mdfboundingboxtotalwidth}% {\mdfframetitleboxtotalheight}% }% }% \def\mdf@frame@topline@single{% \rlap{\mdf@linecolor@default% \ifbool{mdf@topline}{% \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth% +\mdf@innerbottommargin@length+\mdf@innertopmargin@length\relax]% {\mdfboundingboxtotalwidth}% {\mdf@middlelinewidth@length}}% {}% }% }% \def\mdf@frame@bottomline@single{% \rlap{\ifbool{mdf@leftline}{\hspace*{-\mdf@middlelinewidth@length}}{}\mdf@linecolor@default% \ifbool{mdf@bottomline}{% \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% {\dimexpr\mdfboundingboxtotalwidth \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}% \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}\relax}% {\mdf@middlelinewidth@length}}% {}% }% }% \def\mdf@frame@leftline@single{% \llap{\mdf@linecolor@default% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\dimexpr\mdfboundingboxtotalheight% \ifbool{mdf@topline}{+\mdf@middlelinewidth@length}{}\relax}% }% }% \def\mdf@frame@rightline@single{% \rlap{\mdf@linecolor@default% \hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[\dimexpr-\mdfboundingboxdepth% \relax]% {\mdf@middlelinewidth@length}% {\dimexpr\mdfboundingboxtotalheight% +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% }% }% \def\mdf@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% \setlength{\mdfboundingboxwidth}% {\wd\mdf@splitbox@one}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% \setlength{\mdfboundingboxheight}% {\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \setlength{\mdfboundingboxdepth}% {\dimexpr\dp\mdf@splitbox@one+\mdf@innerbottommargin@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innertopmargin@length% +\mdf@innerbottommargin@length\relax}% \setlength{\mdftotallinewidth}{% \dimexpr\mdf@innerlinewidth@length+\mdf@middlelinewidth@length% +\mdf@outerlinewidth@length}% \noindent% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% +\ifbool{mdf@leftline}% {\mdf@middlelinewidth@length}{\z@}% +\ifbool{mdf@rightline}% {\mdf@middlelinewidth@length}{\z@}\relax}% \mdf@makebox@in[\@tempdima]{% \null% \ifbool{mdf@leftline}{% \hspace*{\mdftotallinewidth}% \mdf@frame@leftline@single% }{}% \mdf@frame@topline@single% \mdf@frame@background@single% \mdf@frame@bottomline@single% \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@single}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% \mdf@frame@rightline@single% }{}% {\box\mdf@splitbox@one}% }% \mdf@makeboxalign@right% }% \fi% } % \end{macrocode} % \end{macro} % % % \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\mdf@frame@background@first{% \ifbool{mdf@shadow}{% \rlap{\smash{\mdf@shadow@default% \rule[\dimexpr-\mdfboundingboxdepth -\mdf@shadowsize@length\relax]% {\dimexpr\mdfboundingboxtotalwidth +\mdf@shadowsize@length \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}\relax}% {\dimexpr\mdfboundingboxtotalheight +\mdf@shadowsize@length\relax}% }% }}{}% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% \def\mdf@frame@frametitlebackground@first{% \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}% {\dimexpr\mdfboundingboxtotalheight% +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% }% }% \def\mdf@frame@topline@first{% \rlap{\mdf@linecolor@default% \rule[\dimexpr\mdfboundingboxheight-\mdfboundingboxdepth+% \mdf@splitbottomskip@length+\mdf@innertopmargin@length\relax]% {\mdfboundingboxtotalwidth}% {\mdf@middlelinewidth@length}% }% } \def\mdf@frame@rightline@first{% \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\dimexpr\mdfboundingboxtotalheight% +\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}\relax}% }% }% \def\mdf@putbox@first{%%%% Ausgabe der Teilbox 1 \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out[\linewidth]{% \mdf@makeboxalign@left% \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@two}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \setlength{\mdfboundingboxdepth}% {\dimexpr\dp\mdf@splitbox@two+\mdf@splitbottomskip@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innertopmargin@length% +\mdf@splitbottomskip@length\relax}% \setlength{\@tempdima}% {\dimexpr\mdfboundingboxtotalwidth% +\ifbool{mdf@leftline}{\mdf@middlelinewidth@length}{\z@}% +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% \relax}% \mdf@makebox@in[\@tempdima]{% \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% \mdf@frame@leftline@first}{}% \ifbool{mdf@topline}{% \mdf@frame@topline@first}{}% \mdf@frame@background@first% \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@first}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% \mdf@frame@rightline@first}{}% {\box\mdf@splitbox@two}% }% \mdf@makeboxalign@right% }% \fi% } % \end{macrocode} % \end{macro} % % % \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\mdf@frame@background@second{% \ifbool{mdf@shadow}{% \rlap{\smash{\mdf@shadow@default% \rule[\dimexpr-\mdfboundingboxdepth -\mdf@shadowsize@length \ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}\relax]% {\dimexpr\mdfboundingboxtotalwidth +\mdf@shadowsize@length \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}\relax}% {\dimexpr\mdfboundingboxtotalheight +\mdf@shadowsize@length\relax}% }% }}{}% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% \def\mdf@frame@frametitlebackground@second{% \ifdimless{\mdfframetitleboxtotalheight}{\z@}% {}% {\rlap{\mdf@frametitlebackground@default% \rule[\dimexpr-\mdfboundingboxdepth+\mdfboundingboxtotalheight-\mdfframetitleboxtotalheight\relax]% {\mdfboundingboxtotalwidth}% {\mdfframetitleboxtotalheight}% }% }% }% \def\mdf@frame@leftline@second{% \llap{\mdf@linecolor@default% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\dimexpr\mdfboundingboxtotalheight}% }% }% \def\mdf@frame@bottomline@second{% \rlap{\ifbool{mdf@leftline}{\hspace*{-\mdf@middlelinewidth@length}}{}\mdf@linecolor@default% \rule[\dimexpr-\mdfboundingboxdepth-\mdf@middlelinewidth@length\relax]% {\dimexpr\mdfboundingboxtotalwidth \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{} \ifbool{mdf@leftline}{+\mdf@middlelinewidth@length}{}\relax}% {\mdf@middlelinewidth@length}% }% }% \def\mdf@frame@rightline@second{% \rlap{\mdf@linecolor@default\hspace*{\mdfboundingboxwidth}% \hspace*{\mdf@innerrightmargin@length}% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\mdfboundingboxtotalheight}% }% }% \def\mdf@putbox@second{% \ifvoid\mdf@splitbox@one% \else \mdf@makebox@out{% \mdf@makeboxalign@left% \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@one}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \setlength{\mdfboundingboxdepth}% {\dimexpr\dp\mdf@splitbox@one+\mdf@innerbottommargin@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@innerbottommargin@length\relax}% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% +\ifbool{mdf@leftline}{\mdf@middlelinewidth@length}{\z@}% +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% \relax}% \mdf@makebox@in[\@tempdima]{% \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% \mdf@frame@leftline@second}{}% \mdf@frame@background@second% \ifbool{mdf@bottomline}{% \mdf@frame@bottomline@second}{}% \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@second}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% \mdf@frame@rightline@second}{}% {\box\mdf@splitbox@one}% }% \mdf@makeboxalign@right% }% \fi% }% % \end{macrocode} % \end{macro} % % % \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\mdf@frame@leftline@middle{% \llap{\mdf@linecolor@default% \rule[-\mdfboundingboxdepth]% {\mdf@middlelinewidth@length}% {\mdfboundingboxtotalheight}% }% }% \def\mdf@frame@background@middle{% \ifbool{mdf@shadow}{% \rlap{\smash{\mdf@shadow@default% \rule[\dimexpr-\mdfboundingboxdepth -\mdf@shadowsize@length\relax]% {\dimexpr\mdfboundingboxtotalwidth +\mdf@shadowsize@length \ifbool{mdf@rightline}{+\mdf@middlelinewidth@length}{}\relax}% {\dimexpr\mdfboundingboxtotalheight\relax}% }% }}{}% \rlap{\mdf@background@default% \rule[-\mdfboundingboxdepth]% {\mdfboundingboxtotalwidth}% {\mdfboundingboxtotalheight}% }% }% \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\mdf@putbox@middle{% \ifvoid\mdf@splitbox@two% \else \mdf@makebox@out{% \mdf@makeboxalign@left% \setlength{\mdfboundingboxwidth}{\wd\mdf@splitbox@two}% \setlength{\mdfboundingboxtotalwidth}% {\dimexpr\mdfboundingboxwidth+\mdf@innerleftmargin@length% +\mdf@innerrightmargin@length\relax}% \setlength{\mdfboundingboxheight}{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \setlength{\mdfboundingboxdepth}% {\dimexpr\dp\mdf@splitbox@two+\mdf@splitbottomskip@length\relax}% \setlength{\mdfboundingboxtotalheight}% {\dimexpr\mdfboundingboxheight+\mdf@splitbottomskip@length\relax}% \setlength{\@tempdima}{\dimexpr\mdfboundingboxtotalwidth% +\ifbool{mdf@leftline}{\mdf@middlelinewidth@length}{\z@}% +\ifbool{mdf@rightline}{\mdf@middlelinewidth@length}{\z@}% \relax}% \mdf@makebox@in[\@tempdima]{% \null% \ifbool{mdf@leftline}{% \hspace*{\mdf@middlelinewidth@length}% \mdf@frame@leftline@middle}{}% \mdf@frame@background@middle% \ifdefempty{\mdf@frametitle}{}{\mdf@frame@frametitlebackground@middle}% \hspace*{\mdf@innerleftmargin@length}% \ifbool{mdf@rightline}{% \mdf@frame@rightline@middle}{}% {\box\mdf@splitbox@two}% }% \mdf@makeboxalign@right% } \fi% } % \end{macrocode} % \end{macro} % % \begin{macrocode} \endinput % \end{macrocode} % % \iffalse % % \fi % % %\iffalse % \begin{macrocode} %<*mdframetikz> % \end{macrocode} %\fi % \subsection{The Explanation of md-frame-1.mdf} % \begin{macrocode} %% Style file for mdframed for package option `framemethod=default` %% %% This package may be distributed under the terms of the LaTeX Project %% Public License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.0 or, at your option, any later version. %% %% %%$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % % \end{macrocode} % \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\mdf@frameIdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \ProvidesFile{md-frame-1.mdf}% [\mdf@frameIdate@svn$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % \mdversion: \mdframedIpackagename] % % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@tikz@settings} % Define settings for tikz % \begin{macrocode} %Allgemeine Einstellungen fuer tikz \def\mdf@tikz@settings{% % \tikzset{mdfbox/.style={anchor=south west,% inner sep=0pt,% outer sep=0pt,% \mdf@fontcolor,}}% anchor der Ausgabebox ist unten links \tikzset{mdfcorners/.style={rounded corners=\mdf@roundcorner@length}}% \tikzset{mdfbackground/.style={fill=\mdf@backgroundcolor,% draw=\mdf@backgroundcolor}}% \tikzset{mdfframetitlebackground/.style={fill=\mdf@frametitlebackgroundcolor,% draw=none,% rounded corners={max(\mdf@roundcorner@length% -\mdf@innerlinewidth@length% -.5\mdf@middlelinewidth@length,0)}}}% % \tikzset{mdfouterline/.style={}}% % nur wenn outerlinewidth>0 wird aussere Linie gezeichnet \ifdimgreater{\mdf@outerlinewidth@length}{\z@} {\tikzset{mdfouterline/.append style={% draw=\mdf@outerlinecolor,% line width=2\mdf@outerlinewidth@length+\mdf@middlelinewidth@length}}}{}% % \tikzset{mdfinnerline/.style={}}% % nur wenn innerlinewidth>0 wird innere Linie gezeichnet \ifdimgreater{\mdf@innerlinewidth@length}{\z@} {\tikzset{mdfinnerline/.append style={% draw=\mdf@innerlinecolor,% line width=2\mdf@innerlinewidth@length+\mdf@middlelinewidth@length}}}{}% % \tikzset{mdfshadow/.style={drop shadow={% shadow xshift=\mdf@shadowsize@length-2pt, shadow yshift=-\mdf@shadowsize@length+2pt, fill=\mdf@shadowcolor, every shadow }}}% % \mdf@tikzset@local \tikzset{mdfmiddleline/.style={}}% % nur wenn middlelinewidth>0 wird mittlere Linie gezeichnet \ifdimgreater{\mdf@middlelinewidth@length}{\z@} {\tikzset{mdfmiddleline/.append style={% preaction={draw=\mdf@middlelinecolor,% line width=\mdf@middlelinewidth@length},% line width=\mdf@middlelinewidth@length,% tikzsetting}}% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@tikzbox@tfl,mdf@tikzbox@otl} % Befehle fuer Ausgabe von Rahmen und Hintergrund % \begin{macrocode} \newrobustcmd*\mdf@tikzbox@tfl[1]{%three or four borders \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% \begin{scope}[mdfcorners]% \clip[preaction=mdfouterline]% [postaction=mdfbackground]% [postaction=mdfinnerline]#1;% \end{scope}% \path[mdfmiddleline,mdfcorners]#1; }% \newrobustcmd*\mdf@tikzbox@otl[2]{%one or two borders \clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);% \begin{scope} \path[mdfouterline,mdfcorners]#1;% \clip[postaction=mdfbackground]#2;% \path[mdfinnerline,mdfcorners]#1;% \end{scope}% \path[mdfmiddleline,mdfcorners]#1;}% % \end{macrocode} % \end{macro} % % % % \begin{macro}{mdf@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: % O ist die untere linke Ecke der Mitte der middleline % P ist die obere rechte Ecke der Mitte der middleline % A ist der Punkt fuer den anchor (d.h. die untere linke Ecke) der Ausgabebox % \def\mdf@putbox@single{% \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% \mdf@tikz@settings% % \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@innertopmargin@length\relax% \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% \ifbool{mdf@topline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@bottomline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{tikzpicture}[remember picture]% \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% \pgfmathsetlengthmacro\mdf@Ay{+\mdf@innerbottommargin@length}% \pgfmathsetlengthmacro\mdf@Ox{+0pt}% \pgfmathsetlengthmacro\mdf@Oy{+0pt}% \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline}% {% \pgfmathsetlengthmacro\mdf@Ax% {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@rightline}% {% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@bottomline}% {% \pgfmathsetlengthmacro\mdf@Ay% {\mdf@Ay+\mdf@outerlinewidth@length+\mdf@middlelinewidth@length% +\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Oy% {\mdf@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@topline}% {% \pgfmathsetlengthmacro\mdf@Py% {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % \coordinate(O)at(\mdf@Ox,\mdf@Oy);% \coordinate(P)at(\mdf@Px,\mdf@Py);% % \ifbool{mdf@shadow} {\path[mdfshadow,mdfcorners](O) rectangle (P);}{}% % \begin{scope}[use as bounding box] \mdf@test@ltrb{\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)--cycle}}{}% % \mdf@test@ltb{\mdf@tikzbox@tfl{(P|-O)--(O)--(O|-P)--(P)}}{}% \mdf@test@trb{\mdf@tikzbox@tfl{(O|-P)--(P)--(P|-O)--(O)}}{}% \mdf@test@ltr{\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}{}% \mdf@test@lrb{\mdf@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(P)}}{}% % \mdf@test@lb{\mdf@tikzbox@otl{(P|-O)--(O)--(O|-P)}% {(P)--(P|-O)[mdfcorners]--(O)--(O|-P)}% }{}% \mdf@test@rb{\mdf@tikzbox@otl{(P)--(P|-O)--(O)}% {(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}% }{}% \mdf@test@tr{\mdf@tikzbox@otl{(O-|P)--(P)--(P-|O)}% {(O)--(O|-P)[mdfcorners]--(P)--(P|-O)}% }{}% \mdf@test@lt{\mdf@tikzbox@otl{(O)--(O|-P)--(P)}% {(P|-O)--(O)[mdfcorners]--(O|-P)--(P)}% }{}% \mdf@test@lr{\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}% {(O)rectangle(P)}% }{}% \mdf@test@tb{\mdf@tikzbox@otl{(O)--(O-|P)(O|-P)--(P)}% {(O)rectangle(P)}% }{}% % \mdf@test@l{\mdf@tikzbox@otl{(O)--(O|-P)}% {(O)rectangle(P)}% }{}% \mdf@test@r{\mdf@tikzbox@otl{(O-|P)--(P)}% {(O)rectangle(P)}% }{}% \mdf@test@t{\mdf@tikzbox@otl{(O|-P)--(P)}% {(O)rectangle(P)}% }{}% \mdf@test@b{\mdf@tikzbox@otl{(O)--(O-|P)}% {(O)rectangle(P)}% }{}% % \mdf@test@noline{\path[mdfbackground,mdfcorners](O)rectangle(P);}{}% % %Frametitlebackground \drawbrackgroundframetitle@single % \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz \end{tikzpicture}% }% \mdf@makeboxalign@right% }% \fi }% \def\drawbrackgroundframetitle@single{% \ifdefempty{\mdf@frametitle}{}{% \drawbrackgroundframetitle@@single% }% }% \def\drawbrackgroundframetitle@@single{% \begin{scope}%background frame title \ifbool{mdf@leftline}{ \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} }{}% \ifbool{mdf@rightline}{% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} }{}% \ifbool{mdf@topline}{% \pgfmathsetlengthmacro\mdf@Py% {\mdf@Py-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} }{}% \pgfmathsetlengthmacro\mdf@Fy {\mdf@Py-\mdfframetitleboxtotalheight} \path[mdfframetitlebackground] (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); \end{scope} } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@putbox@first} % Output of the first breakable contents. % \begin{macrocode} \def\drawbrackgroundframetitle@first{% \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% \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}{% \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}{}% % %\ifdimequal{\pagegoal}{\maxdimen}{\enlargethispage{\baselineskip}}{}% ??? \ifdimgreater{\pagegoal-\maxdimen}{0pt}{}{\enlargethispage{\baselineskip}}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{tikzpicture}[remember picture] % \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\mdf@Ax% {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@rightline}{% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@topline}{% \pgfmathsetlengthmacro\mdf@Py% {\mdf@Py-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % \coordinate(O)at(\mdf@Ox,\mdf@Oy);% \coordinate(P)at(\mdf@Px,\mdf@Py);% % \ifbool{mdf@shadow} {\path[mdfshadow] (O) -- (O|-P) to[mdfcorners] (P) -- (P|-O) -- (O);}{}% % \begin{scope}[use as bounding box] \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@ltr}}% {\mdf@tikzbox@tfl{(O)--(O|-P)--(P)--(P|-O)}}% {}% \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 {\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 {\mdf@test@lrb} or test {\mdf@test@lr}}% {\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}% {}% \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@t}}% {\mdf@tikzbox@otl{(O|-P)--(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 {\mdf@test@rb} or test {\mdf@test@r}}% {\mdf@tikzbox@otl{(O-|P)--(P)}{(O)rectangle(P)}}% {}% \mdf@test@b{\path[mdfbackground](O)rectangle(P);}{}% % \mdf@test@noline{\path[mdfbackground,mdfcorners](O)--(O|-P)--(P)--(P|-O);}{}% % \drawbrackgroundframetitle@first % \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz% \end{tikzpicture}% }% \mdf@makeboxalign@right% }% \fi }% % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@putbox@middle} % Output of the middle breakable contents. % \begin{macrocode} \def\drawbrackgroundframetitle@middle{% \ifdefempty{\mdf@frametitle}{}{% \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% \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}{% \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% % \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{tikzpicture}[remember picture] \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\mdf@Ax% {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@rightline}% {% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% % \coordinate(O)at(\mdf@Ox,\mdf@Oy);% \coordinate(P)at(\mdf@Px,\mdf@Py);% % \ifbool{mdf@shadow} {\path[mdfshadow](O) rectangle (P);}{}% % \begin{scope}[use as bounding box] \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% {\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}{}% \ifboolexpr{bool {mdf@leftline} and not (bool {mdf@rightline})}% {\mdf@tikzbox@otl{(O)--(O|-P)}{(O)rectangle(P)}}{}% \ifboolexpr{not (bool {mdf@leftline}) and bool {mdf@rightline}}% {\mdf@tikzbox@otl{(P)--(P|-O)}{(O)rectangle(P)}}{}% \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% {\path[mdfbackground](O)rectangle(P);}{}% % \drawbrackgroundframetitle@middle % \node[mdfbox]at(\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@two};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz \end{tikzpicture}% }% \mdf@makeboxalign@right% }% \fi }% % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@putbox@second} % Output of the last breakable contents. % \begin{macrocode} \def\drawbrackgroundframetitle@second{% \ifdefempty{\mdf@frametitle}{}{% \ifdimless{\mdfframetitleboxtotalheight}{\z@} {}{% \drawbrackgroundframetitle@@second% }% }% }% % \def\drawbrackgroundframetitle@@second{% \begin{scope}%background frame title \ifbool{mdf@leftline}{ \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length} }{}% \ifbool{mdf@rightline}{% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length} }{}% \pgfmathsetlengthmacro\mdf@Fy {\mdf@Py-\mdfframetitleboxtotalheight} \path[mdfframetitlebackground,rounded corners=\z@] (\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)% --(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy); \end{scope} }% \def\mdf@putbox@second{% \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% \mdf@tikz@settings% % \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}{}% % \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{tikzpicture}[remember picture] \pgfmathsetlengthmacro\mdf@Ax{+\mdf@innerleftmargin@length}% \pgfmathsetlengthmacro\mdf@Ay{+\mdf@innerbottommargin@length}% \pgfmathsetlengthmacro\mdf@Ox{+0pt}% \pgfmathsetlengthmacro\mdf@Oy{+0pt}% \pgfmathsetlengthmacro\mdf@Px{+\mdfboundingboxwidth}% \pgfmathsetlengthmacro\mdf@Py{+\mdfboundingboxheight}% \ifbool{mdf@leftline}% {% \pgfmathsetlengthmacro\mdf@Ax% {\mdf@Ax+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Ox% {\mdf@Ox+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@rightline}% {% \pgfmathsetlengthmacro\mdf@Px% {\mdf@Px-\mdf@outerlinewidth@length-0.5\mdf@middlelinewidth@length}% }{}% \ifbool{mdf@bottomline}% {% \pgfmathsetlengthmacro\mdf@Ay% {\mdf@Ay+\mdf@outerlinewidth@length+% \mdf@middlelinewidth@length+\mdf@innerlinewidth@length}% \pgfmathsetlengthmacro\mdf@Oy% {\mdf@Oy+\mdf@outerlinewidth@length+0.5\mdf@middlelinewidth@length}% }{}% % \coordinate(O)at(\mdf@Ox,\mdf@Oy);% \coordinate(P)at(\mdf@Px,\mdf@Py);% % \ifbool{mdf@shadow} {\path[mdfshadow] (O|-P) to[mdfcorners] (O) to[mdfcorners] (P|-O) -- (P) -- (O|-P);}{}% % \begin{scope}[use as bounding box] \ifboolexpr{test {\mdf@test@ltrb} or test {\mdf@test@lrb}}% {\mdf@tikzbox@tfl{(P-|O)--(O)--(O-|P)--(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 {\mdf@test@trb} or test {\mdf@test@rb}}% {\mdf@tikzbox@otl{(P)--(P|-O)--(O)}{(O|-P)--(P)[mdfcorners]--(P|-O)--(O)}}% {}% \ifboolexpr{test {\mdf@test@ltr} or test {\mdf@test@lr}}% {\mdf@tikzbox@otl{(O)--(O|-P)(P)--(P|-O)}{(O)rectangle(P)}}% {}% \ifboolexpr{test {\mdf@test@tb} or test {\mdf@test@b}}% {\mdf@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 {\mdf@test@tr} or test {\mdf@test@r}}% {\mdf@tikzbox@otl{(O-|P)--(P)}{(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);}{}% % \drawbrackgroundframetitle@second % \node[mdfbox] at (\mdf@Ax,\mdf@Ay){\box\mdf@splitbox@one};% Ausgabebox einfuegen \end{scope} %HIER KOMMT EIN WEITERES MAKRO \mdfcreateextratikz \end{tikzpicture}% }% \mdf@makeboxalign@right% }% \fi }% % \end{macrocode} % \end{macro} % % \begin{macrocode} \endinput % \end{macrocode} % \iffalse % % \fi % % %\iffalse % \begin{macrocode} %<*mdframepstricks> % \end{macrocode} %\fi % \subsection{The Explanation of md-frame-2.mdf / md-frame-3.mdf} % \begin{macrocode} %% Style file for mdframed for package option `framemethod=default` %% %% This package may be distributed under the terms of the LaTeX Project %% Public License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.0 or, at your option, any later version. %% %% %%$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % % \end{macrocode} % % \begin{macro}{mdframedIIpackagename,mdf@frameIIdate@svn} % local settings % \begin{macrocode} \def\mdframedIIpackagename{md-frame-2} \def\mdf@frameIIdate@svn$#1: #2 #3 #4-#5-#6 #7 #8${#4/#5/#6\space } \ProvidesFile{md-frame-2.mdf}% [\mdf@frameIIdate@svn$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $ % \mdversion: \mdframedIIpackagename] % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@ptlength@to@pscode,ptTps} % Command to calculate a latex length to postscript % \begin{macrocode} \def\mdf@ptlength@to@pscode#1{\pst@number{#1} \pst@number\psxunit div } \def\mdf@ptlength@to@pscode@length#1{\pst@number{\csname mdf@#1@length\endcsname} \pst@number\psxunit div } \let\ptTps\mdf@ptlength@to@pscode\relax \let\ptTpsL\mdf@ptlength@to@pscode@length\relax % \end{macrocode} % \end{macro} % % \begin{macro}{mdfbackgroundstyle,mdflinestyle,mdfframetitlerule,mdfframetitlebackground} % background and line settings for pstricks % \begin{macrocode} \def\mdfpstricks@settings{%expand by \addtopsstyle \newpsstyle{mdfbackgroundstyle}% {linecolor=\mdf@backgroundcolor,fillstyle=solid,% fillcolor=\mdf@backgroundcolor,linestyle=none,% ,dimen=middle,% }% % \newpsstyle{mdfframetitlebackgroundstyle}{% linecolor=\mdf@frametitlebackgroundcolor, fillcolor=\mdf@frametitlebackgroundcolor, fillstyle=solid,linestyle=none, linearc=\ifdimgreater{\mdf@roundcorner@length% -\mdf@innerlinewidth@length% -.5\mdf@middlelinewidth@length} {\z@}{\dimexpr\mdf@roundcorner@length% -\mdf@innerlinewidth@length% -.5\mdf@middlelinewidth@length}{\z@}, } % \newpsstyle{mdfouterlinestyle}{linestyle=none}% \ifdimgreater{\mdf@outerlinewidth@length}{\z@} {\newpsstyle{mdfouterlinestyle}{% linecolor=\mdf@outerlinecolor,% linewidth=\dimexpr2\mdf@outerlinewidth@length+\mdf@middlelinewidth@length\relax, dimen=middle, }}{}% % \newpsstyle{mdfinnerlinestyle}{linestyle=none}% \ifdimgreater{\mdf@innerlinewidth@length}{\z@}% {\newpsstyle{mdfinnerlinestyle}{% linecolor=\mdf@innerlinecolor,% linewidth=\dimexpr2\mdf@innerlinewidth@length+\mdf@middlelinewidth@length\relax, dimen=middle, }}{}% % \newpsstyle{mdfmiddlelinestyle}{linestyle=none}% \newpsstyle{mdfshadow}{shadow=true,shadowcolor=\mdf@shadowcolor,shadowsize=\mdf@shadowsize@length}% \ifdimgreater{\mdf@middlelinewidth@length}{\z@}% {\newpsstyle{mdfmiddlelinestyle}{% linewidth=\mdf@middlelinewidth@length,% linecolor=\mdf@middlelinecolor,dimen=middle }}{}% \mdfpstricks@appendsettings }% % \newrobustcmd*\mdf@pstricksbox@fl[2]{%four lines \psframe[style=mdfouterlinestyle](#1)(#2)%aussen=3mm \psframe[style=mdfbackgroundstyle](#1)(#2)%Hintergrund \psclip{\psframe[style=mdfmiddlelinestyle](#1)(#2)} \psframe[style=mdfinnerlinestyle](#1)(#2)%innere=3mm \endpsclip \psframe[style=mdfmiddlelinestyle](#1)(#2)%mittlere=2mm }% \newrobustcmd*\mdf@pstricksbox@tl[1]{%three lines \psline[style=mdfouterlinestyle]#1%aussen=3mm \psline[style=mdfbackgroundstyle]#1%Hintergrund \psclip{\psline[style=mdfmiddlelinestyle]#1} \psline[style=mdfinnerlinestyle]#1%innere=3mm \endpsclip \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm }% \newrobustcmd*\mdf@pstricksbox@tcl[2]{%two combined lines %%#1 background comple %%#2 line path \psline[style=mdfouterlinestyle]#2%aussen=3mm \psline[style=mdfbackgroundstyle]#2%Hintergrund \psclip{\pscustom[linestyle=none]{ \psline[style=mdfmiddlelinestyle]#2 \psline[linestyle=none,linearc=0pt]#1} } \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund \psline[style=mdfinnerlinestyle]#2%innere=3mm \endpsclip \psline[style=mdfmiddlelinestyle]#2%mittlere=2mm }% \newrobustcmd*\mdf@pstricksbox@tncl[2]{%two not combined lines \begingroup \psset{linearc=0pt} \psline[style=mdfouterlinestyle](mdf@O)#1%aussen=3mm \psline[style=mdfouterlinestyle](mdf@P)#2%aussen=3mm \psclip{ \pscustom[linestyle=none]{% \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm \psline[linestyle=none](mdf@O)#2 \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm \psline[linestyle=none](mdf@P)#1 }% }% \psframe[style=mdfbackgroundstyle,linearc=0pt](mdf@O)(mdf@P)%Hintergrund \psline[style=mdfinnerlinestyle](mdf@O)#1%innere=3mm \psline[style=mdfinnerlinestyle](mdf@P)#2%innere=3mm \endpsclip \psline[style=mdfmiddlelinestyle](mdf@O)#1%mittlere=2mm \psline[style=mdfmiddlelinestyle](mdf@P)#2%mittlere=2mm \endgroup }% \newrobustcmd*\mdf@pstricksbox@ol[1]{%one line \begingroup \psset{linearc=0pt} \psline[style=mdfouterlinestyle]#1%aussen=3mm \psline[style=mdfbackgroundstyle]#1%Hintergrund \psclip{\pscustom[linestyle=none]{ \psline[style=mdfmiddlelinestyle]#1 \psframe[linestyle=none,fillstyle=none,dimen=inner](mdf@O)(mdf@P) }} \psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P) \psline[style=mdfinnerlinestyle]#1%innere=3mm \endpsclip \psline[style=mdfmiddlelinestyle]#1%mittlere=2mm \endgroup% }% % \newpsstyle{mdfframetitlerule}{% linecolor=\mdf@frametitlerulecolor,% fillcolor=\mdf@frametitlerulecolor,% fillstyle=solid,dimen=outer,% } % % \end{macrocode} % \end{macro} % % % \begin{macro}{mdf@put@frametitlerule} % frametitlerule with pstricks % \begin{macrocode} \def\mdf@@frametitlerule{% \ifbool{mdf@frametitlerule}{% \vbox{\hsize0pt \par\unskip\vskip\mdf@frametitlebelowskip@length \noindent\rlap{% \begingroup% \begin{pspicture}(0,0)(0,\mdf@frametitlerulewidth@length) \psframe[style=mdfframetitlerule](!\ptTpsL{innerleftmargin} neg 0)% (! \ptTpsL{innerrightmargin} \ptTps{\mdfframetitleboxwidth} add \ptTpsL{frametitlerulewidth}) \end{pspicture} \endgroup} }% }{} \par\unskip\vskip\mdf@innertopmargin@length% }% % % \begin{macro}{mdf@putbox@single} % Single output % \begin{macrocode} % Info zu den verwendeten Punkten: % O ist die untere linke Ecke der Mitte der middleline % P ist die obere rechte Ecke der Mitte der middleline % A ist der Punkt fuer den anchor (d.h. die untere linke Ecke) der Ausgabebox \def\mdf@putbox@single{% \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@rightline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% % \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% \ifbool{mdf@topline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@bottomline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% % \setlength\mdftotallinewidth{\dimexpr\mdf@innerlinewidth@length% +\mdf@middlelinewidth@length +\mdf@outerlinewidth@length\relax}% \psset{unit=1truecm}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) \mdfpstricks@settings% \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% \expandafter\psset\expandafter{\mdf@psset@local}% \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length){mdf@A} \pnode(0,0){mdf@O} \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} \ifbool{mdf@leftline}% {% \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) +(\mdf@middlelinewidth@length,0) +(\mdf@innerlinewidth@length,0)}{mdf@A}% \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% }{}% \ifbool{mdf@rightline}% {% \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% }{}% \ifbool{mdf@bottomline}% {% \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) +(0,\mdf@middlelinewidth@length) +(0,\mdf@innerlinewidth@length)}{mdf@A}% \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) +0.5(0,\mdf@middlelinewidth@length)}{mdf@O}% }{}% \ifbool{mdf@topline}% {% \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} }{}% \ifbool{mdf@shadow} {\psframe[style=mdfshadow](mdf@O)(mdf@P)}{} % \psclip{% %Four lines \mdf@test@ltrb{\mdf@pstricksbox@fl{mdf@O}{mdf@P}}{} %three lines \mdf@test@ltb{\mdf@pstricksbox@tl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} \mdf@test@trb{\mdf@pstricksbox@tl{(mdf@O)(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}}{} \mdf@test@ltr{\mdf@pstricksbox@tl{(mdf@O)(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{}% \mdf@test@lrb{\mdf@pstricksbox@tl{(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{}% %two lines combinded \mdf@test@lb{\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)}% {(mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)}}{} \mdf@test@rb{\mdf@pstricksbox@tcl{(mdf@P)(mdf@O|mdf@P)(mdf@O)}% {(mdf@O)(mdf@P|mdf@O)(mdf@P)}}{} \mdf@test@tr{\mdf@pstricksbox@tcl{(mdf@P|mdf@O)(mdf@O)(mdf@O|mdf@P)}% {(mdf@O|mdf@P)(mdf@P)(mdf@P|mdf@O)}}{} \mdf@test@lt{\mdf@pstricksbox@tcl{(mdf@O)(mdf@P|mdf@O)(mdf@P)}% {(mdf@O)(mdf@O|mdf@P)(mdf@P)}}{} %two lines not combinded combinded \mdf@test@lr{\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)} }{} \mdf@test@tb{\mdf@pstricksbox@tncl{(mdf@P|mdf@O)}{(mdf@O|mdf@P)} }{} %single line \mdf@test@l{\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{} \mdf@test@r{\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{} \mdf@test@t{\mdf@pstricksbox@ol{(mdf@P)(mdf@O|mdf@P)}}{} \mdf@test@b{\mdf@pstricksbox@ol{(mdf@O)(mdf@P|mdf@O)}}{} %no line \mdf@test@noline{\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{} % } %Frametitlebackground \drawbrackgroundframetitle@single %output% \rput[bl](mdf@A){\box\mdf@splitbox@one} % \psdot(mdf@A)\uput[90](mdf@A){mdf at A} % \psdot(mdf@P)\uput[90](mdf@P){mdf at P} % \psdot(mdf@O)\uput[90](mdf@O){mdf at O} % % \endpsclip \end{pspicture}% }% \mdf@makeboxalign@right% }% \fi }% \def\drawbrackgroundframetitle@single{% \ifdefempty{\mdf@frametitle}{}{% \drawbrackgroundframetitle@@single% }% }% \def\drawbrackgroundframetitle@@single{% \begingroup% \ifbool{mdf@leftline}{% \nodexn{(mdf@O)+(\mdf@innerlinewidth@length,0) +0.5(\mdf@middlelinewidth@length,0)}{mdf@O}% }{}% \ifbool{mdf@rightline}{% \nodexn{(mdf@P)-(\mdf@innerlinewidth@length,0) -0.5(\mdf@middlelinewidth@length,0)}{mdf@P}% }{}% \ifbool{mdf@topline}{% \nodexn{(mdf@P)-(0,\mdf@innerlinewidth@length) -0.5(0,\mdf@middlelinewidth@length)}{mdf@P}% }{}% \nodexn{(mdf@P)-(0,\mdfframetitleboxtotalheight)}{mdf@F}% \psline[style=mdfframetitlebackgroundstyle](mdf@O|mdf@F)(mdf@O|mdf@P) (mdf@P)(mdf@P|mdf@F)% \endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{mdf@putbox@first} % First output % \begin{macrocode} \def\mdf@putbox@first{% \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% %\ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@rightline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \advance\mdfboundingboxheight by \mdf@innertopmargin@length\relax% \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% \ifbool{mdf@topline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \psset{linearc=\mdf@roundcorner@length,cornersize=absolute}% \expandafter\psset\expandafter{\mdf@psset@local}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \psset{unit=1truecm}% \ifdimgreater{\mdfboundingboxheight}{\vsize} {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} \mdfpstricks@settings% \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% \expandafter\psset\expandafter{\mdf@psset@local}% \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} \pnode(0,0){mdf@O} \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} \ifbool{mdf@leftline}% {% \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) +(\mdf@middlelinewidth@length,0) +(\mdf@innerlinewidth@length,0)}{mdf@A} \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} }{}% \ifbool{mdf@rightline}% {% \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} }{}% \ifbool{mdf@topline}% {% \nodexn{(mdf@P)-(0,\mdf@outerlinewidth@length) -0.5(0,\mdf@middlelinewidth@length)}{mdf@P} }{}% \ifbool{mdf@shadow} {\pscustom[style=mdfshadow,linestyle=none]{% \psline[linejoin=2,linecap=1,](mdf@P|mdf@O)(mdf@P)(mdf@O|mdf@P)% \psline[linejoin=2,linecap=1,linearc=\z@](mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O) \closedshadow } }{} % \psclip{ %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}{mdf@putbox@middle} % Middle output % \begin{macrocode} \def\mdf@putbox@middle{% \ifvoid\mdf@splitbox@two \else% \mdf@makebox@out{% \mdf@makeboxalign@left% % \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@two}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@rightline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@two+\dp\mdf@splitbox@two\relax}% \advance\mdfboundingboxheight by \mdf@splitbottomskip@length\relax% \psset{unit=1truecm}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \ifdimgreater{\mdfboundingboxheight}{\vsize} {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\vsize)} {\begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight)} \mdfpstricks@settings% \psset{linearc=0pt,cornersize=absolut,}% \expandafter\psset\expandafter{\mdf@psset@local}% %%%% \pnode(\mdf@innerleftmargin@length,\mdf@splitbottomskip@length){mdf@A} \pnode(0,0){mdf@O} \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} \ifbool{mdf@leftline}% {% \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) +(\mdf@middlelinewidth@length,0) +(\mdf@innerlinewidth@length,0)}{mdf@A} \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} }{}% \ifbool{mdf@rightline}% {% \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} }{}% %% %% \ifbool{mdf@shadow} {\psframe[style=mdfshadow](mdf@O)(mdf@P)}{} \ifboolexpr{bool {mdf@leftline} and bool {mdf@rightline}}% {\mdf@pstricksbox@tncl{(mdf@O|mdf@P)}{(mdf@P|mdf@O)}}{}% \ifboolexpr{bool {mdf@leftline} and not (bool {mdf@rightline})}% {\mdf@pstricksbox@ol{(mdf@O)(mdf@O|mdf@P)}}{}% \ifboolexpr{not (bool {mdf@leftline}) and bool {mdf@rightline}}% {\mdf@pstricksbox@ol{(mdf@P)(mdf@P|mdf@O)}}{}% \ifboolexpr{not (bool {mdf@leftline}) and not (bool {mdf@rightline})}% {\psframe[style=mdfbackgroundstyle](mdf@O)(mdf@P)}{}% %Frametitlebackground \drawbrackgroundframetitle@middle %output% \rput[bl](mdf@A){\box\mdf@splitbox@two} % \psdot(mdf@A)\uput[90](mdf@A){mdf at A} % \psdot(mdf@P)\uput[90](mdf@P){mdf at P} % \psdot(mdf@O)\uput[90](mdf@O){mdf at O} \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}{mdf@putbox@second} % Last output % \begin{macrocode} \def\mdf@putbox@second{ \ifvoid\mdf@splitbox@one \else% \mdf@makebox@out{% \mdf@makeboxalign@left% % \ifbool{mdf@leftline}{\hspace*{\mdf@middlelinewidth@length}}{}% \setlength\mdfboundingboxwidth{\wd\mdf@splitbox@one}% \advance\mdfboundingboxwidth by \mdf@innerleftmargin@length\relax% \advance\mdfboundingboxwidth by \mdf@innerrightmargin@length\relax% \ifbool{mdf@leftline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \ifbool{mdf@rightline}{% \advance\mdfboundingboxwidth by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxwidth by \mdf@outerlinewidth@length\relax}{}% \setlength\mdfboundingboxheight{\dimexpr\ht\mdf@splitbox@one+\dp\mdf@splitbox@one\relax}% \advance\mdfboundingboxheight by \mdf@innerbottommargin@length\relax% \ifbool{mdf@bottomline}{% \advance\mdfboundingboxheight by \mdf@innerlinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@middlelinewidth@length\relax% \advance\mdfboundingboxheight by \mdf@outerlinewidth@length\relax}{}% \psset{unit=1truecm}% \mdf@makebox@in[\mdfboundingboxwidth]{% \null% \begin{pspicture}(0,0)(\mdfboundingboxwidth,\mdfboundingboxheight) \mdfpstricks@settings% \psset{linearc=\mdf@roundcorner@length,cornersize=absolut,}% \expandafter\psset\expandafter{\mdf@psset@local}% \pnode(\mdf@innerleftmargin@length,\mdf@innerbottommargin@length){mdf@A} \pnode(0,0){mdf@O} \pnode(\mdfboundingboxwidth,\mdfboundingboxheight){mdf@P} \ifbool{mdf@leftline}% {% \nodexn{(mdf@A)+(\mdf@outerlinewidth@length,0) +(\mdf@middlelinewidth@length,0) +(\mdf@innerlinewidth@length,0)}{mdf@A} \nodexn{(mdf@O)+(\mdf@outerlinewidth@length,0) +0.5(\mdf@middlelinewidth@length,0)}{mdf@O} }{}% \ifbool{mdf@rightline}% {% \nodexn{(mdf@P)-(\mdf@outerlinewidth@length,0) -0.5(\mdf@middlelinewidth@length,0)}{mdf@P} }{}% \ifbool{mdf@bottomline}% {% \nodexn{(mdf@A)+(0,\mdf@outerlinewidth@length) +(0,\mdf@middlelinewidth@length) +(0,\mdf@innerlinewidth@length)}{mdf@A} \nodexn{(mdf@O)+(0,\mdf@outerlinewidth@length) +0.5(0,\mdf@middlelinewidth@length)}{mdf@O} }{}% %% \ifbool{mdf@shadow} {\pscustom[style=mdfshadow,linestyle=none]{% \psline[linejoin=2,linecap=1,](mdf@O|mdf@P)(mdf@O)(mdf@P|mdf@O)(mdf@P)% \psline[linejoin=2,linecap=1,linearc=\z@](mdf@O|mdf@P)(mdf@P) \closedshadow } }{} %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} % % \begin{macrocode} \endinput %eof % \end{macrocode} % \iffalse % % \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 344 2012-02-04 23:50:02Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,english,11pt]{ltxmdf} \ltxmdfsetifoot $Id: mdframed.dtx 344 2012-02-04 23:50:02Z 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}} \date{\mdfdateID$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $} \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} % % \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 344 2012-02-04 23:50:02Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,english,11pt]{ltxmdf} \ltxmdfsetifoot $Id: mdframed.dtx 344 2012-02-04 23:50:02Z 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}} \date{\mdfdateID$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $} \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} % % \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 344 2012-02-04 23:50:02Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,english,11pt]{ltxmdf} \ltxmdfsetifoot$Id: mdframed.dtx 344 2012-02-04 23:50:02Z 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}} \date{\mdfdateID$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $} \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} \Examplesec{Shadow frame} \begin{LTXexample} \newmdenv[shadow=true, shadowsize=11pt, linewidth=8pt, frametitlerule=true, roundcorner=10pt, ]{myshadowbox} \begin{myshadowbox}[frametitle={Inhomogeneous linear}] \ExampleText \end{myshadowbox} \end{LTXexample} \end{document} \endinput % \end{macrocode} % %\iffalse % \begin{macrocode} % % \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 344 2012-02-04 23:50:02Z marco $ \setcounter{errorcontextlines}{999} \documentclass[parskip=false,english,11pt,ltxlipsum]{ltxmdf} \ltxmdfsetifoot $Id: mdframed.dtx 344 2012-02-04 23:50:02Z 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}} \date{\mdfdateID$Id: mdframed.dtx 344 2012-02-04 23:50:02Z marco $} \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}[]% \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} % % \end{macrocode} %\fi % % % % \Finale % \endinput