So entfernen Sie Leerzeichen zwischen den Initialen des Autors, wenn Sie den apalike-Bibliografiestil verwenden

So entfernen Sie Leerzeichen zwischen den Initialen des Autors, wenn Sie den apalike-Bibliografiestil verwenden

Angenommen, meine Referenz sieht wie die folgende aus:

Autor, JM (2006). Vergleich von Artenvielfaltsmodellen. Ecological Modelling, 199(2):153 – 163.

Wie entferne ich das Leerzeichen zwischen den beiden Initialen des Autors, so dass ich Last, JM erhalte?

Danke!

Antwort1

Erstellen Sie eine Kopie von apalike.bstund geben Sie ihr einen sinnvollen Namen, z. B. apalike-nospace.bst. Speichern Sie diese in Ihrem lokalen texmfOrdner unter texmf/bib/bst.

Ändern Sie anschließend die format.namesFunktion in der .bstDatei. Die entscheidende Änderung liegt in folgendem String in der Funktion, der angibt, bibtexwie die Namensteile formatiert werden sollen:

"{vv~}{ll}{, jj}{, f.}"

Dies muss wie folgt geändert werden:

"{vv~}{ll}{, jj}{, f{.}.}"

Der fTeil ist der Initialenteil und die Standardeinheit zwischen den Elementen ist ein Leerzeichen. Wir müssen das explizit überschreiben, indem wir {.}stattdessen verwenden.

Hier die komplette Funktion mit alter und neuer Version:

Originalcode:

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=   % last name first
      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 :=
    }
  while$
}

Neuer Code

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=   % last name first
      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 :=
    }
  while$
}

verwandte Informationen