Alphabetische Sortierung - Kurztitel Thema ist als GELÖST markiert

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.


marco_polo
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: So 11. Jul 2021, 18:48

Alphabetische Sortierung - Kurztitel

Beitrag von marco_polo »

Mir wurde von einem findigen User dieses Forums ein Code-Schnipsel vorgestellt, mit dem der Kurzautor/-editor im Literaturverzeichnis aufgeführt wird. Nun musste ich nur feststellen, dass die Sortierung der Einträge im Literaturverzeichnis sich nicht an den Shortauthor/-editor orientiert, sondern an Author/Editor. Wie kann man die Sortierung gemäß der Short-... bewerkstelligen?

MWE:
\documentclass{scrartcl}
\usepackage[style=authoryear-comp,backend=biber]{biblatex} 

%das ist der Code-Teil, welcher mir zur Verfügung gestellt wurde
\makeatletter
\renewbibmacro*{author}{%
	\ifboolexpr{
		test \ifuseauthor
		and
		(not test {\ifnameundef{author}}
		or
		not test {\ifnameundef{shortauthor}})
	}
	{\ifnameundef{shortauthor}
		{\printnames{author}%
			\setunit{\printdelim{authortypedelim}}%
			\usebibmacro{authorstrg}}
		{\printnames{shortauthor}}%
		\setunit{\printdelim{nameyeardelim}}}
	{\global\undef\bbx@lasthash
		\usebibmacro{labeltitle}%
		\setunit*{\printdelim{nonameyeardelim}}}%
	\usebibmacro{date+extradate}%
	\ifnameundef{shortauthor}
	{}
	{\setunit{\addspace\textendash\space}%
		\printnames{author}%
		\setunit{\printdelim{authortypedelim}}%
		\usebibmacro{authorstrg}}}

\renewbibmacro*{bbx:editor}[1]{%
	\ifboolexpr{
		test \ifuseeditor
		and
		(not test {\ifnameundef{editor}}
		or
		not test {\ifnameundef{shorteditor}})
	}
	{\ifnameundef{shorteditor}
		{\printnames{editor}%
			\setunit{\printdelim{editortypedelim}}%
			\usebibmacro{#1}%
			\clearname{editor}}
		{\printnames{shorteditor}}% 
		\setunit{\printdelim{nameyeardelim}}}%
	{\global\undef\bbx@lasthash
		\usebibmacro{labeltitle}%
		\setunit*{\printdelim{nonameyeardelim}}}%
	\usebibmacro{date+extradate}%
	\ifnameundef{shorteditor}
	{}
	{\setunit{\addspace\textendash\space}%
		\printnames{editor}%
		\setunit{\printdelim{editortypedelim}}%
		\usebibmacro{#1}%
		\clearname{editor}}}
\makeatother
%Shortauthor/-editor (year) - Author/Editor

\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
	@book{mpfs2009,
		editor = {{Medienpaedagogischer Forschungsverbund Suedwest}},
		date = {2009},
		title = {Titel},
		shorteditor = {mpfs},
	}
	
	@author{Mister20015,
		author = {Peter Mister},
		date = {2015-08},
		title = {Titel},
	}
	
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
	
	\nocite{*}
	\printbibliography
\end{document}

MoeWe
Forum-Meister
Forum-Meister
Beiträge: 801
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Alphabetische Sortierung - Kurztitel

Beitrag von MoeWe »

Du musst das genutzte sorting template anpassen und dort die relevanten Felder an der richtigen Stelle einfügen. Die Standardsortierungen findest Du in biblatex.def (Z. 1464-1689 in v3.18b).
\documentclass{scrartcl}
\usepackage[style=authoryear-comp, backend=biber]{biblatex}

%das ist der Code-Teil, welcher mir zur Verfügung gestellt wurde
\makeatletter
\renewbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    (not test {\ifnameundef{author}}
    or
    not test {\ifnameundef{shortauthor}})
  }
  {\ifnameundef{shortauthor}
    {\printnames{author}%
      \setunit{\printdelim{authortypedelim}}%
      \usebibmacro{authorstrg}}
    {\printnames{shortauthor}}%
    \setunit{\printdelim{nameyeardelim}}}
  {\global\undef\bbx@lasthash
    \usebibmacro{labeltitle}%
    \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}%
  \ifnameundef{shortauthor}
    {}
    {\setunit{\addspace\textendash\space}%
     \printnames{author}%
     \setunit{\printdelim{authortypedelim}}%
     \usebibmacro{authorstrg}}}

\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    (not test {\ifnameundef{editor}}
    or
    not test {\ifnameundef{shorteditor}})
  }
  {\ifnameundef{shorteditor}
    {\printnames{editor}%
      \setunit{\printdelim{editortypedelim}}%
      \usebibmacro{#1}%
      \clearname{editor}}
    {\printnames{shorteditor}}%
    \setunit{\printdelim{nameyeardelim}}}%
  {\global\undef\bbx@lasthash
    \usebibmacro{labeltitle}%
    \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extradate}%
  \ifnameundef{shorteditor}
    {}
    {\setunit{\addspace\textendash\space}%
     \printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{#1}%
     \clearname{editor}}}
\makeatother
%Shortauthor/-editor (year) - Author/Editor

\DeclareSortingTemplate{nyt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{shortauthor}
    \field{author}
    \field{shorteditor}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@book{mpfs2009,
  editor      = {{Medienpaedagogischer Forschungsverbund Suedwest}},
  date        = {2009},
  title       = {Titel},
  shorteditor = {mpfs},
}
@author{Mister20015,
  author = {Peter Mister},
  date   = {2015-08},
  title  = {Titel},
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
  \nocite{*}
  \printbibliography
\end{document}

Antworten