Comment générer l'expression «//et al.//» automatiquement?

$\Reponse$ Lorsqu'on a une longue liste d'auteurs, il peut être souhaitable que tous les auteurs n'apparaissent pas dans la bibliographie. On mettra donc les 4 premiers, puis et al.

Pour ce faire, on modifie la fonction format.names (qui est généralement toujours semblable à celle ci-dessous) et on ajoute un test sur le nombre d'auteurs :

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$
    } 
    't
  if$
  nameptr #1 + 'nameptr :=
  namesleft #1 - 'namesleft := 
% ------------------------------
% (debut des ajouts)
% 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 : 
%    on met donc namesleft à 0.
%
    nameptr #4 =  namesleft #0 >  and
    {  " \emph{et~al.}" *
       #0 'namesleft := }
    'skip$
    if$
%
% NB : pour mettre 3 noms au lieu de 4, on mettra #3 
% au lieu de #4 ci-dessus.
% (fin des ajouts)
% ------------------------------   
}
  while$ 
}
composition/annexes/bibliographie/generer_l_expression_et_al_automatiquement.txt · Dernière modification: 2018/12/09 10:16 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0