natbib - natdin - Autoren im Verzeichnislimitieren

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


JohnnyB.
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Sa 11. Jan 2014, 22:57
Wohnort: Deutschland

natbib - natdin - Autoren im Verzeichnislimitieren

Beitrag von JohnnyB. »

Hallo,
ich habe folgendes Problem. Ich habe ein wunderschönes Literaturverzeichnis mit natbib und der natdin.bst. Ich möchte aber das im Literaturverzeichnis nur eine begrenzte Menge an Autoren angezeigt werden und ab dem beispielsweise 5 et al. angezeigt wird. Leider komme ich mit der bst überhaupt nicht klar.
Ich vermute, dass hier irgendwas geändert werden muss:
FUNCTION {format.names}
{ 's :=
  "" 'u  :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    {
       s nameptr "{ll}" format.name$ 't :=
       t capitalize 't :=
       s nameptr "{ jj}" format.name$ 'w :=
       s nameptr "{, ff}{ vv}{ jj}" format.name$ 'u :=
       u  text.length$  'lang :=
       #1 'zahl :=
       "" 'v :=
         {  zahl  lang  <  }
           {  u  zahl  #1  substring$  "~"  =
               {  v  ""  =
                     {  u  #1  zahl  #1  -  substring$  'v :=  }
                     'skip$
                  if$
                  v  u  zahl  #2  substring$ * "." *  w * 'v :=
                }
                'skip$
              if$
            zahl  #1  +  'zahl :=  }
      while$
      v  ""  =
         {  u  'v :=  }
         'skip$
      if$
      t  v  *  fkt  *  't :=
      nameptr #1 >
         { namesleft #1 >
             { " ; " * t * }
             { numnames #2 >
                  { " " * }
                  'skip$
               if$
               t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or
                  { ua.etal * }
                  { " ; " * t * }
               if$
               }
            if$  %% Ende der namesleft-Pruefung
          }
            't
           if$  %%  Ende der nameptr-Pruefung

      nameptr #1 + 'nameptr :=
      namesleft #1 -  'namesleft :=
    }
  while$  %%  Ende von { namesleft #0 > } ganz oben
  "" 'fkt :=  %% fkt wird zurueckgesetzt
}



FUNCTION {format.authors}
{ author empty$
    { "" }
    { author format.names }
  if$
}
Wie kann man format.names erweitern das er irgendwann die Autoren mit et al. beendet. Bzw. format.authors erklären das eine zweite Funktion aufgerufen werden soll, die das gewünschte Verhalten bewirkt.

Grüße
Johnny