BibTeX 참고 목록에서 세 명의 저자 뒤에 "et al"이 옵니다.

BibTeX 참고 목록에서 세 명의 저자 뒤에 "et al"이 옵니다.

나는 매우 비슷한 질문에 대한 답변을 찾았습니다.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

spbasicOP는 Springer에서 제공하는 참고문헌 스타일을 사용한다는 의견을 주석에 표시했습니다 .

원하는 형식을 얻으려면 -- 항목에 다음이 있는 경우 모든 작성자의 이름을 표시합니다.최대 4개하지만 처음 세 명의 저자만 표시하려면 그 뒤에 "et al."이 붙습니다. 항목이 있는 경우4개 이상작성자 -- 다음과 같이 진행하는 것이 좋습니다.

  • 의 복사본을 만들고 spbasic.bst복사본을 호출합니다 spbasic85.bst.

  • spbasic85.bst텍스트 편집기에서 파일을 엽니다 . tex 파일을 편집하는 데 사용하는 프로그램은 괜찮을 것입니다.

  • 함수를 찾으세요 format.names. (내 bst 파일 복사본에서는 함수가 455번째 줄에서 시작됩니다.)

  • 이 함수에서 다음 두 줄을 찾습니다.

          nameptr #1 >
            {
    
  • 이 두 줄 바로 뒤, 즉 이라는 줄 앞에 namesleft #1 >다음 8줄의 코드를 삽입합니다.

              nameptr #3
              #1 + =
              numnames #4
              > and
                { "others" 't :=
                  #1 'namesleft := }
                'skip$
              if$
    
  • spbasic85.bst기본 tex 파일이 포함된 폴더나 BibTeX에서 검색한 폴더에 파일을 저장합니다 . 후자 옵션을 선택하는 경우 TeX 배포판의 파일 이름 데이터베이스에도 적절한 업데이트를 적용해야 합니다. (앞의 문장을 이해했는지 확실하지 않은 경우 옵션 1을 선택하는 것이 좋습니다...)

  • 기본 tex 파일에서 전체 재컴파일 주기(LaTeX, BibTeX 및 LaTeX를 두 번 더) \bibliographystyle{spbasic}로 변경하고 수행하여 모든 변경 사항을 전파합니다.\bibliographystyle{spbasic85}


전체 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}

관련 정보