Wie kann ich die Sortierreihenfolge ändern, um Online-URL-Referenzen am Ende der Bibliografie zu platzieren?

Wie kann ich die Sortierreihenfolge ändern, um Online-URL-Referenzen am Ende der Bibliografie zu platzieren?

Ich möchte @misc-Einträgen in meiner Bibliographie weniger Gewicht verleihen, indem ich sie ans Ende hinter akademische Konferenzveröffentlichungen verschiebe. Ansonsten gefällt mir die Art und Weise, wie abbrvnat die Bibliographieeinträge präsentiert. Ich verwende auch natbib, um Nummernzitate und Komprimierungen zu erhalten.

Standardmäßig werden Zitate nach Autorennamen sortiert (was in Ordnung ist), und wenn kein Autorenname verfügbar ist, scheint es etwas anderes (Titel?) als Sortierfeld in der Bibliografie zu verwenden.

Was ist der einfachste Weg, alle @misc-Referenzen am Ende des Dokuments zu senden und dabei ihre relative Reihenfolge beizubehalten?

Ein Beispieldokument:

\documentclass[11pt]{article}
\usepackage[hyphens]{url}
\usepackage[numbers,sort&compress]{natbib}

\begin{document}

Articles: \cite{bogus, greenwade93}

Website: \cite{example}

\bibliographystyle{abbrvnat}
\bibliography{biblio}

\end{document}

\bibliographystyle{myabbrvnat}
\bibliography{biblio}

Beispielbiblio:

@misc{example,
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

@article{bogus,
  aurhor =  {Bogus Redwade},
  title = {A Bogus Article},
  year = {1993},
}

@article{greenwade93,
  author  = {George D. Greenwade},
  title   = {The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})},
  year    = {1993},
  journal = {TUGBoat},
  volume  = {14},
  number  = {3},
  pages   = {342--351}
}

In diesem Beispiel möchte ich, dass die Website an das Ende der Liste verschoben wird. Wenn es mehrere Websites gibt, sollte ihre relative Reihenfolge beibehalten werden.

Bildschirmfoto

Antwort1

Sofern Sie bereit sind, die Bibliographiedatei zu ändern, können Sie den bekannten \noopsortWorkaround verwenden (siehehttps://tex.stackexchange.com/search?q=noopsort), um die sonstigen Einträge nach dem Rest zu sortieren. Da die Sortierung nach Autor erfolgt, sollten Sie auch das Titelfeld der sonstigen Einträge in Autor ändern. Für diese Lösung müssen Sie die .bst-Datei nicht ändern.

Beispiel:

@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }

@misc{example,
  author = {{\noopsort{zzz-example}}{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

Ergebnis:

Bildbeschreibung hier eingeben

Alternativ biblatexkann es verwendet werden, ohne die Bibliographiedatei zu ändern, indem separate Referenzabschnitte nach Typ gedruckt werden. Angepasst vonhttps://tex.stackexchange.com/a/6966:

\printbibliography[nottype=misc,title={References}]
\vspace{-6mm}
\printbibliography[heading=none,type=misc]

Kleines Problem hierbei ist, dass der zweite Abschnitt der Bibliographie, auch ohne Überschrift, immer noch zusätzlichen Leerraum einführt, der entfernt werden muss (beispielsweise durch eine Verneinung vspace).

Antwort2

Ich habe einen Weg gefunden, aber dafür muss die BST-Datei bearbeitet werden. Das fühlt sich übertrieben an. Die BST-Datei scheint jedoch für die Sortierung verantwortlich zu sein.

Ich habe zunächst versucht, das zu ändern, was ich für den Schlüssel des Eintrags hielt, z. B. indem ich es @misc{foo,...}in geändert habe @misc{z-foo,...}, aber das hatte überhaupt keine Wirkung, also habe ich tiefer gegraben.

Schritt 1. Bearbeiten Sie die BST-Datei

  1. abbrvnat.bst in das Projektverzeichnis kopieren ( $ cp /usr/share/texlive/texmf-dist/bibtex/bst/natbib/abbrvnat.bst ./myabbrtnat.bst)
  2. Beachten Sie, dass oben in der Datei steht: „Werke mit identischem Autor und Jahr werden zusätzlich nach dem Zitatschlüssel sortiert, um die natürliche Reihenfolge beizubehalten.“ Abbrvnat sortiert zuerst nach Autoren. Das bedeutet wahrscheinlich, dass es mit dem Tupel sortiert: (author(s), year, key).

  3. Bearbeiten Sie die kopierte Datei:

    1. Fügen Sie im ENTRYAbschnitt nach keyein neues Feld mit dem Namen sortkeyin einer eigenen Zeile hinzu.
    2. Es gibt eine Funktion author.sort. Ich habe sie so geändert, dass sie das Feld „sortkey“ so verarbeitet, dass das Feld author überschrieben wird:

(einige Zitattypen sortieren nicht nach Autor (z. B. sortiert nach Herausgeber), daher muss dies je nach Ihrer Bibliografie möglicherweise an anderen Stellen repliziert werden)

FUNCTION {author.sort}
{ sortkey empty$
    { author empty$
      { key empty$
          { "to sort, need author or key in " cite$ * warning$
          ""
          }
          { key sortify }
    if$
      }
      { author sort.format.names }
      if$
    }
    { sortkey sortify }
  if$
}

Schritt 2. Verwenden Sie das modifizierte BST

  1. In der Haupt-Latex-Datei: ändern Sie zu\bibliographystyle{myabbrvnat}

  2. Fügen Sie für jedes Bibliografieelement, dessen Reihenfolge geändert werden muss, ein Feld sortkeymit dem neuen Wert hinzu, der zur Bestimmung der Reihenfolge verwendet werden soll.Ich stelle dem Namen des Eintrags "zz-" voran, wenn ich ihn zuletzt senden möchte.

Im Text:

...
Website: F~\cite{example-f}, E~\cite{example-e}, A~\cite{example-a}
...

Und Bibliographie:

@misc{example-a,
  sortkey = {axample}, % will go before others - starts with 'a'
  title = {{Axample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-e,
  sortkey = {zzz-example},     % send to the back. prefix with 'zzz-'
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-f,
  sortkey = {zzz-fxample},     % send to the back. prefix with 'zzz-'
  title = {{Fxample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

Produziert:

Ergebnis

verwandte Informationen