diff options
author | Karl Berry <karl@freefriends.org> | 2013-11-23 23:59:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-11-23 23:59:23 +0000 |
commit | b83e40cafc2d8b440489311729d1e34d4aba372f (patch) | |
tree | 9cf18fa9338ac76409ed8ab82bf15e4861675468 /Master/texmf-dist/tex | |
parent | 416fb244aa3fb5b9bbf58e6a4c20ad3b0fe32cb7 (diff) |
boites (23nov13)
git-svn-id: svn://tug.org/texlive/trunk@32221 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/boites/boites.sty | 333 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/boites/boites_exemples.sty | 43 |
2 files changed, 211 insertions, 165 deletions
diff --git a/Master/texmf-dist/tex/latex/boites/boites.sty b/Master/texmf-dist/tex/latex/boites/boites.sty index e05373bd9dc..5de8b7a8cd7 100644 --- a/Master/texmf-dist/tex/latex/boites/boites.sty +++ b/Master/texmf-dist/tex/latex/boites/boites.sty @@ -3,27 +3,27 @@ % Distributed under the GNU Public Licence %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Mars 1999 : Il y a certaines lignes à ne pas numéroter (par +%% 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). +%% 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. +%% 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. +%% 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 : +%% D'après : % eclbkbox.sty by Hideki Isozaki, 1992 % Date: May 28, 1993 -\ProvidesFile{boites.sty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{boites} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesFile{boites.sty} +\ProvidesPackage{boites}[2013/11/21 v1.1 Colored, framed and breakable across pages boxes] \newbox\bk@bxb \newbox\bk@bxa @@ -34,197 +34,232 @@ \def\breakboxskip{2pt} \def\breakboxparindent{1.8em} -%% Paramètres modifiables +%% Paramètres modifiables %%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax} %%% +\def\bkvz@before@breakbox{\ifhmode\par\fi\vskip\breakboxskip\relax} -% Ce que l'on met à gauche du texte, par exemple, une ligne verticale +% 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} %%%%%%%%%%%%%%%%% +\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} %%%%%%%%%%%%%%%% +% 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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\bkvz@top{\hrule\@height\fboxrule} % ou en bas -\def\bkvz@bottom{\hrule\@height\fboxrule} %%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\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} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% côté. +\def\bkvz@set@linewidth{% + \advance\linewidth -2\fboxrule + \advance\linewidth -2\fboxsep +} -%% FIN DES PARAMÈTRES MODIFIABLES +%% FIN DES PARAMÈTRES MODIFIABLES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% Le début de l'environement +%% 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 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. + % 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 +%% 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}} + \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}% +} -%% cette macro n'est pas utilisée +%% cette macro n'est pas utilisée \def\bk@addskipht{% - \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}} + \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}% +} -%% Rajouter \fboxsep à la dernière ligne +%% 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} + \@tempdima\dp\bk@bxa + \advance\@tempdima\fboxsep + \dp\bk@bxa\@tempdima +} -%% Rajouter l'espace qui a été perdu par \vsplit... to 0pt +%% 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} + \@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 +%% 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 + \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}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \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} + % 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/Master/texmf-dist/tex/latex/boites/boites_exemples.sty b/Master/texmf-dist/tex/latex/boites/boites_exemples.sty index 428df5039d6..0f77efe8e78 100644 --- a/Master/texmf-dist/tex/latex/boites/boites_exemples.sty +++ b/Master/texmf-dist/tex/latex/boites/boites_exemples.sty @@ -6,7 +6,7 @@ \ProvidesPackage{boites_exemples} \RequirePackage{boites} -%% Première modification +%% Première modification \def\boiteepaisseavecuntitre#1{% \def\thickhrulefill{\leavevmode \leaders \hrule height 1pt \hfill \kern \z@}% @@ -17,7 +17,7 @@ \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 ???? + \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}% @@ -42,7 +42,7 @@ } \def\endboitenumeroteeavecunedoublebarre{\endbreakbox} -%% Troisième modification +%% Troisième modification \newdimen\bk@hauteurcourrante \newdimen\bk@hauteursuivante \newdimen\bk@tempdim @@ -78,25 +78,36 @@ \breakbox} \def\endboiteavecunelignequiondulesurlecote{\endbreakbox} -%% Quatrième modification -\RequirePackage{pstricks} -\newgray{gris}{0.9} +%% 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{% + \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 - }% - }}% + \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} + \breakbox +}% \def\endboitecoloriee{\endbreakbox} |