
Я нашел этот ответ на очень похожий вопрос:BibTeX: Как сократить длинные списки авторов до «Firstauthor et al.»?
Однако предложенное решение не сработало для меня. У меня есть стиль, предоставленный издателем, который в то же время объясняет, что авторы ссылок должны быть сокращены после третьего автора (за которым следует et al)
в файле я нашел { namesleft #1 >
и изменил его, как указано в том ответе, но это не сработало. Можете ли вы мне помочь?
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}{ f{}}{ jj}"
format.name$
remove.dots
bibinfo bibinfo.check
't :=
nameptr #1 >
% {
% namesleft #1 >
nameptr #1 >
{
nameptr #3
#1 + =
numnames #5
> and
{ "others" 't :=
#1 'namesleft := }
'skip$
if$
namesleft #1 >
{ ", " * t * }
{
"," *
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
" " * bbl.etal *
}
{ " " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
} if$
} ```
решение1
Автор комментария указал, что он/она использует spbasic
стиль библиографии, предоставленный Springer.
Чтобы добиться желаемого форматирования — показать имена всех авторов, если запись имеетмаксимум 4авторов, но показывать только первых трех авторов, за которыми следует «et al.», если запись имеетбольше 4авторы, я предлагаю вам поступить следующим образом.
Сделайте копию
spbasic.bst
и назовите ее, например,spbasic85.bst
.Откройте файл
spbasic85.bst
в текстовом редакторе. Программа, которую вы используете для редактирования tex-файлов, подойдет.Найдите функцию
format.names
. (В моей копии файла bst функция начинается на строке 455.)В этой функции найдите следующие 2 строки:
nameptr #1 > {
Сразу после этих двух строк и, следовательно, перед строкой, в которой написано
namesleft #1 >
, вставьте следующие 8 строк кода:nameptr #3 #1 + = numnames #4 > and { "others" 't := #1 'namesleft := } 'skip$ if$
Сохраните файл
spbasic85.bst
либо в папке, содержащей основной файл tex, либо в папке, которую ищет BibTeX. Если вы выберете последний вариант, обязательно примените соответствующее обновление к базе данных имен файлов вашего дистрибутива TeX. (Если вы не уверены, что понимаете предыдущее предложение, я настоятельно рекомендую вам выбрать вариант 1...)В вашем основном tex-файле измените его
\bibliographystyle{spbasic}
на\bibliographystyle{spbasic85}
и выполните полный цикл перекомпиляции — LaTeX, BibTeX и еще дважды LaTeX — чтобы все изменения вступили в силу.
Полная версия MWE:
\documentclass{article}
\begin{filecontents}[overwrite]{mybib.bib}
@misc{abc,author="A and B and C",title="X",year=3000}
@misc{abcd,author="A and B and C and D",title="Y",year=3001}
@misc{abcde,author="A and B and C and D and E",title="Z",year=3002}
\end{filecontents}
\usepackage[authoryear]{natbib}
\bibliographystyle{spbasic85}
\begin{document}
\cite{abc}, \cite{abcd}, \cite{abcde}
\bibliography{mybib}
\end{document}