Cahiers
enberg
GUT GUT GUT
m LE COIN DU GOUROU : UNE MACRO TEX POUR SIGNALER LES MISES À JOUR
P GeorgesWeil
Cahiers GUTenberg, n1 (1989), p. 52-53.
<http://cahiers.gutenberg.eu.org/fitem?id=CG_1989___1_52_0>
© Association GUTenberg, 1989, tous droits réservés.
L’accès aux articles desCahiers GUTenberg (http://cahiers.gutenberg.eu.org/),
implique l’accord avec les conditions générales
d’utilisation (http://cahiers.gutenberg.eu.org/legal.html).
Toute utilisation commerciale ou impression systématique est constitutive d’une infraction pénale. Toute copie ou impression de ce fichier doit contenir la présente mention de copyright.
Le coin du G O U R O U :
une macro TgX pour signaler les mises à jour
Georges W E I L
CCS - CNRS, 23 rue du Loess, 67200 Strasbourg
B u t de la macro
Elle permet de mettre une barre de mise à jour dans la marge d'un ou plusieurs paragraphes.
A p p e l des macros
\maj texte ou
\majdeb par \majfin \par
texte Texte du paragraphe pour lequel on veut mettre une barre de mise à jour dans la marge.
par Texte des paragraphes pour lesquels on veut mettre une barre de mise à jour dans la marge.
Fonctionnement
vement être précédée et suivie par \par sans quoi Tj^X imprimera un message d'erreur du type U n d e f i n e d c o n t r o l s e - quence
E x e m p l e
Le texte précédent a été obtenu par :
\majdeb
La macro \maj met une b a r r e pour l e paragraphe qui s u i t .
... paragraphe précédent.
\par
\majfin \par Source
La macro \maj met une barre pour le paragraphe qui suit.
La macro \majdeb met une barre pour tous les paragraphes qui suivent jusqu'à la rencontre d'une commande \majfin.
La lecture du membre crée une va- riable de type dimension \majwidth per- mettant de définir l'épaisseur de la barre;
et deux variables de type saut \majhskip et \majvskip permettant de définir res- pectivement l'espacement horizontal entre la barre et la marge de gauche, et l'espa- cement vertical entre ce paragraphe et le paragraphe précédent.
La commande \majfin doit impérati-
°N.d.R : cette macro, écrite pour plain T^X, est utilisable également pour IiTgX.
'/, Macro maj
7, Permet de mettre un trait vertical 7, dans la marge d'un paragraphe '/, majwidth epaisseur du trait '/, majhskip espace entre le trait '/. et le paragraphe
'/. majhvkip espace avant le paragraphe
*/.
\newdimen\maj width \majwidth=lpt
\newskip\majhskip \majhskip=5pt
\ne»skip\majvskip
\majvskip=3pt minus lpt
\nenbox\majbox \neBdimen\majdim '/, (a)
\def\maj#l\par{\par
\setbox\»ajbox=\vbox{\indent #l\par}
\vskip \majvskip
\majdim=\pagegoal
\advance \majdim by -\pagetotal '/, (b)
\advance \majdim by -lpt '/, (b)
\ifdiml\ht\majbox>\majdim '/, (c)
52
{\vbadness=10000
\hbox to\hsize{\hss\vrule height\majdim\hskip \majhskip
\vsplit\majbox to \majdim}}5i
\eject '/. Cd) Yfi
\hbox to\hsize{\hss\vrule '/. Ce) height l\ht\maibox'/,
\hskip\majhskip\box\majbox}/£
\ p a r }
\long\def\majdeb#l\par
{\ifx#l\majfin\let\next=\relax
\else \maj #l\par\let\next=\majdeb
\fi \ n e x t }
Explications sur les macros
Le principe consiste à mettre le para- graphe dans une boîte verticale de nom
\majbox (a), et d'imprimer une ligne di- latée vers la droite pour contenir le trait
vertical et ayant à gauche la boîte (e). La commande \hss permet de dilater la ligne vers la droite.
( b ) sert à calculer la place disponible en fin de page. La valeur est mise dans
\majdim. Si la boîte ne peut être conte- nue dans le bas de la page (c), on im- prime la partie de la boîte remplissant le bas de la page puis on change de page (d). La commande \vbadness=10000 em- pêche l'impression d'un message "under- f u l l vbox".
La macro \majdeb permet d'isoler chaque paragraphe, pour le fournir en ar- gument à \majdef. C'est une boucle qui s'arrête à la reconnaissance d'une com- mande \majf in en début de paragraphe.
P U B L I C I T É
('workshop on Object-Oriented
Document Manipulation
Rennes, France : 29-31 May, 1989
Address: iniSA-Woodman'89, Campus de Beaulieu, 35042 Rennes, fiance
|e-mail: [email protected] - FAX: 33 - 99 38 38 32
53