
Mi pregunta es simple: es el equivalente aesta pregunta la hice hace algún tiempo, pero ahora debo usar bibtex y no biblatex, principalmente para poder colocar fácilmente mis archivos en arXiv y tener menos dificultades para compartir mis archivos tex con otras personas. Más precisamente, quiero que las citas bajo el estilo bibtex alfa muestren la lista completa de autores. Esto no es un problema si la lista de autores de una publicación en particular contiene menos de 4 autores o menos. Sin embargo, si la lista de autores contiene más de 3 autores, la cita se trunca al apellido de los primeros tres autores y un signo "+".
Considere el ejemplo:
\documentclass[11pt]{article}
\usepackage{cite}
\begin{document}
A citation \cite{cita}.
\bibliography{trial2}{}
\bibliographystyle{alpha}
\end{document}
donde trial2.bib es el archivo .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},
}
El resultado tiene la cita "[ABC+18]". Me gustaría que la cita dijera "[ABCDE18]". Cualquier ayuda es muy apreciada.
Si es importante, estoy trabajando en TeXStudio en Windows 10, usando MikTeX.
Respuesta1
El procedimiento para generar estas etiquetas está codificado en el .bst
archivo. alpha.bst
no tiene forma de anular manualmente una etiqueta que produce, por lo que la única forma de cambiar esto sin cambiar otras cosas es modificar el .bst
archivo. Esto haría que la colaboración fuera más engorrosa porque .bst
también tendrá que distribuir el archivo modificado .
De todos modos, puedes cambiar alpha.bst
de la siguiente manera.
Ubíquelo
alpha.bst
en su máquina (puede usarlokpsewhich alpha.bst
desde la línea de comando para averiguar dónde reside el archivo); alternativamente, obtenga el archivo de CTAN:http://mirrors.ctan.org/biblio/bibtex/base/alpha.bstCopie
alpha.bst
a una ubicación donde LaTeX pueda encontrarlo (https://texfaq.org/FAQ-inst-wlcf, el directorio de documentos funcionará bien) yrebautizares, digamos,alpha-maxalphanames.bst
. Tenga en cuenta que la licenciarequierecambia el nombre del archivo si luego lo redistribuye.Abra el archivo renombrado
alpha-maxalphanames.bst
y reemplace el bloque de código.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$ }
con
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$ }
Específicamente, reemplace el primer
numnames #4 > {<true>} {<false>} if$
bloque solo por el contenido de la<false>
rama y elimine completamente el segundonumnames #4 > {<true>} {<false>} if$
bloque.Agregue una breve nota sobre los cambios con su nombre y la fecha actual en la parte superior del archivo.
Guarda el archivo.
Úselo
\bibliographystyle{alpha-maxalphanames}
en lugar de\bibliographystyle{alpha}
en su documento.
Puedes preparar el horno alpha-maxalphanames
desdehttps://gist.github.com/moewew/d802ea87f432f97fc428dbc9d54e64c1, el diff
para alpha.bst
es
--- 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 <
Con eso el siguiente 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}
produce