En Bibtex, ¿cómo asegurarse de que el acrónimo de cita tenga letras para todos los autores?

En Bibtex, ¿cómo asegurarse de que el acrónimo de cita tenga letras para todos los autores?

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 .bstarchivo. alpha.bstno 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 .bstarchivo. Esto haría que la colaboración fuera más engorrosa porque .bsttambién tendrá que distribuir el archivo modificado .

De todos modos, puedes cambiar alpha.bstde la siguiente manera.

  1. Ubíquelo alpha.bsten su máquina (puede usarlo kpsewhich alpha.bstdesde 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.bst

  2. Copie alpha.bsta 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.

  3. Abra el archivo renombrado alpha-maxalphanames.bsty 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 segundo numnames #4 > {<true>} {<false>} if$ bloque.

  4. Agregue una breve nota sobre los cambios con su nombre y la fecha actual en la parte superior del archivo.

  5. Guarda el archivo.

  6. Úselo \bibliographystyle{alpha-maxalphanames}en lugar de \bibliographystyle{alpha}en su documento.

Puedes preparar el horno alpha-maxalphanamesdesdehttps://gist.github.com/moewew/d802ea87f432f97fc428dbc9d54e64c1, el diffpara alpha.bstes

--- 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

Una cita [ABCDE18].

información relacionada