Wie kann in Bibtex sichergestellt werden, dass das Zitat-Akronym Buchstaben für alle Autoren enthält?

Wie kann in Bibtex sichergestellt werden, dass das Zitat-Akronym Buchstaben für alle Autoren enthält?

Meine Frage ist einfach: Es ist das Äquivalent vondiese Frage habe ich vor einiger Zeit gestellt, aber jetzt muss ich Bibtex und nicht Biblatex verwenden, hauptsächlich, um meine Dateien einfach auf arXiv stellen zu können und weniger Schwierigkeiten beim Teilen meiner Tex-Dateien mit anderen Leuten zu haben. Genauer gesagt möchte ich, dass die Zitate im Bibtex-Alpha-Stil die vollständige Autorenliste anzeigen. Dies ist kein Problem, wenn die Autorenliste für die jeweilige Veröffentlichung weniger als oder gleich 4 Autoren enthält. Wenn die Autorenliste jedoch mehr als 3 Autoren enthält, wird das Zitat auf den Nachnamen der ersten drei Autoren und ein „+“-Zeichen gekürzt.

Betrachten Sie das Beispiel:

\documentclass[11pt]{article}
\usepackage{cite}

\begin{document} A citation \cite{cita}.

\bibliography{trial2}{} \bibliographystyle{alpha} \end{document}

wobei trial2.bib die BIB-Datei ist


@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},
}

Die Ausgabe enthält das Zitat „[ABC+18]“. Ich möchte, dass das Zitat „[ABCDE18]“ lautet. Jede Hilfe ist sehr willkommen.

Falls es überhaupt von Bedeutung ist: Ich arbeite an TeXStudio unter Windows 10 und verwende MikTeX.

Antwort1

Das Verfahren zum Generieren dieser Etiketten ist in der .bstDatei codiert. alpha.bstEs gibt keine Möglichkeit, ein von ihm erstelltes Etikett manuell zu überschreiben. Die einzige Möglichkeit, dies zu ändern, ohne andere Dinge zu ändern, besteht also darin, die Datei zu ändern . Dies würde die Zusammenarbeit dann umständlicher machen, da Sie Ihre geänderte Datei auch .bstverteilen müssen ..bst

Wie auch immer, Sie können alpha.bstwie folgt ändern

  1. Suchen Sie alpha.bstauf Ihrem Computer nach der Datei (Sie können sie kpsewhich alpha.bstüber die Befehlszeile ermitteln, um den Speicherort der Datei zu ermitteln) oder laden Sie sie alternativ über CTAN herunter:http://mirrors.ctan.org/biblio/bibtex/base/alpha.bst

  2. Kopieren Sie es alpha.bstan einen Ort, wo LaTeX es finden kann (https://texfaq.org/FAQ-inst-wlcf, das Dokumentverzeichnis reicht vollkommen aus) undumbenennenes zu sagen, alpha-maxalphanames.bst. Beachten Sie, dass die LizenzerfordertSie benennen die Datei um, wenn Sie sie später weitergeben.

  3. Öffnen Sie die umbenannte Datei alpha-maxalphanames.bstund ersetzen Sie den Codeblock

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

    mit

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

    Ersetzen Sie insbesondere den ersten numnames #4 > {<true>} {<false>} if$Block nur durch den Inhalt des <false>Zweigs und entfernen Sie den zweiten numnames #4 > {<true>} {<false>} if$ Block vollständig.

  4. Fügen Sie oben in der Datei eine kurze Notiz zu den Änderungen mit Ihrem Namen und dem aktuellen Datum hinzu.

  5. Speicher die Datei.

  6. Verwenden Sie in Ihrem Dokument \bibliographystyle{alpha-maxalphanames}anstelle von .\bibliographystyle{alpha}

alpha-maxalphanamesSie erhalten das ofenfertigehttps://gist.github.com/moewew/d802ea87f432f97fc428dbc9d54e64c1, das diffzu alpha.bstist

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

Damit ist folgendes 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}

produziert

Ein Zitat [ABCDE18].

verwandte Informationen