Et Al 없음. apalike 및 natbib을 사용하는 세 명의 저자

Aug 21 2020

내가 사용 \bibliographystyle{apalike}\usepackage{natbib}함께. One et al이 아닌 One, Two, Three (1234) 가 필요합니다 . (1234) 에 대한 기본적 \citet\citep-not \citet*\citep*. 내가 사용하려고 \usepackage{biblatex}다음 이 게시물 있지만, 유사한 문제가 발생 bibhang 이미 정의 문제 . 다음 MWE를 사용하여 어떻게 할 수 있습니까?

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike}
\begin{document}
\citet{asdf}
\bibliography{asdf}
\end{document}
@article{asdf,
    title={asdf},
    author={One, One and Two, Two and Three, Three},
    journal={asdf},
    volume={1},
    number={1},
    pages={1--2},
    year={1234}
}

답변

2 moewe Aug 22 2020 at 06:21

apalike'네이티브' natbib스타일 중 하나가 아닙니다 . 의 natbib모든 natbib기능을 지원하지 않고 훨씬 오래 되었습니다 (예 : 별표 표시된 명령 \citet*및을 지원하지 않음 \citep*).

.bst파일 을 편집하여 원하는 출력을 얻을 수 있습니다 .

  1. apalike.bst컴퓨터에서 찾습니다 . kpsewhich apalike.bst명령 줄 / 터미널 에 입력하여 이를 수행 할 수 있습니다 . 또는 CTAN에서 파일 사본을 얻으십시오.http://mirrors.ctan.org/biblio/bibtex/base/apalike.bst

  2. TeX가 찾을 수있는 위치에 파일을 복사합니다. 문서 디렉토리는 괜찮습니다. 또한보십시오https://texfaq.org/FAQ-inst-wlcf

  3. 파일 이름을로 변경합니다 (파일을 수정하는 경우 apalike-three.bst라이센스에 apalike.bst따라 이름을 변경해야 함).

  4. FUNCTION {format.lab.names}(ll. 841-587)을 찾아 전체 함수 정의를 다음으로 바꿉니다.

     FUNCTION {format.lab.names}
     { 's :=
       s #1 "{vv~}{ll}" format.name$ s num.names$ duplicate$ duplicate$
       #3 >
         { pop$ pop$ " et~al." * }
         { #2 <
             'pop$ { #2 = { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                   { " et~al." * }
                   { " and " * s #2 "{vv~}{ll}" format.name$ * } if$ }
               { ", " * s #2 "{vv~}{ll}" format.name$ * s #3 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                   { " et~al." * }
                   { ", and " * s #3 "{vv~}{ll}" format.name$ * } if$}
               if$ } if$
         }
       if$
     }
    
  5. FUNCTION {calc.label}(ll. 896-912)를 찾아 전체 함수 정의를 다음으로 바꿉니다.

     FUNCTION {calc.label}
     { type$ "book" =
       type$ "inbook" = or 'author.editor.key.label { type$ "proceedings" =
             'editor.key.label                       % apalike ignores organization
             'author.key.label                       % for labeling and sorting
           if$ } if$
       "("                                                  % these three lines are
       *                                                     % for apalike, which
       year field.or.null purify$ #-1 #4 substring$          % uses all four digits
       *
       ")" *
       'label :=
     }
    

    이 변경은 natbib이름 목록의 잘못된 구문 분석 을 방지하기 위해 필요 합니다.

  6. 이름, 현재 날짜 및 변경 사항에 대한 간단한 설명이 포함 된 주석을 파일 상단에 추가합니다.

  7. 문서에서 \bibliographystyle{apalike-three}대신 사용하십시오 \bibliographystyle{apalike}.

1 ~ 5 단계의 대안으로 다음 위치에서 패치 된 파일 버전을 얻을 수 있습니다. https://gist.github.com/moewew/e3d3ed6ebc93b5e05d6394813f5ad3e5

그때

\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike-three}

\begin{filecontents}{\jobname.bib}
@article{asdf3,
  title   = {asdf},
  author  = {One, One and Two, Two and Three, Three},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf2,
  title   = {asdf},
  author  = {One, One and Two, Two},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf1,
  title   = {asdf},
  author  = {One, One},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
@article{asdf4,
  title   = {asdf},
  author  = {One, One and Two, Two and Three, Three and Four, Four},
  journal = {asdf},
  volume  = {1},
  number  = {1},
  pages   = {1--2},
  year    = {1234},
}
\end{filecontents}


\begin{document}
\citet{asdf1}

\citet{asdf2}

\citet{asdf3}

\citet{asdf4}

\bibliography{\jobname}
\end{document}

준다