summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-18 18:05:20 +0000
committerKarl Berry <karl@freefriends.org>2010-04-18 18:05:20 +0000
commit37f1831f5559f99501eb0123e22795ae5300650b (patch)
treee6553a1abced92a0d91df26466c16f087ab60c6c /Master/texmf-dist
parentb26ee2030e017af00dee74ea37ca13189caa593c (diff)
new latex package mdframed 0.3 (16apr10)
git-svn-id: svn://tug.org/texlive/trunk@17904 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/mdframed/README6
-rw-r--r--Master/texmf-dist/doc/latex/mdframed/mdframed-doc.pdfbin0 -> 526516 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mdframed/mdframed-doc.tex233
-rw-r--r--Master/texmf-dist/tex/latex/mdframed/mdframed.sty661
4 files changed, 900 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/mdframed/README b/Master/texmf-dist/doc/latex/mdframed/README
new file mode 100644
index 00000000000..95ffcb58d34
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mdframed/README
@@ -0,0 +1,6 @@
+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
+License type: lppl \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.pdf b/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.pdf
new file mode 100644
index 00000000000..99208c55a69
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.tex b/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.tex
new file mode 100644
index 00000000000..515a577c2dd
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/mdframed/mdframed-doc.tex
@@ -0,0 +1,233 @@
+%% Documentation of the package mdframed.sty
+\def\mdversion{version 0.3}
+\documentclass[american,11pt]{article}
+\usepackage{geometry}
+\geometry{left=3cm,right=3cm,top=2cm,bottom=2cm}
+\usepackage{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\newif\ifmdframedcompile
+\mdframedcompiletrue %% use lucida als default
+\IfFileExists{lucidabr}{%
+ \usepackage{textcomp}
+ \ifmdframedcompile
+ \usepackage[de,T1,altbullet]{lucidabr}
+ \else
+ \usepackage[T1,altbullet]{lucidabr}
+ \fi
+ }{%
+ \usepackage[scaled]{libertine}
+}
+\usepackage{xcolor}
+\usepackage[babel]{microtype}
+\usepackage{array,tabularx}
+%%Load the the package itselfs
+\usepackage{mdframed}
+\usepackage{amsmath,amsthm}
+\newtheorem{mdtheorem}{Theorem}[section]
+\newenvironment{theorem}{%
+ \begin{mdframed}[linewidth=2,margin=40,backgroundcolor=yellow,linecolor=blue]%
+ \begin{mdtheorem}%
+ }{%
+ \end{mdtheorem}%
+ \end{mdframed}%
+}
+\definecolor{titleblue}{rgb}{0,0,0.9}
+
+\usepackage{listings}
+\lstnewenvironment{mdexample}[1][]
+ {\lstset{%
+ basicstyle=\small,
+ xleftmargin=20pt,
+ xrightmargin=20pt,
+ frame=single,
+ rulecolor=\color{titleblue},
+ framesep=5pt,
+ framerule=1pt,
+ language=[LaTeX]TeX,#1,
+ columns=fixed, fontadjust=true,basewidth=0.5em,breakatwhitespace=true
+ }}
+% morekeywords={\usepackage,\end,\begin,\lipsum,\documentclass,\newtheorem,\newenvironment,\section,\label\mbox{ }}}}
+ {}
+
+\usepackage{hyperref}
+\hypersetup{%
+ colorlinks=true,
+ linkcolor=titleblue,
+ urlcolor=titleblue,
+ pdfauthor=Marco Daniel,
+ pdftitle=Documentation of mdframed,
+}
+\usepackage{xspace}
+\usepackage{multicol}
+\columnseprule0.4pt
+\makeatletter
+\begingroup
+ \text@command\relax
+ \global\let\xspace@check@icr\check@icr
+\endgroup
+\xspaceaddexceptions{\xspace@check@icr}
+
+\renewcommand\tableofcontents{%
+ \begin{multicols}{2}[\centering\textbf{\sffamily\Large\contentsname}]
+ \@starttoc{toc}
+ \end{multicols}
+}
+\makeatother
+\newcommand*\mdoption[1]{\textsf{\bfseries\color{titleblue}#1}}
+\newcommand*\mdname{\textsf{mdframed}\xspace}
+\newcommand*\mdpack[1]{\textsf{#1}\xspace}
+\newcommand*\mdsetting[1]{\textsf{#1}\xspace}
+\newcommand*\mdcommand[1]{\texttt{\textbackslash #1}\xspace}
+
+\begin{document}
+ \vspace*{\baselineskip}
+
+ \begin{center}
+ \color{titleblue}
+ \Large\bfseries \sffamily The \mdname package\footnote{Extending the package \texttt{framed.sty}.}
+
+ \vspace*{0.5\baselineskip}
+ \normalfont\large\normalcolor auto-split frame environment
+
+\vspace*{.5\baselineskip}
+ \href{mailto:marco.daniel@mada-nada.de}{Marco Daniel}\footnote{With thanks to Heiko Oberdiek, Rolf Niepraschk and Herbert Voss.} \qquad \mdversion\ \qquad \today
+ \end{center}
+\begin{abstract}
+Working with the command \mdcommand{fbox} or \mdcommand{fcolorbox}, one has to handle page breaks by hand,
+meaning that you have to split up the \mdcommand{fbox} into two. The present package defines the environment \mdname which automatically deals with page
+breaks, whence the name \glqq breakable\grqq.
+
+By using \mdcommand{newenvironment} the user may choose between several individual designs.
+\end{abstract}
+
+\tableofcontents
+
+\section{Motivation}
+Many users wish to (further) emphasize lemmata, definitions, proofs etc.. The package mdframed allows to
+create environments with breakable frames. I think an example is the best way to demonstrate the properties.
+
+The following example gives an idea of how to use mdframed. (For the theorem environment we use the package \mdpack{amsthm}.)
+\begin{mdexample}
+\usepackage{mdframed,amsthm}
+\newtheorem{mdtheorem}{Theorem}[section]
+\newenvironment{theorem}{%
+ \begin{mdframed}%
+ [linewidth=2,margin=40,backgroundcolor=yellow,linecolor=blue]%
+ \begin{mdtheorem}}{\end{mdtheorem}\end{mdframed}}
+...
+\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.
+ \begin{equation}
+ a^2+b^2=c^2
+ \end{equation}
+\end{theorem}
+\end{mdexample}
+\begin{theorem}[Pythagorean theorem]
+ In any right triangle, the area of the square whose side is the hypotenuse
+ (the side opposite the right angle) is equal to the sum of the areas of the
+ squares whose sides are the two legs (the two sides that meet at a right angle).
+ \begin{equation}
+ a^2+b^2=c^2
+ \end{equation}
+\end{theorem}
+
+\section{Syntax}
+Load the package as usual:
+\begin{mdexample}
+ \usepackage[<GLOBAL OPTIONS>]{mdframed}
+\end{mdexample}
+
+The package defines only one environment with the following syntax
+\begin{mdexample}
+ \begin{mdframed}[<LOCAL OPTIONS>]
+ <CONTENT>
+ \end{mdframed}
+\end{mdexample}
+
+\section{Options}
+The package allows to set global and local options which are explained below.
+\begin{center}
+\renewcommand{\arraystretch}{1.5}
+\begin{tabularx}{\linewidth}{@{}lXl@{}}
+ \mdoption{linecolor}=<COLOR> & Sets the color of the line around the environment to <COLOR>.
+ & default=\mdsetting{black} \\
+ \mdoption{backgroundcolor}=<COLOR> & Sets the color of the background of the environment to <COLOR>.
+ & default=\mdsetting{white} \\
+ \mdoption{fontcolor}=<COLOR> & Sets the color of the contents of the environment to <COLOR>.
+ & default=\mdsetting{black} \\
+ \mdoption{margin}=<LENGTH> & Sets the length of the margin text frame of the environment.
+ The basic unit of the length is pt. So it is possible to set
+ length to 6 which is equal to 6pt.
+ & default=\mdsetting{2pt} \\
+ \mdoption{linewidth}=<LENGTH>& Sets the width of the line around the environment.
+ The basic unit of the length is pt. So it is possible to set
+ length to 6 which is equal to 6pt.
+ & default=\mdsetting{20pt} \\
+ \mdoption{skipabove}=<LENGTH>& Sets an additional skip above the frame. This is
+ \bfseries only a global option.
+ & default=\mdsetting{0pt} \\
+ \mdoption{skipbelow}=<LENGTH>& Sets an additional skip below the frame. This is
+ \bfseries only a global option.
+ & default=\mdsetting{0pt} \\
+ \mdoption{xcolor}=<VALUE(S)>& By setting this key the package \mdpack{xcolor} will
+ be loaded with the given value(s). Without any value \mbox{\mdname} loads
+ the package \mdpack{color} without any options. This is
+ \bfseries only a global option.
+ & default=\mdsetting{none} \\
+\end{tabularx}
+\end{center}
+\clearpage
+\section{Example}
+
+\begin{mdexample}
+ \documentclass[10pt]{article}
+ \usepackage[linewidth=10,%
+ margin=40,%
+ backgroundcolor=yellow,
+ linecolor=blue,
+ skipbelow=0,
+ skipabove=0]{mdframed}
+ \usepackage{amsmath,amsthm}
+ \newtheorem{mdlemma}{Lemma}[section]
+ \newenvironment{lemma}{%
+ \begin{mdframed}[linewidth=2,margin=40,%
+ backgroundcolor=red,linecolor=black]%
+ \begin{mdlemma}%
+ }{%
+ \end{mdlemma}%
+ \end{mdframed}%
+ }
+ \usepackage{lipsum}
+ \usepackage{hyperref}
+ \begin{document}
+ \section{foo}
+ \lipsum[1]
+ \begin{mdframed}
+ \lipsum[5]
+ \end{mdframed}
+
+ \lipsum[1]
+
+ \begin{lemma}\label{lem:testA}\mbox{ }
+ \begin{itemize}
+ \item Some Text
+ \item $x^2+y^2=1$
+ \item \lipsum[1]
+ \end{itemize}
+ \end{lemma}
+ \end{document}\end{mdexample}
+
+\section{Known problems}
+ In this section I will collect known problems. In case you encouter any further problems, please
+ drop me an email, \href{mailto:marco.daniel@mada-nada.de}{marco.daniel@mada-nada.de}.
+
+ Do you have any ideas / wishes on further extensions to this package? Please let me know!
+
+\begin{enumerate}
+ \item So far it is not possible to extend a frame to more than two pages
+ \item So far there is no implementation that allows to set the left or right margin
+\end{enumerate}
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/mdframed/mdframed.sty b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty
new file mode 100644
index 00000000000..3d3da715f4b
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/mdframed/mdframed.sty
@@ -0,0 +1,661 @@
+%%==================================================%%
+%%========It based on the idea of framed.sty========%%
+%%==================================================%%
+%%===== Currently the packge 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___| %%
+%% %%
+%%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%%
+
+%% Allgemeine Angaben
+\def\mdframedpackagename{mdframed}
+\def\md@PackageWarning#1{\PackageWarning{\mdframedpackagename}{#1}}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mdframed}[2010/04/16 v0.3: mdframed]
+
+%%==================================================%%
+%%=============== Benoetigte Pakete ================%%
+%%==================================================%%
+\IfFileExists{kvoptions.sty}{%
+ \RequirePackage{kvoptions}
+ \SetupKeyvalOptions{family=mdf,prefix=mdf@}
+ }{%
+ \md@PackageWarning{The package kvoptions.sty does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+\IfFileExists{picture.sty}{%
+ \RequirePackage[etex]{picture}
+ }{%
+ \md@PackageWarning{The package picture does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+\IfFileExists{calc.sty}{%
+ \RequirePackage{calc}
+ }{%
+ \md@PackageWarning{The package calc does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+\IfFileExists{color.sty}{%
+ \RequirePackage{color}
+ }{%
+ \md@PackageWarning{The package color does not exist\MessageBreak
+ but it is requiered by \mdframedpackagename}%
+ }
+
+%%==================================================%%
+%%=============== Globale Optionen ================%%
+%%==================================================%%
+\DeclareStringOption[2pt]{linewidth}
+\DeclareStringOption[black]{linecolor}
+\DeclareStringOption[white]{backgroundcolor}
+\DeclareStringOption[black]{fontcolor}
+\DeclareStringOption[20pt]{margin}
+\DeclareStringOption[\z@]{skipabove}
+\DeclareStringOption[\z@]{skipbelow}
+\DeclareStringOption[none]{xcolor}
+
+\ProcessKeyvalOptions*
+
+%%==================================================%%
+%%========Sicherstellen der key-value-Syntax========%%
+%%================ HIER DER GLOABEL ================%%
+%%==================================================%%
+\AtBeginDocument{
+ \@ifpackageloaded{xcolor}{%
+ \let\mdf@xcolor\@empty %ignoriere die Eingabe der Optionen
+ }{%
+ \def\@tempa{none}
+ \ifx\mdf@xcolor\@tempa
+ \else
+ \PassOptionsToPackage{\mdf@xcolor}{xcolor}
+ \RequirePackage{xcolor}
+ \fi
+ }
+}
+
+
+\newcommand*\mdf@get@linewidth[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@linewidth{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@linewidth
+}
+\picture@redefine\mdf@get@linewidth{&1}
+\begingroup
+ \mdf@get@linewidth{\mdf@linewidth}
+ \global\edef\mdf@linewidth{\the\@tempdima}
+\endgroup
+
+
+
+\newcommand*\mdf@get@margin[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@margin{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@margin
+}
+\picture@redefine\mdf@get@margin{&1}
+\begingroup
+ \mdf@get@margin{\mdf@margin}
+ \global\edef\mdf@margin{\the\@tempdima}
+\endgroup
+
+
+\newcommand*\mdf@get@skipabove[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@skipabove{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@skipabove
+}
+\picture@redefine\mdf@get@skipabove{&1}
+\begingroup
+ \mdf@get@skipabove{\mdf@skipabove}
+ \global\edef\mdf@skipabove{\the\@tempdima}
+\endgroup
+
+
+\newcommand*\mdf@get@skipbelow[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\mdf@GET@skipbelow{\endgroup\@tempdima=\the\@tempdima}%
+ \mdf@GET@skipbelow
+}
+\picture@redefine\mdf@get@skipbelow{&1}
+\begingroup
+ \mdf@get@skipbelow{\mdf@skipbelow}
+ \global\edef\mdf@skipbelow{\the\@tempdima}
+\endgroup
+
+%%==================================================%%
+%%========Sicherstellen der key-value-Syntax========%%
+%%================ HIER DIE LOKALEN ================%%
+%%==================================================%%
+
+\define@key{mdframed}{linecolor}[\mdf@linecolor]{%
+ \def\md@@linecolor{\color{#1}}
+}
+
+
+\define@key{mdframed}{backgroundcolor}[\mdf@backgroundcolor]{%
+ \mdbackgroundcolor{#1}
+}
+
+\define@key{mdframed}{fontcolor}[\mdf@fontcolor]{%
+ \mdfontcolor{#1}
+ \def\md@@fontcolor{\color{#1}}
+}
+
+\newcommand*\md@linewidth{}
+\define@key{mdframed}{linewidth}[2pt]{%
+ \md@get@linewidth{#1}
+ \edef\md@linewidth{\the\@tempdima}
+ \md@framed@linewidth\md@linewidth
+}
+\newcommand*\md@get@linewidth[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\md@GET@linewidth{\endgroup\@tempdima=\the\@tempdima}%
+ \md@GET@linewidth
+}
+\picture@redefine\md@get@linewidth{&1}
+
+
+
+\newcommand*\md@margin{}
+\define@key{mdframed}{margin}[10pt]{%
+ \md@get@margin{#1}
+ \edef\md@margin{\the\@tempdima}
+ \md@framed@margin\md@margin
+}
+\newcommand*\md@get@margin[1]{%
+ \begingroup
+ \unitlength=1pt\relax
+ \@tempdima#1\unitlength
+ \edef\md@GET@margin{\endgroup\@tempdima=\the\@tempdima}%
+ \md@GET@margin
+}
+\picture@redefine\md@get@margin{&1}
+
+
+
+
+%%==================================================%%
+%%==Deklaration diverser Eingabe und Hilfsparameter=%%
+%%==================================================%%
+
+\newskip\md@framed@margin \md@framed@margin\mdf@margin %% Abstand |Links<INHALTE>Rechts|
+\newskip\md@framed@linewidth \md@framed@linewidth\mdf@linewidth %% Dicke der Linie
+
+
+\newcommand\mdframedabovespace[1]{\def\md@space@above@frame{#1}}
+\mdframedabovespace{\baselineskip} %% Abstand vor der Frame-Umgebung
+
+
+\newskip\md@temp@skip@a \md@temp@skip@a\z@ %% Hilfslaenge
+\newlength{\fp@putboxa@length@md}
+\setlength{\fp@putboxa@length@md}{\z@} %% Hilfslaenge
+
+\newif\ifmd@content@split \md@content@splitfalse %% Ifabfrage, die prueft, ob der Inhalt von mdframed geteilt wird
+ %% default - wird nicht geteilt
+
+\newif\ifmd@box@empty \md@box@emptyfalse %% Ifabfrage, die prueft, ob der Inhalt einer Box leer ist
+ %% default - ist nicht leer
+
+\newcommand\mdbackgroundcolor[1]{\def\md@backgroundcolor{#1}} %% User-Command - Hintergrundfarbe
+
+\newcommand\mdlinecolor[1]{\def\md@linecolor{#1}} %% User-Command - Linienfarbe
+\def\md@@linecolor{\color{\mdf@linecolor}} %% Abkuerzungskommando
+
+\newcommand\mdfontcolor[1]{\def\md@fontcolor{#1}}
+\def\md@@fontcolor{\color{\mdf@fontcolor}}
+
+\mdbackgroundcolor{\mdf@backgroundcolor}
+\mdlinecolor{\mdf@linecolor}
+%%==================================================%%
+%%===Globale Umgebung -- noch keine Modifikation ===%%
+%%==================================================%%
+
+\newenvironment{mdframed}[1][]% default-Umgebung
+ {\setkeys{mdframed}{#1}%
+ \vskip\mdf@skipabove
+ \mdframed@global@env}%
+ {\endmdframed@global@env\vskip\mdf@skipbelow}
+
+
+
+
+%%==================================================%%
+%%=================== Kommentare ===================%%
+%%==================================================%%
+
+\chardef\md@arrayparboxrestore=\catcode`\| % for debug
+\catcode`\|=\catcode`\% % (debug: insert space after backslash)
+%% Kommentare werden im Code mit | gekennzeichnet
+
+
+%%==================================================%%
+%%================= Breite der BOX =================%%
+%%==================================================%%
+\def\md@margin@equation{% %% Berechnung der moeglichen Breite fuer den Rahmeninhalt
+ \advance\hsize by -\md@framed@margin %% hsize minus Randvorgabe
+ \advance\hsize by -2\md@framed@linewidth %% hsize minus Linienbreite
+ \advance\hsize by -\width\md@arrayparboxrestore}%% Beruecksichtigung das Auszaehlung bzw. list-Umgebung enthalten
+
+%%==================================================%%
+%%===Bestimmung des Platzbedarfes fuer den Rahmen===%%
+%%==================================================%%
+\newskip\md@temp@frame@hsize
+\newskip\md@temp@frame@vsize
+\def\md@sizeofframe{\begingroup
+ \setbox\z@\vbox{%
+ \vskip-5in \hbox{\hskip-5in
+ \fboxsep2\baselineskip\fboxrule\md@framed@linewidth\fbox%
+ {\hbox{\vrule \@height 4.7in \@depth.3in \@width 5in}}}%
+ \vskip\z@skip}%
+ \global\md@temp@frame@hsize\wd\z@ \global\md@temp@frame@vsize\ht\z@
+ \endgroup
+}
+
+%%==================================================%%
+%%============Start der globalen Umgebung===========%%
+%%==================================================%%
+\def\mdframed@global@env{\par
+ %Bestimmung zusatzlichen Freiraumes gemaess Vorgabe des Rahmens
+ \let\width\md@temp@frame@hsize \let\height\md@temp@frame@vsize
+ % Einfuegen von Strafpunkten und Abstaenden
+ \begingroup
+ \skip@\lastskip
+ \if@nobreak
+ \else
+ \penalty9999 % updates \page parameters <-pruefen
+ \ifdim\pagefilstretch=\z@ %%% pagefilstretch ist ein internes Register fuer den
+ %%% Seitenumbruch. Es entaehlt den akkumulierten (gespeicherten) fil-Anteil
+ %%% auf der aktuellen Seite
+ \ifdim\pagefillstretch=\z@ %%% pagefillstretch ist ein internes Register fuer den
+ %%% Seitenumbruch. Es entaehlt den akkumulierten (gespeicherten) fill-Anteil
+ %%% auf der aktuellen Seite
+ %%% nicht unendlich dehnbar, so hier foerdern eines Seitenumbruches
+ \edef\@tempa{\the\skip@}%
+ \edef\@tempb{\the\z@skip}%
+ \ifx\@tempa\@tempb %%% ???????
+ \penalty-30
+ \else
+ \vskip-\skip@
+ \penalty-30
+ \vskip\skip@
+ \fi
+ \fi
+ \fi
+ \penalty\z@
+ % Give a stretchy breakpoint that will always be taken in preference
+ % to the \penalty 9999 used to update page parameters. The cube root
+ % of 10000/100 indicates a multiplier of 0.21545, but the maximum
+ % calculated badness is really 8192, not 10000, so the multiplier
+ % is 0.2301.
+ \advance\skip@ \z@ plus-.5\baselineskip
+ \advance\skip@ \z@ plus-.231\height
+ \advance\skip@ \z@ plus-.231\skip@
+ \advance\skip@ \z@ plus-.231\topsep
+ \vskip-\skip@ \penalty 1800 \vskip\skip@
+ \fi
+ \addvspace{\topsep}%
+ \endgroup
+ % clear out pending page break
+ \nobreak \vskip 2\baselineskip \vskip\height %%%\@M=10000
+ \penalty9999 \vskip -2\baselineskip \vskip-\height
+ \penalty9999 % updates \pagetotal
+ \md@adjheight
+ \setbox\@tempboxa\vbox\bgroup
+ \begingroup %%% zweites begingroup noetig, dass fontcolor gesetzt werden kann
+ \md@@fontcolor %%% Setzen der Schriftfarbe
+ \md@margin@equation
+ \textwidth\hsize \columnwidth\hsize
+}
+
+\def\endmdframed@global@env{\par
+ \kern\z@ %%%\z@=0
+ \hrule\@width\hsize\@height\z@
+ \penalty-100 % put depth into height
+ \endgroup
+ \egroup
+ \begingroup
+ \md@put@frame
+ \endgroup
+}
+
+
+
+%%==================================================%%
+%%===========Ausgaberoutine -> Berechnung===========%%
+%%==================================================%%
+
+%% \md@put@frame nimmt den Inhalt der \@tempboxa und packt alles oder nur einen Teil
+%% auf die Seite mit dem Rahmen.
+%% Es ist rekursiv, solange alles von der \@tempboxa aufgebraucht ist (\@tempboxa muss die Tiefe 0 haben.)
+%% Erste Iteration: Versuche alles in einen Rahmen zu bekommen. Falls es nicht passt,
+%% splitte es für die erste Rahmenumgebung
+%% Spaetere Iteration: Versuche alles in den letzten Rahmen zu bekommen. Falls es nicht passt,
+%% splitte es erneut. (Versuchsstadium -- Da bisher nur Anfang und Ende enthalten)
+
+\def\md@put@frame{\relax
+ \ifdim\pagegoal=\maxdimen \pagegoal\vsize \fi %%%% \pagegoal aktuelle Seitenhöhe für den Seitenumbruch
+ %%%% Der Wert wird mit \vsize initialisiert
+ %%%% \pagegoal - \pagetotal ist dann der noch freie Raum auf einer Seite
+ %%%%
+ \ifinner %Rekursion-sind in der Box %%%% testet auf internal mode: Dieser ist im internal vertical mode,
+ %%%% also im Innern einer \vbox, oder im restricted horizontal mode,
+ %%%% also im Innern einer \hbox, gesetzt.
+%% \md@putbox@second %%%% Rahmen um den zweiten Teil der Box "noch zu bearbeiten"
+%% \md@afterframe %%%% siehe Anweisung
+ \else %Noch keinen Teil der Box gesetzt.
+ \dimen@\pagegoal
+ \advance\dimen@-\pagetotal %%% \dimen@ hat jetzt den noch freien Platz auf der Seite gespeichert
+ \advance\dimen@-\topskip
+ \ifdim\dimen@<2\baselineskip %%% Ist freier Platz < 2 Zeilenabstaenden, zu wenig Platz
+ \clearpage %%% Beginne neue Seite
+ \md@put@frame % %%% Rufe \md@put@frame erneut auf
+ \else %%% Es ist akzeptabler Platz auf der Seite
+% \begingroup %%%
+% \advance\dimen@0.1\pageshrink %%% \pageshrink ist ein internes Register fuer den Seitenumbruch. Es ent-
+ %%% haelt den akkumulierten Schrumpfanteil auf der aktuellen Seite;
+ %%% das heisst die Laenge, um die der Leerraum auf der aktuellen Seite
+ %%% bei Bedarf noch zusammengeschoben werden kann;
+ %%% Somit ist hier der maximale Seitenplatz ermittelt
+ \expandafter%%% ????
+% \endgroup
+ \ifdim\dimen@>\ht\@tempboxa %%% Pruefe, ob Box noch auf Seite passt
+ \ifmd@content@split %%% Pruefe ob \@tempboxa gesplittet wurde
+ \md@putbox@second %%% Wurde gesplittet- nehme zweiten Teil der Umrandung
+ \else %%%
+ \md@putbox@single %%% Box wurde nicht gesplitter - einfacher Rahmen
+ \fi%
+ \md@afterframe %%% siehe Anweisung
+ \else %%%Box muss gesplittet werden
+ \setbox\@tempboxa\vbox{ %%% Simuliere den Rahmen und die Flexibilitaet der Seite
+ %%% \pagestretch ist ein internes Register fuer den Seitenumbruch. Es ent-
+ %%% haelt den akkumulierten Zuwachsanteil auf der aktuellen Seite;
+ %%% das heisst die Laenge, um die der Leerraum auf der aktuellen Seite
+ %%% bei Bedarf noch auseinander gezogen werden kann;
+ \vskip \z@ \@plus0.2\pagestretch \@minus.3\pageshrink
+ \kern137sp\kern-137sp\penalty-30 %%% ????
+ \unvbox\@tempboxa} %%%
+ \edef\md@resto@set{\boxmaxdepth\the\boxmaxdepth %%% \boxmaxdepth ist die maximale Tiefe (depth) einer \vbox,
+ %%% die diese annehmen darf. Dieser Wert ist mit \maxdimen,
+ %%% das heisst 16383,99999 pt, vorbelegt. Damit duerffen Boxen
+ %%% beliebige Unterlaengen (‘depth’) besitzen.
+ \splittopskip\the\splittopskip}% %%% \splittopskip ist der Leerraum,
+ %%% der automatisch zu Beginn einer abgesplitteten Box gesetzt wird.
+ \boxmaxdepth\z@ \splittopskip\z@ %%%
+ %%% Hier wird die \@tempboxa gesplittet
+ \setbox\tw@\vsplit\@tempboxa to 1\dimen@ %%% \tw@ enthaelt oberen Teil der \@tempboxa mit der Groesse \dimen@
+ \ifdim\ht\@tempboxa=\z@
+ \md@box@emptytrue
+ \fi
+| \toks99\expandafter{\splitfirstmark}% %%% \splitfirstmark internes Register, welches den mittels
+ %%% \mark gesetzten Text ausgibt, der bei der letzten \vsplit-Operation
+ %%% gefunden wurde. Dies ist der erste \mark-Text im abgesplitteten Text
+
+| \toks98\expandafter{\splitbotmark} %%% splitbotmark internes Register, welches den mittels \mark gesetzten
+ %%% Text ausgibt, der bei der letzten \vsplit-Operation gefunden wurde.
+ %%% Dies ist der letzte \mark-Text im abgesplitteten Text
+ \setbox\tw@\vbox{\unvbox\tw@} %%% Natuerliche Groesse der ersten Teilbox erhalten
+ % If the split-to size > (\vsize-\topskip), then set box to full size
+ %%% \topskip Ist der Mindestabstand, den die Grundlinie der ersten Zeile (Box) einer jeden Seite vom Seitenanfang haben soll.
+ \begingroup
+ \advance\dimen@\topskip %%% Addiere zum noch freien Platz auf der Seite topskip
+ \expandafter\endgroup %%% ????
+ \ifdim\dimen@>\pagegoal %%% Ist \dimen@ groesser der Seitenhoehe
+ \dimen@ii\pagegoal %%% \dimen@ii wird zur Seitenhoehe
+ \advance\dimen@ii -\topskip %%% \dimen@ii wird zur Seitenhoehe Minus
+ \advance\dimen@ii \md@space@above@frame %%% \dimen@ii bekommt zusaetzlich den gewuenschten Oberen Abstand
+ \else %%% \dimen@ ist kleiner als die aktuelle Seitenhoehe
+ %%% Es ist ausreichend Platz auf der Seite
+ \advance\dimen@.9\pageshrink %%% siehe oben -> \dimen@ wird vergroessert
+ \ifdim\ht\tw@>\dimen@ %%% Ist die Hoehe der abgesplitteten Box groesser als \dimen@
+ \dimen@ii=\dimen@
+ \else %%% abgesplittete Box ist kleiner
+ \dimen@ii\ht\tw@ %%% \dimen@ -> setze \dimen@ii auf aktuelle Boxgroesse
+ \fi
+ \fi
+%% % Re-box contents to desired size \dimen@ii
+%% \advance\dimen@ii -\md@frh
+ \setbox\tw@\vbox to\dimen@ii % %%% Setze die abgesplittete Box auf \dimen@ii
+ \bgroup
+ \vskip -\z@ \@plus-\pagestretch \@minus-.8\pageshrink %%% Entferne den simulierte Rahmen und Seitenflexibilitaet
+ \unvbox\tw@ \unpenalty\unpenalty %%% \unpenalty entfernt einen vorangehenden \penalty
+ %%% in der Arbeitsliste, falls ein solcher vorhanden ist
+ \ifdim\lastkern=-137sp %%% \lastkern liefert, falls das letzte Element eine \kern-Operation
+ %%% war, dieses aus. Das Element bleibt aber erhalten.
+ %%% Komplette Box geht auf naechste Seite
+ % need work here???
+ \egroup %%%Moegliches egroup
+ \md@resto@set
+ \clearpage %%% ??? \eject % (\vskip for frame size was discarded)
+ %\md@adjheight
+ \md@put@frame % INSERTED ???
+ \else % Bekommt Material fuer das Abspalten am Kopf (Got material split off at the head)
+ \egroup %%%Moegliches egroup
+ \md@resto@set
+ \ifvoid\@tempboxa %%% prueft, ob die \tempbox@ (abgesplitteter unterer Teil) leer ist.
+ \setbox\@tempboxa\box\tw@
+ \ifmd@box@empty
+ \md@putbox@single %
+ \else
+ \md@putbox@second %
+ \fi
+ \md@afterframe
+ \else % Es ist wirklich gesplittet mit oberen Teil in \tw@ und unteren Teil in \tempboxa@
+ \ifdim\wd\tw@>\z@ %%%Ist der Obere Teil breiter als 0pt
+ \wd\tw@\wd\@tempboxa %%%setze die Beite des oberen Teils auf die Breite des unteren Teils
+ \global\md@content@splittrue %%%% Merke, dass Box gesplittet wird
+ %%%% gebe den oberen Teil der Box aus
+ \md@putbox@first %%% Ausgabe der ersten Teilbox
+ \else %%Oberer Teil ist Leer
+ \box\tw@ %%% Ausgabe und Leerung
+ \fi
+ \hrule \@height\z@ \@width\hsize
+ \clearpage
+ \md@adjheight
+ \md@put@frame
+ \fi
+ \fi
+ \fi
+ \fi
+\fi
+}
+
+
+%%==================================================%%
+%%=Ausgabe der Box nach Vorgabe der Ausagaberoutine=%%
+%%==================================================%%
+\let\md@textwidth\textwidth
+\def\md@putbox@single{%%%%% Ausgabe der ungesplitteten Gesamtbox
+ \ifvoid\@tempboxa
+ \else
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{\md@framed@linewidth}%
+ \rule[-0.5\baselineskip]{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\hsize-2\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\@tempboxa}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \llap{%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{0pt}{\md@framed@linewidth}%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md}%
+ }%
+ \llap{\md@@linecolor\rule[\fp@putboxa@length@md]{\hsize}{\md@framed@linewidth}}%
+ }%
+ \fi
+}
+
+
+\def\md@putbox@first{%%%% Ausgabe der Teilbox 1
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\tw@}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{-\md@framed@linewidth}%
+ \rule{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\tw@}%
+ \addtolength{\fp@putboxa@length@md}{0.5\baselineskip}%
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[\fp@putboxa@length@md-\md@framed@linewidth]{\hsize-\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\tw@}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ }%
+ }%% ??? \centerline bad idea
+}
+
+
+\def\md@putbox@second{%%%%% Ausgabe der Teilbox 2
+ \ifvoid\@tempboxa
+ \else
+ \centerline{%
+ \rlap{\color{\md@backgroundcolor}%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{.7\baselineskip}%
+ \addtolength{\fp@putboxa@length@md}{\md@framed@linewidth}%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\md@textwidth}{\fp@putboxa@length@md}%
+ }%
+ \setlength{\fp@putboxa@length@md}{\ht\@tempboxa}%
+ \addtolength{\fp@putboxa@length@md}{0.2\baselineskip}% %Linienueberschuss auf zweiter Seite
+ \rlap{\md@@linecolor%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{\hsize-2\md@framed@linewidth}{\md@framed@linewidth}%
+ }%
+ \hfill%
+ {\box\@tempboxa}%
+ \hfill%
+ \llap{\md@@linecolor%
+ \llap{%
+ \rule[-0.5\baselineskip-\md@framed@linewidth]{0pt}{\md@framed@linewidth}%
+ \vrule width \md@framed@linewidth height \fp@putboxa@length@md}%
+ }%
+ }%
+ \fi
+}
+
+
+
+%%==================================================%%
+%%======Deklaration nach der Ausgabe einer Box======%%
+%%==================================================%%
+\def\md@afterframe{%
+ \global\md@content@splitfalse
+ \global\md@box@emptyfalse
+ \nointerlineskip \null %{\showoutput \showlists}
+ \penalty-30 \vskip\topsep \relax
+}
+
+%%==================================================%%
+%%=====Berechnung bzw. Festlegung des Abstandes=====%%
+%%==================================================%%
+\def\md@adjheight{%
+ \ifdim\md@space@above@frame>\z@
+ \vbox to 1.2\md@space@above@frame{}% get proper baseline skip from above.
+ \nobreak \nointerlineskip
+ \vskip-1.2\md@space@above@frame
+ \penalty\@M%
+ \else
+ \vbox to \md@space@above@frame{}% get proper baseline skip from above.
+ \penalty\@M \nointerlineskip
+ \vskip-0.6\md@space@above@frame
+ \penalty\@M%
+ \fi
+} % useful for tops of pages
+
+
+
+%%%%%KEINE AHNUNG
+\catcode`\|=\md@arrayparboxrestore %%%????
+
+
+
+
+% \md@arrayparboxrestore has parts of \@parboxrestore, performing a similar but
+% less complete restoration of a default layout. See how it is used in the
+% "settings" argument of \MakeFrame. Though not a parameter, \hsize
+% should be set to the desired total line width available inside the
+% frame before invoking \md@arrayparboxrestore.
+\def\md@arrayparboxrestore{%
+ %%%AUS ltboxes.dtx -> \@arrayparboxrestore
+ \let\if@nobreak\iffalse
+ \let\if@noskipsec\iffalse
+ \let\-\@dischyph %%%Default \let\@dischyph=\-
+ \let\'\@acci\let\`\@accii\let\=\@acciii %%%Default: \let\@acci\' \let\@accii\` \let\@acciii\= <- Sicher gehen
+ %%%dass Defaultwerte erhalten sind
+ %%%Scheinen Mathesymbole zu sein ???
+ % Test ob Listenumgebung enthalten ist
+ \ifnum \ifdim\@totalleftmargin>\z@ 1\fi %%%In latex.ltx->totalleftmargin=\z@, ausser in list-Umgebung:
+ %%%\advance\@totalleftmargin \leftmargin
+ \ifdim\rightmargin >\z@ 1\fi %%%Default \rightmargin=\z@, ausnahme: quote usw.
+ \ifnum\@listdepth >0 1\fi %%%Zaehler fuer Listentiefe -> Keine Liste \@listdepth=0 sonst, je ebene +1
+ 0>\z@ %%%Ist ein Parameter erfuellt, dann ist es eine Listenumgebung
+ \@setminipage %%%Passform rund um das Element
+ % Nun wird versucht, Aenderungen der Breite von \hsize antsprechend der Listenparameter zu uebergeben.
+ % Dies ist defizitaer, denn eine erweiterte Möglichkeit, Aenderungen der Textdimension anzugegeben
+ % ist (noch) nicht vorgesehen, insbesondere keine getrennte linke / rechte Einstellung.
+ \advance\linewidth-\columnwidth \advance\linewidth\hsize
+ \parshape\@ne \@totalleftmargin \linewidth %%% parshape definiert das Aussehen eines Absatzes Zeile fuer Zeile.
+ %%% Seine Parameterversorgung geschieht mittels der folgenden Syntax:
+ %%% \parshape = n i1 l1 i2 l2 ... in ln.
+ %%% Dabei gibt der Parameter n an, fuer wieviele Zeilen Definitionspaare folgen.
+ %%% Jedes Definitionspaar besteht aus der Angabe i_j fuer den Einzug und
+ %%% der Laengenangabe l_j fuer die entsprechende Zeile. Sind mehr als n Zeilen
+ %%% vorhanden, so wird die letzte Angabe stets weiter verwendet
+ \else % Not in list
+ \linewidth=\hsize
+ \fi
+ \sloppy
+}
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%