Предположим, моя ссылка выглядит так, как показано ниже:
Автор, Дж. М. (2006). Сравнение моделей численности видов. Экологическое моделирование, 199(2):153–163.
Как убрать пробел между двумя инициалами автора, чтобы получилось Last, JM
Спасибо!
решение1
Сделайте копию apalike.bst
и назовите ее как-нибудь удобно, например apalike-nospace.bst
. Сохраните это в локальной texmf
папке в texmf/bib/bst
.
Затем измените format.names
функцию в .bst
файле. Решающее изменение находится в следующей строке в функции, которая сообщает, bibtex
как форматировать части имени:
"{vv~}{ll}{, jj}{, f.}"
Это необходимо изменить на:
"{vv~}{ll}{, jj}{, f{.}.}"
Часть f
— это инициалы, а межэлементная единица по умолчанию — пробел. Нам нужно явно переопределить это, используя {.}
вместо этого .
Вот вся функция со старой и новой версиями:
Исходный код:
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$
}
Новый код
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$
}