%20%D0%BD%D0%B0%20%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%20(%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2)%20%D0%B2%20%D1%81%D1%82%D0%B8%D0%BB%D0%B5%20BibTeX%2C%20%D0%B0%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%BD%D0%BE%D0%BC%20apalike%20.png)
Я пытаюсь привести BibTeX в соответствие со стандартами конкретного журнала (они очень похожи на APA). Я создал пользовательский файл .bst с помощью прекрасного пакета custom-bib, который работал очень хорошо, за исключением двух вещей.
Для книги, в которой нет авторов, но есть редакторы, мой файл .bst выдает
Кук, Э. и Кариукстис, Л. (редакторы), 1990.Методы дендрохронологии: применение в науках об окружающей среде, Kluwer Academic Publishers
но я хочу, чтобы это производило
Кук, Э. и Кариукстис, Л. (Редакторы), 1990. Методы дендрохронологии: применение в науках об окружающей среде, Kluwer Academic Publishers
Обратите внимание на разницу в (редакторах) и отсутствие курсива в заголовках. Я понимаю, что это невозможно воспроизвести без фактического файла .bst, но я надеюсь, что кто-нибудь сможет указать мне правильное направление. Возможно, следующие функции имеют значение. Синтаксис BST для меня навскидку довольно непонятен.
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$
}