
Мой вопрос прост: это эквивалентноэтот вопрос я задал некоторое время назад, но теперь я должен использовать 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]". Любая помощь будет высоко оценена.
Если это вообще имеет значение, я работаю над TeXStudio на Windows 10, используя MikTeX.
решение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}
производит