kleines Problem mit et al.

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


kieselbert
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: So 24. Okt 2010, 22:37
Wohnort: Stuttgart

kleines Problem mit et al.

Beitrag von kieselbert »

Hallo Leute,

ich habe mir mithilfe von custom-bib einen Stil fürs Literaturverzeichnis erstellt und den dann nachträglich noch weiter angepasst. Eigentlich ist es so fast perfekt bis auf ein kleines Detail. Leider komme ich mit der Syntax aus den bst-files nicht so ganz klar, bisher konnte ich durch viel probieren dennoch alles zurechtbiegen wie ich es brauchte.

Derzeit hab ich es so, dass im Literaturverzeichnis maximal 3 Autoren angegeben werden. Sind es 4 oder mehr Autoren wird nur noch einer ausgegeben gefolgt von "et al.". Das klappt auch soweit, nur leider wird der Schrägstrich der normal die Autoren voneinander trennt auch zwischen den Autor und das "et al." gesetzt. Das ist mein Problem.

Bsp.:
************
Allman, M./et al., An Evaluation of TCP with Larger Initial Windows,
http://www.icir.org/mallman/papers/initwin-ccr.ps
, veröffentlicht am 01.07.1998, Seitenabruf am 11.08.2010
************

Hier der Code, der für die Formatierung zuständig ist. Der erste Slash gibt wohl die übliche Trennung zwischen den Autoren vor. Der 2. Slash ist dann die Trennung zwischen vorletztem und letztem Autor. Ja und nun müssten da irgendwie noch 1-2 Zeilen rein, damit bei et al. eben kein Slash gesetzt wird. Jemand eine Idee?
FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{vv~}{ll}{, jj}{, f{.}.}"
      format.name$
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          nameptr #1
          #1 + =
          numnames #3
          > and
            { "others" 't :=
              #1 'namesleft := }
            'skip$
          if$
          namesleft #1 >

            { "/" * t * }
            {
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$

              "/" *
              t "others" =
                {
                  * bbl.etal *
                }
                { * t * }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  } if$
}