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 %%%%