Мне приходится работать с пользовательским файлом .bst для статьи. Когда у меня есть ровно два автора для ссылки, эти авторы разделеныв текстс " , ".
Например (Симонян, Зиссерман, 2014). Я хочу, чтобы было (Симонян и Зиссерман, 2014).
В моей библиографии стиль правильный. Так что, нужно ли менять файл .bst?
Я думаю, вот соответствующие строки:
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
'f :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr f format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ t "others" =
{ " et~al." * }
{ ", " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ "{vv~}{ll}{, jj}{, f.}" author format.names }
if$
}
решение1
Соответствующий макрос — format.lab.names.abbr
. Для «и» он должен читаться так:
FUNCTION {format.lab.names.abbr}
{ 's :=
s num.names$ 'numnames :=
numnames #1 >
{ numnames #2 >
{ s #1 "{vv~}{ll}" format.name$ " et al." * }
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ s #1 "{vv~}{ll}" format.name$ " et al." * }
{ s #1 "{vv~}{ll}" format.name$ " and " *
s #2 "{vv~}{ll}" format.name$ *
}
if$
}
if$
}
{ s #1 "{vv~}{ll}" format.name$ }
if$
}
изменение находится во второй ветви самого внутреннего условного оператора. Версия, isprs.bst
доступная в настоящее время наhttp://www.isprs.org/documents/orangebook/app5.aspxимеет
s #1 "{vv~}{ll}" format.name$ " , " * % replaced and with ,
там и мы заставляем это читать
s #1 "{vv~}{ll}" format.name$ " and " *
Еще раз. Обратите внимание на их комментарий и на фиктивный пробел перед запятой.
Конечно, вы все равно должны сообщить об этой проблеме сопровождающему шаблона и не должны изменять файл .bst
напрямую. Только изменить и переименовать копию, isprs-and.bst
скажем, и задокументировать изменения.