From 9d1126f12ee0e24f6898fe94293f2bd91207b263 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 12 Jan 2006 23:52:22 +0000 Subject: boites git-svn-id: svn://tug.org/texlive/trunk@718 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/boites/boites.sty | 230 +++++++++++++++++++++ .../tex/latex/boites/boites_exemples.sty | 103 +++++++++ 2 files changed, 333 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/boites/boites.sty create mode 100644 Master/texmf-dist/tex/latex/boites/boites_exemples.sty diff --git a/Master/texmf-dist/tex/latex/boites/boites.sty b/Master/texmf-dist/tex/latex/boites/boites.sty new file mode 100644 index 00000000000..e05373bd9dc --- /dev/null +++ b/Master/texmf-dist/tex/latex/boites/boites.sty @@ -0,0 +1,230 @@ +% 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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\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. +\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{\bkvz@top\bk@line\bkvz@bottom}}% %%%%%%%%%%%%%%%%%%%%%%%%%% + % Soit, il y en a plusieurs. +\else +\def\bk@fstln{% + % On met le haut +\bkvz@countlines +\vbox{\bkvz@top\bk@line}% %%%%%%%%%%%%%%%%%%%%%%%%%%% + % ??? (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@line\bkvz@bottom}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\else % 2,...,(n-1) + \bk@line +\fi + \hfil + %\advance\bk@lcnt\@ne %%%%%%%%%%%%%%%% Voir \bkvz@countlines +\if@bkcont\repeat}% +\fi +\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax} + +\bkcountfalse + diff --git a/Master/texmf-dist/tex/latex/boites/boites_exemples.sty b/Master/texmf-dist/tex/latex/boites/boites_exemples.sty new file mode 100644 index 00000000000..428df5039d6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/boites/boites_exemples.sty @@ -0,0 +1,103 @@ +% 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{pstricks} +\newgray{gris}{0.9} +\def\boitecoloriee{% + \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 + \psframebox*[framesep=0pt,fillcolor=gris,linewidth=0pt]{% + \vrule\@width\fboxrule \hskip\fboxsep + \box\bk@bxa + \hskip\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 -- cgit v1.2.3