From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/boites/Makefile | 10 + macros/latex/contrib/boites/README | 77 +++ macros/latex/contrib/boites/README.docu | 23 + macros/latex/contrib/boites/README.md | 1 + macros/latex/contrib/boites/boites.dtx | 676 +++++++++++++++++++++ macros/latex/contrib/boites/boites.pdf | Bin 0 -> 119026 bytes macros/latex/contrib/boites/boites.sty | 265 ++++++++ macros/latex/contrib/boites/boites_exemples.sty | 114 ++++ macros/latex/contrib/boites/demo.pdf | Bin 0 -> 239967 bytes macros/latex/contrib/boites/demo.tex | 102 ++++ .../boites/ligne_qui_ondule_sur_la_gauche.eps | 32 + 11 files changed, 1300 insertions(+) create mode 100644 macros/latex/contrib/boites/Makefile create mode 100644 macros/latex/contrib/boites/README create mode 100644 macros/latex/contrib/boites/README.docu create mode 120000 macros/latex/contrib/boites/README.md create mode 100644 macros/latex/contrib/boites/boites.dtx create mode 100644 macros/latex/contrib/boites/boites.pdf create mode 100644 macros/latex/contrib/boites/boites.sty create mode 100644 macros/latex/contrib/boites/boites_exemples.sty create mode 100644 macros/latex/contrib/boites/demo.pdf create mode 100644 macros/latex/contrib/boites/demo.tex create mode 100644 macros/latex/contrib/boites/ligne_qui_ondule_sur_la_gauche.eps (limited to 'macros/latex/contrib/boites') 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 + +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 , 2013 +%% (maintainer) +%% Copyright (c) Markus Kohm , 2009 +%% (boites.dtx only) +%% Copyright (c) Susan Dittmar , 2009 +%% (english translation) +%% Copyright (c) Vincent Zoonekynd , 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}[% +% +%\ProvidesFile{boites-en.tex}[% +%\ProvidesFile{boites-fr.tex}[% +%\ProvidesPackage{boites-p}[% +2009/05/06 v1.0a from boites.sty derived +%<*dtx> +dtx file] +% +%<*driver> +%english +%french +%documentation] +% +%package] +% +%<*dtx|driver> +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +%<*dtx> +\usepackage[french,english]{babel} +% +%\usepackage[english]{babel} +%\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|french> +\selectfrench +\DocInput{boites.dtx} +% +\end{document} +% +%\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 +% +%\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 Binary files /dev/null and b/macros/latex/contrib/boites/boites.pdf 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 +% 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 +% 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 Binary files /dev/null and b/macros/latex/contrib/boites/demo.pdf 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 -- cgit v1.2.3