как убрать пробел между инициалами авторов при использовании стиля библиографии apalike

как убрать пробел между инициалами авторов при использовании стиля библиографии apalike

Предположим, моя ссылка выглядит так, как показано ниже:

Автор, Дж. М. (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$
}

Связанный контент