Biblatex + IEEE + autocites: Sortierung der Zitate?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Biblatex + IEEE + autocites: Sortierung der Zitate?

Re: Biblatex + IEEE + autocites: Sortierung der Zitate?

von Fenrix » Sa 16. Okt 2021, 18:11

Vielen Dank, funktioniert perfekt :)

Re: Biblatex + IEEE + autocites: Sortierung der Zitate?

von MoeWe » Fr 15. Okt 2021, 17:48

Standardmäßig kann biblatex Multicite-Befehle wie \autocites, \cites, \parencites etc. nicht sortieren. (Korrekter wäre: biblatex kann innerhalb von geschweiften Klammern, aber nicht über geschweifte Klammern hinweg sortieren.)

Wenn Du die optionalen Argument nicht brauchst, ist es möglich

\autocite{sigfridsson,worman}

statt

\autocites{sigfridsson}{worman}

zu schreiben. Dann funktioniert auch die Sortierung wie gewünscht.

Das kann man mit etwas gehacke in bestimmten Fällen umgehen. Siehe z.B. https://tex.stackexchange.com/q/65809/35864.

Wenn Du echten IEEE-Stil willst, der für Mehrfachzitate verlangt, dass jede Quelle in ihren eigenen Klammern steht, dann probiers mit.

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[
  backend=biber,
  style=ieee,
  autocite=plain,
]{biblatex}

\makeatletter

% original definition of \cites
\DeclareMultiCiteCommand{\cbx@cites}{\cite}{\multicitedelim}

% new definition
\DeclareMultiCiteCommand{\cites}[\cbx@cite@wrapper\cbx@cites]{\cbx@cite}{}

% first pass saves keys, prenotes, postnotes
\DeclareCiteCommand{\cbx@cite}
  {\csxdef{prenote:\thefield{entrykey}}{\thefield{prenote}}}
  {\listxadd\cbx@savekeys{\thefield{entrykey}}}
  {}
  {\csxdef{postnote:\thefield{entrykey}}{\thefield{postnote}}}

