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