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.bst
und geben Sie ihr einen sinnvollen Namen, z. B. apalike-nospace.bst
. Speichern Sie diese in Ihrem lokalen texmf
Ordner unter texmf/bib/bst
.
Ändern Sie anschließend die format.names
Funktion in der .bst
Datei. Die entscheidende Änderung liegt in folgendem String in der Funktion, der angibt, bibtex
wie die Namensteile formatiert werden sollen:
"{vv~}{ll}{, jj}{, f.}"
Dies muss wie folgt geändert werden:
"{vv~}{ll}{, jj}{, f{.}.}"
Der f
Teil 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$
}