So bearbeiten Sie `plainnat.bst`, um das Sortieren nach Schlüssel zu vermeiden

So bearbeiten Sie `plainnat.bst`, um das Sortieren nach Schlüssel zu vermeiden

Ich verwende natbibPaket und plainnatStil für meine Zitate und Referenzen. Wenn ich verschiedene Arbeiten desselben Autors, aber verschiedener Co-Autoren zitiere, wird die Bibliografie leider nach dem Schlüssel sortiert.

Zum Beispiel:

Bildbeschreibung hier eingeben

Der Schlüssel für Ho, Meyn ist Ho2006, für Ho, Lambling ist Ho2011, und für Ho, Dreyfus ist Ho2012. LaTeX berücksichtigt sicherlich die Schlüssel vor dem zweiten Nachnamen des Autors.

Wie kann ich es lösen???

Antwort1

Wie in den Kommentaren oben zu Ihrem ursprünglichen Beitrag erwähnt, ist das MWE notwendig, damit andere herausfinden können, was Sie erreichen möchten und wie Sie es erreichen möchten. Ohne das kann ich nicht sicher sein, dass ich Ihre Frage beantworte, aber ich werde hier trotzdem einige Informationen bereitstellen, die Sie möglicherweise hilfreich finden.

Die Einträge in Ihrem Screenshot scheinen vom articleTyp zu sein. Wenn dies zutrifft, sortiert diese Artikel natbibmit wie folgt. Hinweis: Ich verwende die 2007er Version von , die zum Zeitpunkt dieser Veröffentlichung im Jahr 2022 die aktuellste ist.plainnatplainnat.bst

  1. Die presortFunktion (beginnend bei Zeile #1313) wendet die author.sortRegel (in Zeile #1326) an.

  2. Die author.sortFunktion (ab Zeile 1248) prüft zunächst, ob das authorFeld leer ist. Da Ihr Feld nicht leer ist, übergibt die Funktion Ihr authorFeld an die sort.format.namesFunktion.

  3. Ich habe unten eine Kopie der sort.format.namesFunktion (beginnend bei Zeile #1207) eingefügt, um diese Erklärung zu unterstützen. Aus Ihrem obigen Beispiel geht hervor, dass Ihre Einträge 6, 4 bzw. 7 Autoren haben, wobei Semikolons als Trennzeichen und ein Punkt als Abschluss des authorBlocks dienen. Der Code hier scheint zu funktionieren, wie Sie in Ihrem Screenshot gezeigt haben, indem er nach dem ersten Autor und dann nach dem Jahr für jeden Ihrer Einträge sortiert. Sie werden die Funktion bemerken, die sich auf das yearFeld bezieht, das ins Spiel kommt:

    a. Nach der Sortierung nach dem ersten Autor UND

    b. Es gibt mehr Autoren als „andere“ UND

    c. Es gibt insgesamt mehr als zwei Autoren UND

    d. Die Funktion befindet sich beim zweiten Autor (zweiter Durchlauf der whileSchleife)

    e. DANN nach Jahr sortieren.

Beachten Sie, dass die Sprache in der BST-Datei eine Postfix-Notation implementiert.

FUNCTION {sort.format.names}
{ 's :=
  #1 'nameptr :=
  ""
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    {
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
      nameptr #1 >
        {
          "   "  *
          namesleft #1 = t "others" = and
            { "zzzzz" * }
            { numnames #2 > nameptr #2 = and
                { "zz" * year field.or.null * "   " * }
                'skip$
              if$
              t sortify *
            }
          if$
        }
        { t sortify * }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

Ungeachtet dessen gibt es eine Antwort auf einen TeX Stack Exchange-BeitragHierbeschreibt, wie die plainnat.bstDatei angepasst werden kann, um eine Sortierung ohne Autor zu ermöglichen.

verwandte Informationen