
非常によく似た質問に対するこの回答を見つけました:BibTeX: 長い著者リストを「Firstauthor et al.」に短縮するにはどうすればよいでしょうか?
しかし、提案された解決策は私にはうまくいきませんでした。出版社から提供されたスタイルでは、参考文献の著者は3人目の著者以降を切り捨てるべきであると説明されていました(その後に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
OP はコメントで、spbasic
Springer が提供する参考文献スタイルを使用していると述べています。
望ましい書式設定を実現するには、エントリに著者名がある場合はすべての著者名を表示します。最大4著者名を記載するのではなく、エントリに「et al.」が続く最初の3人の著者のみを表示する。4以上著者 -- 次のように進めることをお勧めします。
のコピーを作成し
spbasic.bst
、そのコピーを と呼び出しますspbasic85.bst
。テキスト エディターでファイルを開きます
spbasic85.bst
。Tex ファイルの編集に使用するプログラムであれば問題ありません。関数を見つけます
format.names
。(私の bst ファイルのコピーでは、関数は 455 行目から始まります。)この関数で、次の 2 行を見つけます。
nameptr #1 > {
これらの 2 行の直後、つまり という行の前に
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 をさらに 2 回) を実行して、すべての変更を伝播します。
完全な 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}