cómo eliminar el espacio entre las iniciales de los autores cuando se utiliza el estilo de bibliografía apalike

cómo eliminar el espacio entre las iniciales de los autores cuando se utiliza el estilo de bibliografía apalike

Supongamos que mi referencia se parece a la siguiente:

Autor, JM (2006). Comparación de modelos de abundancia de especies. Modelado ecológico, 199(2):153 – 163.

Cómo quitar espacio entre las dos iniciales del autor, para que obtenga Apellido, JM

¡Gracias!

Respuesta1

Haga una copia apalike.bsty asígnele un nombre útil como apalike-nospace.bst. Guarde esto en su texmfcarpeta local en texmf/bib/bst.

Luego cambie la format.namesfunción en el .bstarchivo. El cambio crucial está en la siguiente cadena de la función que indica bibtexcómo formatear las piezas de nombre:

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

Esto debe cambiarse a:

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

La fparte es la parte inicial y la unidad entre elementos predeterminada es un espacio. Necesitamos anular eso explícitamente usando {.}en su lugar.

Aquí está toda la función con versiones antiguas y nuevas:

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$
}

Nuevo 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$
}

información relacionada