Cambiar editores (minúsculas) a Editores (en cursiva) en estilo BibTeX similar a apalike

Cambiar editores (minúsculas) a Editores (en cursiva) en estilo BibTeX similar a apalike

Estoy tratando de hacer que BibTeX se ajuste a los estándares de una revista en particular (son bastante similares a APA). Creé un archivo .bst personalizado usando el encantador paquete custom-bib, que funcionó muy bien excepto por dos cosas.

Para un libro sin autores sino editores, mi archivo .bst produce

Cook, E. y Kariukstis, L. (editores), 1990.Métodos de Dendrocronología: Aplicaciones en las Ciencias Ambientales, Editorial académica Kluwer

pero quiero que produzca

Cook, E. y Kariukstis, L. (Editores), 1990. Métodos de dendrocronología: aplicaciones en las ciencias ambientales, Kluwer Academic Publishers

Tenga en cuenta la diferencia en (Editores) y la falta de cursiva en el título. Entiendo que esto no es reproducible sin el archivo .bst real, pero espero que alguien pueda indicarme la dirección correcta. Quizás las siguientes funciones sean relevantes. La sintaxis BST me resulta bastante ininteligible.

FUNCTION {bbl.editors}
{ "editors" }

FUNCTION {format.editors}
{editor "editor" format.names duplicate$ empty$ 'skip$
    {
      " " *
      get.bbl.editor
   "(" swap$ * ")" *
      *
    }
  if$
}

FUNCTION {format.names}
{ 'bibinfo :=
  duplicate$ empty$ 'skip$ {
  's :=
  "" 't :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { s nameptr
      "{vv~}{ll}{, jj}{, f{.}.}"
      format.name$
      bibinfo bibinfo.check
      't :=
      nameptr #1 >
        {
          namesleft #1 >
            { ", " * t * }
            {
              s nameptr "{ll}" format.name$ duplicate$ "others" =
                { 't := }
                { pop$ }
              if$
              numnames #2 >
                { "," * }
                'skip$
              if$
              t "others" =
                {
                  " " * bbl.etal *
                }
                {
                  bbl.and
                  space.word * t *
                }
              if$
            }
          if$
        }
        't
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
  } if$
}

información relacionada