três autores seguidos por "et al" na lista de referências do BibTeX

três autores seguidos por "et al" na lista de referências do BibTeX

Encontrei esta resposta para uma pergunta muito semelhante:BibTeX: Como reduzir longas listas de autores para “Firstauthor et al.”?

No entanto, a solução proposta não funcionou para mim. Tenho um estilo fornecido pela editora que, ao mesmo tempo, explica que os autores de referência devem ser truncados após o terceiro autor (seguido de et al)

no arquivo encontrei { namesleft #1 >e alterei conforme as instruções da resposta, mas não funcionou. Pode me ajudar?

{ '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$
} ```

Responder1

O OP indicou em um comentário que usa o spbasicestilo de bibliografia fornecido pela Springer.

Para obter a formatação desejada – para mostrar os nomes de todos os autores se uma entrada tiverno máximo 4autores, mas para mostrar os três primeiros autores seguidos apenas de "et al." se a entrada tivermais de 4autores - sugiro que você proceda da seguinte forma.

  • Faça uma cópia spbasic.bste chame a cópia, digamos, spbasic85.bst.

  • Abra o arquivo spbasic85.bstem um editor de texto. O programa que você usa para editar arquivos tex funcionará bem.

  • Localize a função format.names. (Na minha cópia do arquivo bst, a função começa na linha 455.)

  • Nesta função, localize as 2 linhas a seguir:

          nameptr #1 >
            {
    
  • Imediatamente após essas duas linhas e, portanto, antes da linha que diz namesleft #1 >, insira as seguintes 8 linhas de código:

              nameptr #3
              #1 + =
              numnames #4
              > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
    
  • Salve o arquivo spbasic85.bstna pasta que contém o arquivo tex principal ou em uma pasta pesquisada pelo BibTeX. Se você selecionar a última opção, certifique-se de aplicar também uma atualização adequada ao banco de dados de nomes de arquivos da sua distribuição TeX. (Se você não tem certeza de que entendeu a frase anterior, sugiro fortemente que você selecione a opção 1...)

  • Em seu arquivo tex principal, altere \bibliographystyle{spbasic}e \bibliographystyle{spbasic85}execute um ciclo completo de recompilação - LaTeX, BibTeX e LaTeX mais duas vezes - para propagar todas as alterações.


Um MWE completo:

insira a descrição da imagem aqui

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

informação relacionada