
我的問題很簡單:它相當於我前段時間問過這個問題,但現在我必須使用 bibtex 而不是 biblatex,主要是為了能夠輕鬆地將我的文件放在 arXiv 上,並且在與其他人共享我的 tex 文件時更容易。更準確地說,我希望 bibtex alpha 樣式下的引文顯示完整的作者列表。如果特定出版物的作者清單包含少於或等於 4 位作者,這不是問題。但是,如果作者清單包含 3 位以上的作者,則引文將被截斷為前三位作者的姓氏和「+」號。
考慮這個例子:
\documentclass[11pt]{article}
\usepackage{cite}
\begin{document}
A citation \cite{cita}.
\bibliography{trial2}{}
\bibliographystyle{alpha}
\end{document}
其中 Trial2.bib 是 .bib 文件
@article {cita,
AUTHOR = {Add, Abel and Bc, Bobby and Ca, Carla and De, Daniela and Edd, Emilio},
TITLE = {Article},
JOURNAL = {Some},
FJOURNAL = {Any},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1--10},
}
輸出具有引用“[ABC+18]”。我希望引用內容為“[ABCDE18]”。任何幫助深表感謝。
如果重要的話,我正在 Windows 10 上使用 MikTeX 開發 TeXStudio。
答案1
產生這些標籤的過程已編碼在.bst
文件中。alpha.bst
無法手動覆蓋它產生的標籤,因此在不更改其他內容的情況下更改此標籤的唯一方法是修改檔案.bst
。這將使協作變得更加麻煩,因為您.bst
還必須分發更改的文件。
無論如何,你可以alpha.bst
按以下方式更改
在您的電腦上找到
alpha.bst
(您可以kpsewhich alpha.bst
從命令列使用來查找檔案所在的位置),或從 CTAN 取得檔案:http://mirrors.ctan.org/biblio/bibtex/base/alpha.bst複製
alpha.bst
到 LaTeX 可以找到它的位置(https://texfaq.org/FAQ-inst-wlcf,文檔目錄就可以了)而且改名它到,比如說,alpha-maxalphanames.bst
。請注意,許可證需要如果您稍後重新分發該文件,則可以重新命名該文件。打開重命名的檔案
alpha-maxalphanames.bst
並替換程式碼區塊FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
和
FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames 'namesleft := #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
numnames #4 > {<true>} {<false>} if$
具體來說,僅用分支的內容取代第一個區塊<false>
,並完全刪除第二個numnames #4 > {<true>} {<false>} if$
區塊。在文件頂部添加有關更改的簡短註釋,其中包含您的姓名和當前日期。
儲存文件。
在文件中使用
\bibliographystyle{alpha-maxalphanames}
而不是。\bibliographystyle{alpha}
alpha-maxalphanames
您可以從以下位置準備烤箱:https://gist.github.com/moewew/d802ea87f432f97fc428dbc9d54e64c1,diff
到alpha.bst
是
--- alpha.bst 2019-12-21 08:15:40.781232500 +0100
+++ alpha-maxalphanames.bst 2019-12-21 08:19:48.505159500 +0100
@@ -1,3 +1,14 @@
+%% alpha-maxalphanames.bst
+%% 2019-12-21 MW
+%% https://tex.stackexchange.com/q/521246/35864
+%% modification of alpha.bst
+%%
+%% small change to format.lab.names:
+%% always set numnames 'namesleft :=
+%% remove both numnames #4 > tests
+%%
+%% original copyright header follows
+%%
% BibTeX standard bibliography style `alpha'
% Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later.
% Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
@@ -935,10 +946,7 @@
{ 's :=
s num.names$ 'numnames :=
numnames #1 >
- { numnames #4 >
- { #3 'namesleft := }
- { numnames 'namesleft := }
- if$
+ { numnames 'namesleft :=
#1 'nameptr :=
""
{ namesleft #0 > }
@@ -956,12 +964,6 @@
namesleft #1 - 'namesleft :=
}
while$
- numnames #4 >
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- 'skip$
- if$
}
{ s #1 "{v{}}{l{}}" format.name$
duplicate$ text.length$ #2 <
有了以下 MWE
\documentclass[11pt]{article}
\usepackage{cite}
\begin{filecontents}{\jobname.bib}
@article {cita,
AUTHOR = {Add, Abel and Bc, Bobby and Ca, Carla and De, Daniela and Edd, Emilio},
TITLE = {Article},
JOURNAL = {Some},
FJOURNAL = {Any},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1--10},
}
\end{filecontents}
\begin{document}
A citation \cite{cita}.
\bibliography{\jobname}
\bibliographystyle{alpha-maxalphanames}
\end{document}
產生