Comment générer l'expression et al automatiquement ?

Voici une fonction "format.names" (tirée de plain.bst) où V. Henn a rajouté quelques lignes pour mettre un et al pour les auteurs de numéro supérieurs à 4. N'importe quel style biblio utilise une fonction avec une syntaxe similaire, il n'y a qu'à insérer les nouvelles lignes dans la fonction format.names (juste avant la fin du while) du fichier biblio qui vous plaît et le tour est joué... %%%% debut macro %%%% FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { numnames #2 > { "," * } 'skip$ if$ t "others" = { " et~al." * } { " and " * t * } if$ } if$ } % fin du "si nameptr > 1" 't % "si nameptr = 1" if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := % ------------------------------ % si à ce stade on se retrouve avec des noms à placer et que % le pointeur nameptr est égal à 4 alors il faut % 1. ajouter un "et al." % 2. ne pas prendre en compte les auteurs suivants : nameleft:=0 nameptr #4 = namesleft #0 > and { " \emph{et~al.}" * #0 'namesleft := } 'skip$ if$ % fin des ajouts % ------------------------------ } while$ % tant qu'il reste des nom à placer } %%%% fin macro %%%%