Suponha que minha referência seja semelhante à abaixo:
Autor, JM (2006). Comparando modelos de abundância de espécies. Modelagem Ecológica, 199(2):153 – 163.
Como retirar o espaço entre as duas iniciais do autor, para que eu obtenha Last, JM
Obrigado!
Responder1
Faça uma cópia apalike.bst
e dê um nome útil como apalike-nospace.bst
. Salve isso em sua texmf
pasta local no formato texmf/bib/bst
.
Em seguida, altere a format.names
função no .bst
arquivo. A mudança crucial está na seguinte string da função que informa bibtex
como formatar as partes do nome:
"{vv~}{ll}{, jj}{, f.}"
Isso precisa ser alterado para:
"{vv~}{ll}{, jj}{, f{.}.}"
A f
parte é a parte das iniciais e a unidade entre elementos padrão é um espaço. Precisamos substituir isso explicitamente usando {.}
em vez disso.
Aqui está toda a função com versões antigas e novas:
Código original:
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$
}
Novo Código
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$
}