como remover o espaço entre as iniciais dos autores ao usar o estilo bibliográfico apalike

como remover o espaço entre as iniciais dos autores ao usar o estilo bibliográfico apalike

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.bste dê um nome útil como apalike-nospace.bst. Salve isso em sua texmfpasta local no formato texmf/bib/bst.

Em seguida, altere a format.namesfunção no .bstarquivo. A mudança crucial está na seguinte string da função que informa bibtexcomo formatar as partes do nome:

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

Isso precisa ser alterado para:

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

A fparte é 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$
}

informação relacionada