% second pass outputs sorted citation list
\newrobustcmd{\cbx@cite@wrapper}[2]{%
  \def\cbx@savekeys{}%
  \def\cbx@citecall{#1}%
  #2\cbx@sortkeysinit\cbx@citesort\cbx@citecall}

% internal list of saved keys => sorted argument list
\def\cbx@citesort{%
  \def\do##1{%
    \ifinlist{##1}{\cbx@savekeys}
      {\protected@xappto\cbx@citecall{%
         [\csuse{prenote:##1}][\csuse{postnote:##1}]{##1}}}
      {}}%
  \dolistloop{\cbx@sortkeys}}

% internal list of sorted entry keys
\def\cbx@sortkeysinit{%
  \ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
    {}
    {\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}
\def\cbx@sortkeys{}

\makeatother

\addbibresource{biblatex-examples.bib}

\begin{document}	
Erster Abschnitt \autocite{worman}.

Zweiter Abschnitt \autocite{sigfridsson}

Dritter Abschnitt \autocites{worman}{sigfridsson}

Vierter Abschnitt \autocites{sigfridsson}{worman}

Fünfter Abschnitt \autocite{sigfridsson,worman}

Sechster Abschnitt \autocite{worman,sigfridsson}

\printbibliography
\end{document}

Für den von Dir in der Frage gewünschten Stil würde ich lieber gleich numeric-comp als Basis für die Zitate nehmen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[
  backend=biber,
  style=ieee,
  citestyle=numeric-comp,
]{biblatex}

\makeatletter
% original definition of \...cites
\DeclareMultiCiteCommand{\cbx@cites}[\mkbibbrackets]{\cite}{\multicitedelim}
\DeclareMultiCiteCommand{\cbx@parencites}[\mkbibbrackets]{\parencite}{\multicitedelim}

% new definition
\DeclareMultiCiteCommand{\cites}[\cbx@cite@wrapper\cbx@cites]{\cbx@cite}{}
\DeclareMultiCiteCommand{\parencites}[\cbx@cite@wrapper\cbx@parencites]{\cbx@cite}{}

% first pass saves keys, prenotes, postnotes
\DeclareCiteCommand{\cbx@cite}
  {\csxdef{prenote:\thefield{entrykey}}{\thefield{prenote}}}
  {\listxadd\cbx@savekeys{\thefield{entrykey}}}
  {}
  {\csxdef{postnote:\thefield{entrykey}}{\thefield{postnote}}}

% second pass outputs sorted citation list
\newrobustcmd{\cbx@cite@wrapper}[2]{%
  \def\cbx@savekeys{}%
  \def\cbx@citecall{#1}%
  #2\cbx@sortkeysinit\cbx@citesort\cbx@citecall}

% internal list of saved keys => sorted argument list
\def\cbx@citesort{%
  \def\do##1{%
    \ifinlist{##1}{\cbx@savekeys}
      {\protected@xappto\cbx@citecall{%
         [\csuse{prenote:##1}][\csuse{postnote:##1}]{##1}}}
      {}}%
  \dolistloop{\cbx@sortkeys}}

% internal list of sorted entry keys
\def\cbx@sortkeysinit{%
  \ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
    {}
    {\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}
\def\cbx@sortkeys{}

\makeatother

\addbibresource{biblatex-examples.bib}

\begin{document}	
Erster Abschnitt \autocite{worman}.

Zweiter Abschnitt \autocite{sigfridsson}

Dritter Abschnitt \autocites{worman}{sigfridsson}

Vierter Abschnitt \autocites{sigfridsson}{worman}

Fünfter Abschnitt \autocite{sigfridsson,worman}

Sechster Abschnitt \autocite{worman,sigfridsson}

\printbibliography
\end{document}

Biblatex + IEEE + autocites: Sortierung der Zitate?

von Fenrix » Fr 15. Okt 2021, 14:24

Hallo zusammen, folgendes Beispiel:

\documentclass[a4paper,12pt, oneside, headsepline, listof = totocnumbered, numbers=noenddot]{scrartcl}

\usepackage{filecontents}

\begin{filecontents}{mybib.bib}
	@book{wolffMicroservicesFlexibleSoftware2017,
		title = {Microservices: {{Flexible Software Architecture}}},
		author = {Wolff, Eberhard},
		date = {2017},
		publisher = {{Addison-Wesley}},
		location = {{Boston}},
		isbn = {978-0-13-465044-9 978-0-13-460241-7},
		langid = {english},
		annotation = {OCLC: 1047861037}
	}
	
@book{richardsMicroservicesAntiPatternsPitfalls2016,
	title = {Microservices {{AntiPatterns}} and {{Pitfalls}}},
	author = {Richards, Mark and Safari, an O'Reilly Media Company},
	date = {2016},
}
\end{filecontents}

\usepackage[
backend=biber,
style=ieee,
uniquelist=minyear,
doi=false,isbn=false, url=false
]{biblatex}
\addbibresource{mybib.bib}


\begin{document}
	
Erster Abschnitt \autocite{wolffMicroservicesFlexibleSoftware2017}.

Zweiter Abschnitt \autocite{richardsMicroservicesAntiPatternsPitfalls2016}

Dritter Abschnitt \autocites{richardsMicroservicesAntiPatternsPitfalls2016}{wolffMicroservicesFlexibleSoftware2017}

\printbibliography
\end{document}

Ist es möglich autocites irgendwie beizubringen, dass Zitate automatisch sortiert werden? Also im Beispiel beim dritten Abschnitt [1, 2] statt [2, 1]. Insbesondere wenn man öfter mal aus einer Quelle zitiert und diese Quelle nachträglich weiter vorne einbaut, änders sich die Nummern der Zitate gerne mal.

Wenn man dann mehrere Quellen zitiert, steht da dann gerne sowas wie:
[5, 6, 7, 1, 8, 9] statt wie gewünscht [1, 5, 6, 7, 8, 9].

Vllt. hat da jemand einen Tipp :)


Nach oben