summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/boites
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/boites
Initial commit
Diffstat (limited to 'macros/latex/contrib/boites')
-rw-r--r--macros/latex/contrib/boites/Makefile10
-rw-r--r--macros/latex/contrib/boites/README77
-rw-r--r--macros/latex/contrib/boites/README.docu23
l---------macros/latex/contrib/boites/README.md1
-rw-r--r--macros/latex/contrib/boites/boites.dtx676
-rw-r--r--macros/latex/contrib/boites/boites.pdfbin0 -> 119026 bytes
-rw-r--r--macros/latex/contrib/boites/boites.sty265
-rw-r--r--macros/latex/contrib/boites/boites_exemples.sty114
-rw-r--r--macros/latex/contrib/boites/demo.pdfbin0 -> 239967 bytes
-rw-r--r--macros/latex/contrib/boites/demo.tex102
-rw-r--r--macros/latex/contrib/boites/ligne_qui_ondule_sur_la_gauche.eps32
11 files changed, 1300 insertions, 0 deletions
diff --git a/macros/latex/contrib/boites/Makefile b/macros/latex/contrib/boites/Makefile
new file mode 100644
index 0000000000..dace93059c
--- /dev/null
+++ b/macros/latex/contrib/boites/Makefile
@@ -0,0 +1,10 @@
+LATEX = latex --interaction=nonstopmode
+EXAMPLES = boites_examples
+DVIPS = dvips
+
+all:
+ $(LATEX) $(EXAMPLES).tex
+ $(DVIPS) -o $(EXAMPLES).ps $(EXAMPLES).dvi
+
+clean:
+ rm -f *.dvi *.ps *.aux *.log *\~ \ No newline at end of file
diff --git a/macros/latex/contrib/boites/README b/macros/latex/contrib/boites/README
new file mode 100644
index 0000000000..fb555baf29
--- /dev/null
+++ b/macros/latex/contrib/boites/README
@@ -0,0 +1,77 @@
+boites
+======
+
+`boites` is a LaTeX package to typeset boxes that may break across pages.
+
+License
+-------
+
+(c) 1998-1999 Vincent Zoonekynd <zoonek@math.jussieu.fr>
+
+Distributed under the GNU Public Licence
+
+Description
+-----------
+
+These environments allow page breaks inside framed boxes. They include
+a few examples (shaded box, box with a wavy line on its side, etc.)
+
+See also the
+[`framed`](http://github.github.com/github-flavored-markdown/sample_content.html)
+package.
+
+Usage
+-----
+
+In the preamble:
+
+ \usepackage{boites,boites_examples,graphicx}
+
+Before using the various environments:
+
+ `\bkcounttrue`: the lines will be numbered
+
+ `\bkcountfalse`: the lines will not be numbered
+
+Boxed text with a title:
+
+ \begin{boiteepaisseavecuntitre}
+ ...
+ \end{boiteepaisseavecuntitre}
+
+Text with a double vertical line on the left and a number (17, in this
+example):
+
+ \begin{boitenumeroteeavecunedoublebarre}{17}
+ ...
+ \end{boitenumeroteeavecunedoublebarre}
+
+Text with a wavy line on the left:
+
+ \begin{boiteavecunelignequiondulesurlecote}
+ ...
+ \end{boiteavecunelignequiondulesurlecote}
+
+Shaded box:
+
+ \begin{boitecoloriee}
+ ...
+ \end{boitecoloriee}
+
+If you wish other kinds of boxes, have a look at `boites_examples.sty`
+and feel free to adapt the macros.
+
+Features
+--------
+
+ * These environments may be nested.
+ * They may appear in a multicols environment.
+ * Floating material, footnotes, marginpars appearing inside
+ them will be lost.
+
+History
+-------
+
+ * 1992: original macros (eclbkbox.sty) by Hideki Isozaki
+ * 1998: a few modifications to make the macros more configurable,
+ more comments and inclusion of some examples (Vincent Zoonekynd)
diff --git a/macros/latex/contrib/boites/README.docu b/macros/latex/contrib/boites/README.docu
new file mode 100644
index 0000000000..b38da6e5f6
--- /dev/null
+++ b/macros/latex/contrib/boites/README.docu
@@ -0,0 +1,23 @@
+
+Combined documentation (english and french):
+============================================
+
+ pdflatex boites.dtx
+
+Single documentation
+====================
+
+ tex boites.dtx
+
+English
+-------
+
+ pdflatex boites-en.drv
+
+French
+-------
+
+ pdflatex boites-fr.drv
+
+
+RN / 2009-05-07
diff --git a/macros/latex/contrib/boites/README.md b/macros/latex/contrib/boites/README.md
new file mode 120000
index 0000000000..100b93820a
--- /dev/null
+++ b/macros/latex/contrib/boites/README.md
@@ -0,0 +1 @@
+README \ No newline at end of file
diff --git a/macros/latex/contrib/boites/boites.dtx b/macros/latex/contrib/boites/boites.dtx
new file mode 100644
index 0000000000..a2d8f82348
--- /dev/null
+++ b/macros/latex/contrib/boites/boites.dtx
@@ -0,0 +1,676 @@
+%\CheckSum{242}
+%\iffalse ^^A meta-comment
+% boites.dtx
+%
+%% Copyright (c) José Romildo Malaquias <malaquias@gmail.com>, 2013
+%% (maintainer)
+%% Copyright (c) Markus Kohm <komascript at gmx.info>, 2009
+%% (boites.dtx only)
+%% Copyright (c) Susan Dittmar <Susan.Dittmar@gmx.de>, 2009
+%% (english translation)
+%% Copyright (c) Vincent Zoonekynd <zoonek@math.jussieu.fr>, 1998-1999
+%% (boites.sty)
+%%
+%% This work was derived from Susan Dittmar's translated version of
+%% Vincent Zoonekynd's boites.sty.
+%%
+%% This file is distributed unter the same license like the orignal
+%% boites.sty from March 1999: The GNU Public Licence.
+%%
+%
+%<*dtx|driver|package>
+%<*dtx>
+\ifx\ProvidesFile\undefined
+\def\batchfile{boites.dtx}
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+\endpreamble
+\generate{%
+ \file{boites-fr.drv}{\from{boites.dtx}{driver,french}}%
+ \file{boites-en.drv}{\from{boites.dtx}{driver,english}}%
+% \file{boites-p.sty}{\from{boites.dtx}{package}}% just use original boites.sty!
+}
+\ifToplevel{\csname fi\endcsname\csname fi\endcsname}
+\csname endinput\endcsname
+\fi
+\ProvidesFile{boites.dtx}[%
+%</dtx>
+%<driver&english>\ProvidesFile{boites-en.tex}[%
+%<driver&french>\ProvidesFile{boites-fr.tex}[%
+%<package>\ProvidesPackage{boites-p}[%
+2009/05/06 v1.0a from boites.sty derived
+%<*dtx>
+dtx file]
+%</dtx>
+%<*driver>
+%<english>english
+%<french>french
+%<driver>documentation]
+%</driver>
+%<package>package]
+%</dtx|driver|package>
+%<*dtx|driver>
+\documentclass{ltxdoc}
+\usepackage[utf8]{inputenc}
+%<*dtx>
+\usepackage[french,english]{babel}
+%</dtx>
+%<driver&english>\usepackage[english]{babel}
+%<driver&french>\usepackage[french]{babel}
+\expandafter\newif\csname ifenglish\endcsname
+\expandafter\newif\csname iffrench\endcsname
+\newcommand*{\selectenglish}{%
+ \selectlanguage{english}%
+ \englishtrue
+ \frenchfalse
+}
+\newcommand*{\selectfrench}{%
+ \selectlanguage{french}%
+ \englishfalse
+ \frenchtrue
+}
+\usepackage{hyperref}\renewcommand*{\theHsection}{\theHpart.\thesection}
+\begin{document}
+\RecordChanges
+%<*dtx|english>
+\selectenglish
+\DocInput{boites.dtx}
+%</dtx|english>
+%<*dtx|french>
+\selectfrench
+\DocInput{boites.dtx}
+%</dtx|french>
+\end{document}
+%</dtx|driver>
+%\fi ^^A meta-comment
+%
+% \GetFileInfo{boites.dtx}
+%
+%\iffrench
+% \title{\textsf{boites}\thanks{\fileversion, \filedate}}
+% \author{Vincent Zoonekynd\thanks{\texttt{zoonek@math.jussieu.fr}}}
+% \date{\filedate}
+%\fi
+%\ifenglish
+% \title{Package \textsf{boites}\thanks{\fileversion, \filedate}}
+% \author{Vincent Zoonekynd\thanks{\texttt{zoonek@math.jussieu.fr}}%
+% \and
+% Susan Dittmar (translation of the documentation)%
+% \thanks{\texttt{Susan.Dittmar@gmx.de}}}
+%\fi
+% \let\Title\title
+% \let\Author\author
+% \let\Maketitle\maketitle
+% \maketitle
+% \setcounter{section}{0}
+% \let\maketitle\Maketitle
+% \let\author\Author
+% \let\title\Title
+%
+% \iffrench \setcounter{part}{2}\part{Franzaise}\fi
+% \ifenglish \setcounter{part}{1}\part{English}\fi
+%
+%\iffrench\section{Modifiations par VZ, Juillet 1998}\fi
+%\ifenglish\section{Modifications by VZ, July 1998}\fi
+%
+% \begin{description}
+% \ifenglish\item[May 2009:] Original file \texttt{README} included\fi
+% \ifenglish\item[January 2009:] Translations of the french comments by
+% Susan Dittmar.\fi
+% \iffrench\item[Mars 1999:] Il y a certaines lignes à ne pas numéroter (par
+% exemple, celles qui ne contiennent que des espaces
+% verticaux avant ou après une énumération).\fi
+% \ifenglish\item[March 1999:] Some lines are not taken in correctly (for
+% example those that contain only vertical space before or after
+% an enumeration).\fi
+% \iffrench\item[Mars 1999:] commentaires\fi
+% \ifenglish\item[March 1999:] comments\fi
+% \end{description}
+%
+%\iffrench
+% Il y a quelques bugs, en particulier des traits qui sont trop
+% longs, trop courts, trop épais ou trop fins. Si Quelqu'un sait à
+% quoi c'est dû, qu'il me le dise.
+%
+% Il ne devrait plus y avoir de problème à cause d'un environement de
+% type liste (itemize, enumerate, etc.) à l'intérieur des boites.
+%
+% D'après :
+%\fi
+%\ifenglish
+% There are some bugs, in particular some lengths that are too long,
+% too short, too low, or too fine. If someone knows what causes this,
+% please tell me.
+%
+% The problem with list environments (itemize, enumerate, etc.) inside
+% the boite environment should not longer exist.
+%
+% Based upon:
+%\fi
+% \textsf{eclbkbox.sty} by Hideki Isozaki, 1992;
+% Date: May 28, 1993.
+%
+% \ifenglish
+% \section{User Documentation}
+% \begin{flushleft}
+% \texttt{boites.sty} (boxes that may break across pages)\\
+% \copyright\ 1998--1999 Vincent Zoonekynd \textless
+% zoonek@math.jussieu.fr\textgreater\\
+% Distributed under the GNU Public Licence
+% \end{flushleft}
+%
+% \subsection{Description}
+% These environments allow page breaks inside framed boxes.
+% They include a few examples (shaded box, box with a wavy
+% line on its side, etc.)
+%
+% See also
+% \href{http://www.ctan.org/pkg/framed}
+% {macros/latex/contrib/other/misc/framed.sty}.
+%
+% \subsection{Usage}
+%
+% \paragraph{In the preamble:}
+% \begin{verbatim}
+% \usepackage{boites,boites_examples,graphicx}
+% \end{verbatim}
+%
+% \paragraph{Before using the various environments:}
+% \begin{description}
+% \item[\cs{bkcounttrue}:] the lines will be numbered
+% \item[\cs{bkcountfalse}:] the lines will not be numbered
+% \end{description}
+%
+% \paragraph{Boxed text with a title:}
+% \begin{verbatim}
+% \begin{boiteepaisseavecuntitre}
+% ...
+% \end{boiteepaisseavecuntitre}
+% \end{verbatim}
+%
+% \paragraph{Text with a double vertical line on the left and a number}
+% (17, in this example):
+% \begin{verbatim}
+% \begin{boitenumeroteeavecunedoublebarre}{17}
+% ...
+% \end{boitenumeroteeavecunedoublebarre}
+% \end{verbatim}
+%
+% \paragraph{Text with a wavy line on the left:}
+% \begin{verbatim}
+% \begin{boiteavecunelignequiondulesurlecote}
+% ...
+% \end{boiteavecunelignequiondulesurlecote}
+% \end{verbatim}
+%
+% \paragraph{Shaded box:}
+% \begin{verbatim}
+% \begin{boitecoloriee}
+% ...
+% \end{boitecoloriee}
+% \end{verbatim}
+%
+% If you wish other kinds of boxes, have a look at
+% \texttt{boites\_examples.sty} and feel free to adapt the macros. Examples
+% for several kinds of boxes are shown at
+% \href{boites_exemples.pdf}{\texttt{boites\_exemples.pdf}}.
+%
+% \subsection{Features}
+% \begin{itemize}
+% \item These environments may be nested.
+% \item They may appear in a multicols environment.
+% \item Floating material, footnotes, marginpars appearing inside
+% them will be lost.
+% \end{itemize}
+% \fi
+%
+% \iffrench\section{Guide d'utilisateur}
+% Cette section n'existe malheureusement que dans la version anglaise.\fi
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+%
+%\iffalse
+%<*package>
+%\fi
+%
+% \begin{macrocode}
+\newbox\bk@bxb
+\newbox\bk@bxa
+\newif\if@bkcont
+\newif\ifbkcount
+\newcount\bk@lcnt
+
+\def\breakboxskip{2pt}
+\def\breakboxparindent{1.8em}
+% \end{macrocode}
+%
+% \iffrench\subsection{Paramètres modifiables}\fi
+% \ifenglish\subsection{parameters that can be modified}\fi
+% \begin{macrocode}
+\def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax}
+% \end{macrocode}
+%
+% \iffrench
+% Ce que l'on met à gauche du texte, par exemple, une ligne verticale
+% pour faire un cadre, ou une ligne qui ondule.
+% \fi
+% \ifenglish
+% What should be put on the left of the text, for example a vertical
+% line for a frame, or a wavy line.
+% \fi
+% \begin{macrocode}
+\def\bkvz@left{\vrule \@width\fboxrule\hskip\fboxsep}
+% \end{macrocode}
+%
+% \iffrench De même, ce que l'on met à droite,\fi
+% \ifenglish Analog; what should be put on the right,\fi
+% \begin{macrocode}
+\def\bkvz@right{\hskip\fboxsep\vrule \@width\fboxrule}
+% \end{macrocode}
+%
+% \iffrench en haut\fi
+% \ifenglish above\fi
+% \begin{macrocode}
+\def\bkvz@top{\hrule\@height\fboxrule}
+% \end{macrocode}
+%
+% \iffrench ou en bas\fi
+% \ifenglish and below.\fi
+% \begin{macrocode}
+\def\bkvz@bottom{\hrule\@height\fboxrule}
+% \end{macrocode}
+%
+% \iffrench
+% Si vous modifiez l'une de ces macros, il ne faut pas oublier de
+% modifier aussi la suivante, qui change la valeur de \cs{linewidth} en
+% lui retirant la largeur de tout ce que l'on vient de mettre sur le
+% côté.
+% \fi
+% \ifenglish
+% If you modify one of those macros, don't forget to modify also
+% the following. It reduces the value of \cs{linewidth} by the width
+% of all that will be put on the edges.
+% \fi
+% \begin{macrocode}
+\def\bkvz@set@linewidth{\advance\linewidth -2\fboxrule
+ \advance\linewidth -2\fboxsep}
+% \end{macrocode}
+%
+% \iffrench FIN DES PARAMÈTRES MODIFIABLES\fi
+% \ifenglish END OF PARAMETERS THAT CAN BE MODIFIED\fi
+%
+% \iffrench \subsection{Le début de l'environement}\fi
+% \ifenglish \subsection{The start of the environment}\fi
+% \begin{macrocode}
+\def\breakbox{%
+% \end{macrocode}
+% \iffrench
+% On n'est pas nécessairement en mode vertical.
+% C'est \cs{bkvz@before@breakbox} qui s'en occupe (ou non).
+% \fi
+% \ifenglish
+% Start is not necessarily in vertical mode.
+% \cs{bkvz@before@breakbox} deals with this (if necessary).
+% \fi
+% \begin{macrocode}
+ \bkvz@before@breakbox
+% \end{macrocode}
+% \iffrench on met tout dans une \cs{vbox} (\cs{bk@bxb})\fi
+% \ifenglish put all in one \cs{vbox} (\cs{bk@bxb})\fi
+% \begin{macrocode}
+ \setbox\bk@bxb\vbox\bgroup
+% \end{macrocode}
+% \iffrench
+% À l'intérieur de cette \cs{vbox}, on change la valeur de \cs{hsize} (et
+% aussi \cs{linewidth}).
+% \fi
+% \ifenglish Inside this \cs{vbox}, change \cs{hsize} (and \cs{linewidth}).\fi
+% \begin{macrocode}
+ \bkvz@set@linewidth
+ \hsize\linewidth
+% \end{macrocode}
+% \iffrench je ne sais pas ce que fait la commande \cs{@parboxrestore}.\fi
+% \ifenglish I do not know what \cs{@parboxrestore} does.\fi
+% \begin{macrocode}
+ \@parboxrestore
+% \end{macrocode}
+% \iffrench On indente éventuellement, si l'utilisateur le désire.\fi
+% \ifenglish Indent if the user so desires.\fi
+% \begin{macrocode}
+ \parindent\breakboxparindent\relax}
+% \end{macrocode}
+%
+% \iffrench On coupe la boite\fi
+% \ifenglish Cut the box\fi
+%
+% \cs{@tempdimb}: amount of vertical skip
+% between the first line (\cs{bk@bxa}) and the rest (\cs{bk@bxb})
+% \begin{macrocode}
+\def\bk@split{%
+% \end{macrocode}
+% \iffrench On calcule la hauteur totale (hauteur + profondeur) de la boite.\fi
+% \ifenglish Calculate the total height (height + depth) of the box.\fi
+% \begin{macrocode}
+ \@tempdimb\ht\bk@bxb % height of original box
+ \advance\@tempdimb\dp\bk@bxb
+% \end{macrocode}
+% \iffrench
+% On coupe, à l'aide de la commande \cs{vsplit}\dots to 0pt
+% Le morceau du haut se retrouve dans \cs{bk@bxa},
+% celui du bas dans \cs{bk@bxb}.
+% \fi
+% \ifenglish
+% Cut with the help of \cs{vsplit}\dots to 0pt
+% The height can then be found in \cs{bk@bxa},
+% the depth in \cs{bk@bxb}.
+% \fi
+% \begin{macrocode}
+\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it
+% \end{macrocode}
+% \iffrench
+% L'un des problèmes, c'est que la première boite a une hauteur vide.
+% On peut lui redonner sa hauteur initiale grace à |\vbox{\unvbox...}|
+% \fi
+% \ifenglish
+% A problem arises if the first box has an empty height.
+% It can be given back its initial height via |\vbox{\unvbox...}|
+% \fi
+% \begin{macrocode}
+ \setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa
+% \end{macrocode}
+% \iffrench
+% L'autre problème, c'est que l'on a perdu l'espace (interligne) entre
+% nos deux boites. Pour le récupérer, on ajoute la hauteur de ces deux
+% boites, et on fait la différence avec la hauteur initiale.
+% \fi
+% \ifenglish
+% The other problem is to forget the (interline) space between our
+% our two boxes. To regain it, add the height of the two boxes
+% and subtract that from the initial height.
+% \fi
+% \begin{macrocode}
+ \setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation
+ \advance\@tempdimb-\ht\@tempboxa
+ \advance\@tempdimb-\dp\@tempboxa
+% \end{macrocode}
+% \iffrench
+% Désormais, \cs{@tempdimb} contient l'espace entre les deux boites, que
+% l'on utilisera avec \cs{bk@addskipdp}.
+% \fi
+% \ifenglish
+% Now, \cs{@tempdimb} contains the space between the two boxes,
+% which will be used with \cs{bk@addskipdp}.
+% \fi
+% \begin{macrocode}
+}% gap between two boxes
+% \end{macrocode}
+%
+% \iffrench Rajouter \cs{fboxsep} à la première ligne\fi
+% \ifenglish Add \cs{fboxsep} to the first line\fi
+%
+% \cs{@tempdima}: height of the first line (\cs{bk@bxa}) + \cs{fboxsep}
+% \begin{macrocode}
+\def\bk@addfsepht{%
+ \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}
+% \end{macrocode}
+%
+% \iffrench Cette macro n'est pas utilisée\fi
+% \ifenglish This macro is not used anywhere\fi
+% \begin{macrocode}
+\def\bk@addskipht{%
+ \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}
+% \end{macrocode}
+%
+% \iffrench Rajouter \cs{fboxsep} à la dernière ligne\fi
+% \ifenglish Add \cs{fboxsep} to the last line\fi
+%
+% \cs{@tempdima}: depth of the first line (\cs{bk@bxa}) + \cs{fboxsep}
+% \begin{macrocode}
+\def\bk@addfsepdp{%
+ \@tempdima\dp\bk@bxa
+ \advance\@tempdima\fboxsep
+ \dp\bk@bxa\@tempdima}
+% \end{macrocode}
+%
+% \iffrench Rajouter l'espace qui a été perdu par \cs{vsplit}\dots\ to 0pt\fi
+% \ifenglish Add the space that had been lost by \cs{vsplit}\dots\ to 0pt\fi
+%
+% \cs{@tempdima}: depth of the first line (\cs{bk@bxa}) + vertical skip
+% \begin{macrocode}
+\def\bk@addskipdp{%
+ \@tempdima\dp\bk@bxa
+ \advance\@tempdima\@tempdimb
+ \dp\bk@bxa\@tempdima}
+% \end{macrocode}
+%
+% \iffrench
+% On ne compte pas toutes les lignes, mais uniquement celles qui en
+% sont vraiment. J'ai pris comme critère une largeur supérieure à
+% 1mm. La même distance se retrouve un peu plus loin, dans
+% \cs{bk@line}.
+% \fi
+% \ifenglish
+% Not all lines are computed, only cells that truely are there.
+% I have taken as criterion a size of minimum 1mm.
+% The same distance can be found further on, in \cs{bk@line}.
+% \fi
+% \begin{macrocode}
+\def\bkvz@countlines{%
+ \ifdim\wd\bk@bxa>1mm\advance\bk@lcnt\@ne\fi
+}
+% \end{macrocode}
+%
+% \iffrench Afficher la ligne que l'on vient de couper\fi
+% \ifenglish show the line we had cut\fi
+% \begin{macrocode}
+\def\bk@line{%
+ \hbox to \linewidth{%
+ \ifdim\wd\bk@bxa>1mm
+ \ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
+ \fi
+ \bkvz@left
+ \box\bk@bxa
+% \end{macrocode}
+% \iffrench
+% Il arrive que la boite ne soit pas aussi large que la ligne
+% (par exemple, espace avant une énumération)
+% \fi
+% \ifenglish
+% Sometimes the box is not big enough for a line (for example,
+% space before an enumeration)
+% \fi
+% \begin{macrocode}
+ \hfil
+ \bkvz@right}}
+% \end{macrocode}
+%
+% \iffrench La fin de l'environement\fi
+% \ifenglish The end of the environment\fi
+% \begin{macrocode}
+\def\endbreakbox{%
+% \end{macrocode}
+% \iffrench On ferme la \cs{vbox} (\cs{bk@bxb})\fi
+% \ifenglish Close the \cs{vbox} (\cs{bk@bxb})\fi
+% \begin{macrocode}
+ \egroup
+% \ifhmode\par\fi
+ {\noindent
+% \end{macrocode}
+% \iffrench On remet le compteur de lignes à un.\fi
+% \ifenglish Set line count back to one.\fi
+% \begin{macrocode}
+ \bk@lcnt 0
+% \end{macrocode}
+% \iffrench Le booléen que nous allons utiliser dans la boucle plus loin.\fi
+% \ifenglish The boolean we will use in the following loop.\fi
+% \begin{macrocode}
+ \@bkconttrue
+% \end{macrocode}
+% \iffrench
+% Comme on va empiler des boites, on met certains ressorts à zéro,
+% pour éviter les espaces verticaux non désirés.
+% \fi
+% \ifenglish
+% While putting together the boxes, some ajustable lengths are set
+% to zero to avoid undesired vertical space.
+% \fi
+% \begin{macrocode}
+ \baselineskip\z@
+ \lineskiplimit\z@
+ \lineskip\z@
+ \vfuzz\maxdimen
+% \end{macrocode}
+% \iffrench On coupe la boite\fi
+% \ifenglish split the boxes\fi
+% \begin{macrocode}
+ \bk@split
+% \end{macrocode}
+% \iffrench On ajoute un peu d'espace vertical (\cs{fboxsep}) au dessus\fi
+% \ifenglish Add a bit of vertical space (\cs{fboxsep}) above\fi
+% \begin{macrocode}
+ \bk@addfsepht
+% \end{macrocode}
+% \iffrench
+% On ajoute en dessous l'espace qui avait été perdu par la commande
+% \cs{vsplit}.
+% \fi
+% \ifenglish
+% Add below the space that had been forgotten due to the use of
+% the \cs{vsplit} command.
+% \fi
+% \begin{macrocode}
+ \bk@addskipdp
+% \end{macrocode}
+% \iffrench De deux choses l'une,\fi
+% \ifenglish First of two,\fi
+% \begin{macrocode}
+ \ifvoid\bk@bxb
+% \end{macrocode}
+% \iffrench Soit, il n'y a qu'une ligne\fi
+% \ifenglish In case there's only one line\fi
+% \begin{macrocode}
+ \def\bk@fstln{%
+% \end{macrocode}
+% \iffrench On rajoute un peu d'espace (\cs{fboxsep}) en dessous.\fi
+% \ifenglish Add a bit of space (\cs{fboxsep}) below.\fi
+% \begin{macrocode}
+ \bk@addfsepdp
+% \end{macrocode}
+% \iffrench
+% On construit la boite : le haut, le milieu (qui contient la gauche
+% et la droite) et le bas.
+% \fi
+% \ifenglish
+% Construct the box: the top, the middle (which contains
+% the left and right parts) and the foot.
+% \fi
+% \begin{macrocode}
+ \bkvz@countlines
+ \vbox{\bkvz@top\bk@line\bkvz@bottom}}%
+% \end{macrocode}
+% \iffrench Soit, il y en a plusieurs.\fi
+% \ifenglish In case there's more to do.\fi
+% \begin{macrocode}
+ \else
+ \def\bk@fstln{%
+% \end{macrocode}
+% \iffrench On met le haut\fi
+% \ifenglish Put in the top\fi
+% \begin{macrocode}
+ \bkvz@countlines
+ \vbox{\bkvz@top\bk@line}%
+% \end{macrocode}
+% \iffrench ??? (Si on l'enlève, ça ne marche plus.)\fi
+% \ifenglish ??? (If this is removed, it does not work any more.)\fi
+% \begin{macrocode}
+ \hfil
+% \end{macrocode}
+% \iffrench On commence à compter les lignes\fi
+% \ifenglish Continue counting lines\fi
+% \begin{macrocode}
+% \advance\bk@lcnt\@ne %%%%%%%%%%%%%%%%%%%% Voir \bkvz@countlines
+% \end{macrocode}
+% \iffrench Début de la boucle\fi
+% \ifenglish Begin of the loop\fi
+% \begin{macrocode}
+ \loop
+% \end{macrocode}
+% \iffrench On coupe ce qui reste de la boite.\fi
+% \ifenglish Cut out the next bit of the box.\fi
+% \begin{macrocode}
+ \bk@split
+% \end{macrocode}
+% \iffrench On rajoute l'espace vertical qui a été perdu.\fi
+% \ifenglish Add the vertical space that has been left out.\fi
+% \begin{macrocode}
+ \bk@addskipdp
+% \end{macrocode}
+% \iffrench Éventuellement, on augmente le numéro de la ligne\fi
+% \ifenglish advance number of lines if necessary\fi
+% \begin{macrocode}
+ \bkvz@countlines
+% \end{macrocode}
+% ???
+% \begin{macrocode}
+ leavevmode
+% \end{macrocode}
+% \iffrench S'il s'agit de la dernière ligne\fi
+% \ifenglish If it's the last line\fi
+% \begin{macrocode}
+ \ifvoid\bk@bxb
+% \end{macrocode}
+% \iffrench On met le booléen indiquant que la boucle doit se poursuivre à
+% FAUX.\fi
+% \ifenglish Set the boolean that indicates continuing the loop to FALSE.\fi
+% \begin{macrocode}
+ \@bkcontfalse
+% \end{macrocode}
+% \iffrench On met un peu d'espace vertical (\cs{fboxsep})\fi
+% \ifenglish Add a bit of vertical space (\cs{fboxsep})\fi
+% \begin{macrocode}
+ \bk@addfsepdp
+% \end{macrocode}
+% \iffrench En envoie la dernière ligne.\fi
+% \ifenglish Add the last line.\fi
+% \iffrench POURQUOI \cs{vtop} ??? Pour que l'éventuel numéro de ligne soit à
+% la bonne hauteur.\fi
+% \ifenglish WHY \cs{vtop}??? Because the line number has correct height.\fi
+% \begin{macrocode}
+ \vtop{\bk@line\bkvz@bottom}%
+ \else % 2,...,(n-1)
+ \bk@line
+ \fi
+ \hfil
+% \end{macrocode}
+% \iffrench Voir \cs{bkvz@countlines}\fi
+% \ifenglish See \cs{bkvz@countlines}\fi
+% \begin{macrocode}
+% \advance\bk@lcnt\@ne
+ \if@bkcont\repeat}%
+ \fi
+ \leavevmode\bk@fstln\par}\vskip\breakboxskip\relax}
+% \end{macrocode}
+% \begin{macrocode}
+\bkcountfalse
+% \end{macrocode}
+%
+%\iffalse
+%</package>
+%\fi
+%
+% \Finale
+%
+\endinput
+%
+% end of `boites.dtx'
+%
+% \iffalse
+%%% Local Variables:
+%%% mode: doc-tex
+%%% TeX-master: t
+%%% End:
+% \fi
diff --git a/macros/latex/contrib/boites/boites.pdf b/macros/latex/contrib/boites/boites.pdf
new file mode 100644
index 0000000000..8e7da98bf7
--- /dev/null
+++ b/macros/latex/contrib/boites/boites.pdf
Binary files differ
diff --git a/macros/latex/contrib/boites/boites.sty b/macros/latex/contrib/boites/boites.sty
new file mode 100644
index 0000000000..5de8b7a8cd
--- /dev/null
+++ b/macros/latex/contrib/boites/boites.sty
@@ -0,0 +1,265 @@
+% boites.sty
+% (c) 1998-1999 Vincent Zoonekynd <zoonek@math.jussieu.fr>
+% Distributed under the GNU Public Licence
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Mars 1999 : Il y a certaines lignes à ne pas numéroter (par
+%% exemple, celles qui ne contiennent que des espaces
+%% verticaux avant ou après une énumération).
+%% Mars 1999 : commentaires
+%%
+%% Modifiations par VZ, Juillet 1998
+%%
+%% Il y a quelques bugs, en particulier des traits qui sont trop
+%% longs, trop courts, trop épais ou trop fins. Si Quelqu'un sait à
+%% quoi c'est dû, qu'il me le dise.
+%%
+%% Il ne devrait plus y avoir de problème à cause d'un environement de
+%% type liste (itemize, enumerate, etc.) à l'intérieur des boites.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% D'après :
+% eclbkbox.sty by Hideki Isozaki, 1992
+% Date: May 28, 1993
+
+\ProvidesFile{boites.sty}
+\ProvidesPackage{boites}[2013/11/21 v1.1 Colored, framed and breakable across pages boxes]
+
+\newbox\bk@bxb
+\newbox\bk@bxa
+\newif\if@bkcont
+\newif\ifbkcount
+\newcount\bk@lcnt
+
+\def\breakboxskip{2pt}
+\def\breakboxparindent{1.8em}
+
+%% Paramètres modifiables
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax}
+
+% Ce que l'on met à gauche du texte, par exemple, une ligne verticale
+% pour faire un cadre, ou une ligne qui ondule.
+\def\bkvz@left{\vrule \@width\fboxrule\hskip\fboxsep}
+
+% De même, ce que l'on met à droite,
+\def\bkvz@right{\hskip\fboxsep\vrule \@width\fboxrule}
+
+% en haut
+\def\bkvz@top{\hrule\@height\fboxrule}
+
+% ou en bas
+\def\bkvz@bottom{\hrule\@height\fboxrule}
+
+% Si vous modifiez l'une de ces macros, il ne faut pas oublier de
+% modifier aussi la suivante, qui change la valeur de \linewidth en
+% lui retirant la largeur de tout ce que l'on vient de mettre sur le
+% côté.
+\def\bkvz@set@linewidth{%
+ \advance\linewidth -2\fboxrule
+ \advance\linewidth -2\fboxsep
+}
+
+%% FIN DES PARAMÈTRES MODIFIABLES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Le début de l'environement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\breakbox{%
+ % On n'est pas nécessairement en mode vertical.
+ % C'est \bkvz@before@breakbox qui s'en occupe (ou non).
+ \bkvz@before@breakbox
+ % on met tout dans une \vbox (\bk@bxb)
+ \setbox\bk@bxb\vbox\bgroup
+ % À l'intérieur de cette \vbox, on change la valeur de \hsize (et
+ % aussi \linewidth).
+ \bkvz@set@linewidth
+ \hsize\linewidth
+ % je ne sais pas ce que fait la commande \@parboxrestore.
+ \@parboxrestore
+ % On indente éventuellement, si l'utilisateur le désire.
+ \parindent\breakboxparindent\relax
+}
+
+%% On coupe la boite
+%%%%%%%%%%%%%%%%%%%%%%
+% \@tempdimb: amount of vertical skip
+% between the first line (\bk@bxa) and the rest (\bk@bxb)
+\def\bk@split{%
+ % On calcule la hauteur totale (hauteur + profondeur) de la boite.
+ \@tempdimb\ht\bk@bxb % height of original box
+ \advance\@tempdimb\dp\bk@bxb
+ % On coupe, à l'aide de la commande \vsplit... to 0pt
+ % Le morceau du haut se retrouve dans \bk@bxa,
+ % celui du bas dans \bk@bxb.
+ \setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it
+ % L'un des problèmes, c'est que la première boite a une hauteur vide.
+ % On peut lui redonner sa hauteur initiale grace à \vbox{\unvbox...}
+ \setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa
+ % L'autre problème, c'est que l'on a perdu l'espace (interligne) entre
+ % nos deux boites. Pour le récupérer, on ajoute la hauteur de ces deux
+ % boites, et on fait la différence avec la hauteur initiale.
+ \setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation
+ \advance\@tempdimb-\ht\@tempboxa
+ \advance\@tempdimb-\dp\@tempboxa
+ % Désormais, \@tempdimb contient l'espace entre les deux boites, que
+ % l'on utilisera avec \bk@addskipdp.
+}% gap between two boxes
+
+%% Rajouter \fboxsep à la première ligne
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \@tempdima: height of the first line (\bk@bxa) + fboxsep
+\def\bk@addfsepht{%
+ \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}%
+}
+
+%% cette macro n'est pas utilisée
+\def\bk@addskipht{%
+ \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}%
+}
+
+%% Rajouter \fboxsep à la dernière ligne
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \@tempdima: depth of the first line (\bk@bxa) + fboxsep
+\def\bk@addfsepdp{%
+ \@tempdima\dp\bk@bxa
+ \advance\@tempdima\fboxsep
+ \dp\bk@bxa\@tempdima
+}
+
+%% Rajouter l'espace qui a été perdu par \vsplit... to 0pt
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \@tempdima: depth of the first line (\bk@bxa) + vertical skip
+\def\bk@addskipdp{%
+ \@tempdima\dp\bk@bxa
+ \advance\@tempdima\@tempdimb
+ \dp\bk@bxa\@tempdima
+}
+
+%% On ne compte pas toutes les lignes, mais uniquement celles qui en
+%% sont vraiment. J'ai pris comme critère une largeur supérieure à
+%% 1mm. La même distance se retrouve un peu plus loin, dans
+%% \bk@line.
+\def\bkvz@countlines{%
+ \ifdim\wd\bk@bxa>1mm
+ \advance\bk@lcnt\@ne
+ \fi
+}
+
+%% Afficher la ligne que l'on vient de couper
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\bk@line{%
+ \hbox to \linewidth{%
+ \ifdim\wd\bk@bxa>1mm
+ \ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
+ \fi
+ \bkvz@left
+ \box\bk@bxa
+ % Il arrive que la boite ne soit pas aussi large que la ligne
+ % (par exemple, espace avant une énumération)
+ \hfil
+ \bkvz@right
+ }%
+}
+
+%% La fin de l'environement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\endbreakbox{%
+ % On ferme la \vbox (\bk@bxb)
+ \egroup
+ %\ifhmode\par\fi
+ {%
+ \noindent
+ % On remet le compteur de lignes à un.
+ \bk@lcnt 0%
+ % Le booléen que nous allons utiliser dans la boucle plus loin.
+ \@bkconttrue
+ % Comme on va empiler des boites, on met certains ressorts à zéro,
+ % pour éviter les espaces verticaux non désirés.
+ \splittopskip\z@ % glue inserted at the top of a box resulting from a \vsplit
+ \baselineskip\z@
+ \lineskiplimit\z@
+ \lineskip\z@
+ \vfuzz\maxdimen
+ % On coupe la boite
+ \bk@split
+ % On ajoute un peu d'espace vertical (\fboxsep) au dessus
+ \bk@addfsepht
+ % On ajoute en dessous l'espace qui avait été perdu par la commande
+ % \vsplit.
+ \bk@addskipdp
+ % De deux choses l'une,
+ \ifvoid\bk@bxb
+ % Soit, il n'y a qu'une ligne
+ \def\bk@fstln{%
+ % On rajoute un peu d'espace (\fboxsep) en dessous.
+ \bk@addfsepdp
+ % On construit la boite : le haut, le milieu (qui contient la gauche
+ % et la droite) et le bas.
+ \bkvz@countlines
+ \vbox{\bk@singleline}%
+ }%
+ % Soit, il y en a plusieurs.
+ \else
+ \def\bk@fstln{%
+ % On met le haut
+ \bkvz@countlines
+ \vbox{\bk@firstline}%
+ % ??? (Si on l'enlève, ça ne marche plus.)
+ \hfil
+ % On commence à compter les lignes
+ %\advance\bk@lcnt\@ne %%%%%%%%%%%%%%%%%%%% Voir \bkvz@countlines
+ % Début de la boucle
+ \loop
+ % On coupe ce qui reste de la boite.
+ \bk@split
+ % On rajoute l'espace vertical qui a été perdu.
+ \bk@addskipdp
+ % Éventuellement, on augmente le numéro de la ligne
+ \bkvz@countlines
+ % ???
+ \leavevmode
+ % S'il s'agit de la dernière ligne
+ \ifvoid\bk@bxb
+ % On met le booléen indiquant que la boucle doit se poursuivre à FAUX.
+ \@bkcontfalse
+ % On met un peu d'espace vertical (\fboxsep)
+ \bk@addfsepdp
+ % En envoie la dernière ligne.
+ % POURQUOI \vtop ??? Pour que l'éventuel numéro de ligne soit à la
+ % bonne hauteur.
+ \vtop{\bk@lastline}%
+ \else % 2,...,(n-1)
+ \bk@middleline
+ \fi
+ \hfil
+ %\advance\bk@lcnt\@ne %%%%%%%%%%%%%%%% Voir \bkvz@countlines
+ \if@bkcont\repeat
+ }%
+ \fi
+ \leavevmode\bk@fstln\par
+ }%
+ \vskip\breakboxskip\relax
+}
+
+\bkcountfalse
+
+\def\bk@singleline{%
+ \bkvz@top
+ \bk@line
+ \bkvz@bottom
+}
+
+\def\bk@firstline{%
+ \bkvz@top
+ \bk@line
+}
+
+\def\bk@middleline{%
+ \bk@line
+}
+
+\def\bk@lastline{%
+ \bk@line
+ \bkvz@bottom
+}
diff --git a/macros/latex/contrib/boites/boites_exemples.sty b/macros/latex/contrib/boites/boites_exemples.sty
new file mode 100644
index 0000000000..0f77efe8e7
--- /dev/null
+++ b/macros/latex/contrib/boites/boites_exemples.sty
@@ -0,0 +1,114 @@
+% boites_examples.sty
+% (c) 2001 Vincent Zoonekynd <zoonek@math.jussieu.fr>
+% distributed under the GNU Public Licence
+
+\ProvidesFile{boites_exemples.sty}
+\ProvidesPackage{boites_exemples}
+\RequirePackage{boites}
+
+%% Première modification
+
+\def\boiteepaisseavecuntitre#1{%
+ \def\thickhrulefill{\leavevmode \leaders \hrule height 1pt \hfill \kern \z@}%
+ \def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax}%
+ \fboxrule=2pt
+ \def\bkvz@set@linewidth{\advance\linewidth -2\fboxrule
+ \advance\linewidth -2\fboxsep}%
+ \def\bkvz@left{\vrule \@width\fboxrule\hskip\fboxsep}%
+ \def\bkvz@right{\hskip\fboxsep\vrule \@width\fboxrule}%
+ \def\bkvz@top{\hbox to \hsize{%
+ \vrule\@width\fboxrule\@height 1.2pt %%% D'où vient ce 0.2pt ????
+ \thickhrulefill{#1}\thickhrulefill
+ \vrule\@width\fboxrule\@height 1.2pt}}%
+ \def\bkvz@bottom{\hrule\@height\fboxrule}%
+ \breakbox}
+\def\endboiteepaisseavecuntitre{\endbreakbox}
+
+%% Seconde modification
+\def\boitenumeroteeavecunedoublebarre#1{%
+ %\fboxrule=0.4pt
+ \def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax}%
+ \def\bkvz@set@linewidth{\advance\linewidth -2\fboxrule
+ \advance\linewidth -2\fboxsep
+ \advance\linewidth -2cm}%
+ \def\bkvz@left{\hspace{2cm}%
+ \ifnum\bk@lcnt=1\llap{\textbf{#1}\quad}\fi
+ \vrule \@width\fboxrule\hskip\fboxsep
+ \vrule \@width\fboxrule\hskip\fboxsep}%
+ \def\bkvz@right{}%
+ \def\bkvz@top{}%
+ \def\bkvz@bottom{}%
+ \breakbox
+}
+\def\endboitenumeroteeavecunedoublebarre{\endbreakbox}
+
+%% Troisième modification
+ \newdimen\bk@hauteurcourrante
+ \newdimen\bk@hauteursuivante
+ \newdimen\bk@tempdim
+\def\boiteavecunelignequiondulesurlecote{%
+ \def\bk@espace{ }%
+ \def\pt@to@bp##1{##1=.99627393548##1}% 1bp=1.00374pt
+ \def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\bk@hauteurcourrante=1200bp}%
+ \def\bkvz@set@linewidth{\advance\linewidth -15bp}%
+ \def\bkvz@left{\global\bk@hauteursuivante=\bk@hauteurcourrante
+ \global\advance\bk@hauteursuivante by -\dp\bk@bxa
+ \global\advance\bk@hauteursuivante by -\ht\bk@bxa
+ \edef\bk@arguments@graphicx{[bb = 0 }%
+ \bk@tempdim=\bk@hauteurcourrante
+ \pt@to@bp\bk@tempdim
+ \edef\bk@arguments@graphicx{%
+ \bk@arguments@graphicx\strip@pt\bk@tempdim\bk@espace}%
+ \bk@tempdim=\bk@hauteursuivante
+ \pt@to@bp\bk@tempdim
+ \edef\bk@arguments@graphicx{%
+ \bk@arguments@graphicx 15
+ \strip@pt\bk@tempdim\bk@espace,
+ clip=true
+ ]}%
+ %\show\bk@arguments@graphicx
+ \smash{\raisebox{\the\ht\bk@bxa}{%
+ \expandafter\includegraphics\bk@arguments@graphicx
+ {ligne_qui_ondule_sur_la_gauche.eps}}}%
+ \global\bk@hauteurcourrante=\bk@hauteursuivante
+ }%
+ \let\bkvz@right\relax
+ \let\bkvz@top\relax
+ \let\bkvz@bottom\relax
+ \breakbox}
+\def\endboiteavecunelignequiondulesurlecote{\endbreakbox}
+
+%% Quatrième modification
+\RequirePackage{color}
+\newlength\bk@fboxsep
+\definecolor{gris}{gray}{0.9}
+\def\boitecoloriee{%
+ \bk@fboxsep\fboxsep
+ \def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax}%
+ \def\bkvz@set@linewidth{%
+ \advance\linewidth -2\fboxrule
+ \advance\linewidth -2\fboxsep
+ }%
+ \def\bk@line{%
+ \hbox to \linewidth{%
+ \ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
+ \vrule\@width\fboxrule
+ {\fboxsep\z@
+ \colorbox{gris}{%
+ \hskip\bk@fboxsep
+ \box\bk@bxa
+ \hskip\bk@fboxsep
+ }%
+ }%
+ \vrule\@width\fboxrule
+ }%
+ }%
+ %\def\bkvz@top{\hrule\@height\fboxrule}
+ \def\bkvz@top{\hrule height .6pt}%%% Pourquoi faut-il ajouter 0.2pt ???
+ \def\bkvz@bottom{\hrule\@height\fboxrule}%
+ \breakbox
+}%
+\def\endboitecoloriee{\endbreakbox}
+
+
+\endinput
diff --git a/macros/latex/contrib/boites/demo.pdf b/macros/latex/contrib/boites/demo.pdf
new file mode 100644
index 0000000000..47349d4fed
--- /dev/null
+++ b/macros/latex/contrib/boites/demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/boites/demo.tex b/macros/latex/contrib/boites/demo.tex
new file mode 100644
index 0000000000..91511f9c57
--- /dev/null
+++ b/macros/latex/contrib/boites/demo.tex
@@ -0,0 +1,102 @@
+\documentclass[a4paper,10pt]{article}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{boites,boites_exemples}
+\usepackage{graphicx,pstricks}
+\usepackage{multicol}
+\usepackage{lipsum}
+
+\begin{document}
+
+\title{Demonstration of the \texttt{boites} Package}
+\date{}
+\maketitle
+
+\subsubsection*{Using the \texttt{breakbox} environment and line counting}
+
+\bkcounttrue
+\begin{breakbox}
+ \begin{itemize}
+ \item \lipsum[1]
+ \item \lipsum[2]
+ \end{itemize}
+\end{breakbox}
+
+\subsubsection*{Using the \texttt{boiteepaisseavecuntitre} environment}
+
+\begin{boiteepaisseavecuntitre}{ Coucou ! }
+ \lipsum[1-3]
+\end{boiteepaisseavecuntitre}
+
+\subsubsection*{Using the \texttt{boitenumeroteeavecunedoublebarre} environment}
+
+\begin{boitenumeroteeavecunedoublebarre}{3.5}
+ \lipsum[1-3]
+\end{boitenumeroteeavecunedoublebarre}
+
+\subsubsection*{Using the \texttt{boitenumeroteeavecunedoublebarre} environment}
+
+\begin{boitenumeroteeavecunedoublebarre}{3.5}
+ \begin{itemize}
+ \item \lipsum[1]
+ \item \lipsum[2]
+ \end{itemize}
+\end{boitenumeroteeavecunedoublebarre}
+
+\subsubsection*{Using the \texttt{boiteavecunelignequiondulesurlecote} environment}
+
+\begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[1-3]
+\end{boiteavecunelignequiondulesurlecote}
+
+\subsubsection*{Using the \texttt{boitecoloriee} environment}
+
+\bkcounttrue
+\begin{boitecoloriee}
+ \lipsum[1-2]
+\end{boitecoloriee}
+
+\subsubsection*{Using small fonts in the \texttt{boitecoloriee} environment}
+
+\bkcounttrue
+\begin{boitecoloriee}
+ \small
+ \lipsum[1-2]
+\end{boitecoloriee}
+
+\subsubsection*{Using nested \texttt{boiteavecunelignequiondulesurlecote} environments}
+
+\bkcountfalse
+\begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[1]\bigskip
+ \begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[2]\bigskip
+ \begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[3]\bigskip
+ \end{boiteavecunelignequiondulesurlecote}
+ \lipsum[4]
+ \end{boiteavecunelignequiondulesurlecote}
+ \lipsum[5]
+\end{boiteavecunelignequiondulesurlecote}
+
+\subsubsection*{Using the \texttt{boiteavecunelignequiondulesurlecote} environment in multiple columns}
+
+\bkcountfalse
+\begin{multicols}{3}
+ \lipsum[1]
+ \begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[2-4]
+ \end{boiteavecunelignequiondulesurlecote}
+ \lipsum[5]
+ \begin{boiteavecunelignequiondulesurlecote}
+ \lipsum[6-8]
+ \end{boiteavecunelignequiondulesurlecote}
+ \lipsum[9-14]
+\end{multicols}
+
+\end{document}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/macros/latex/contrib/boites/ligne_qui_ondule_sur_la_gauche.eps b/macros/latex/contrib/boites/ligne_qui_ondule_sur_la_gauche.eps
new file mode 100644
index 0000000000..f4aef6bbb1
--- /dev/null
+++ b/macros/latex/contrib/boites/ligne_qui_ondule_sur_la_gauche.eps
@@ -0,0 +1,32 @@
+%!PS-ADOBE-3.0
+%%BoundingBox: 0 0 10 2400
+%%Title: vague.eps
+%%Creator: Vincent Zoonekynd
+%%CreationDate: June 1998
+%%EndComments
+
+/vz@Dict 20 dict def vz@Dict begin
+/une_vague {
+ /y exch def /x exch def
+ gsave
+ x y moveto
+ x 4 sub y 2 add lineto
+ x y 4 add lineto
+ stroke
+ grestore
+} bind def
+/deux_vagues {
+ gsave
+ 1 setlinecap
+ 1 setlinejoin
+ 2 copy
+ une_vague
+ exch 4 add exch une_vague
+ grestore
+} bind def
+/do_it {
+ 0 4 2400 { 5 exch deux_vagues } for
+} bind def
+end
+
+vz@Dict begin do_it end \ No newline at end of file