Shortauthor im Lit.Verz.

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

Shortauthor im Lit.Verz.

Beitrag von Gast »

Ich würde gerne, sofern vorhanden, den Shortauthor im Literaturverzeichnis mit auflisten.
Sofern shortauthor angegeben, soll das Verzeichnis wie folgt aussehen: Shortauthor (year) – Author. Title.
Wenn kein shortauthor angegeben ist, soll das Verzeichnis wie folgt aussehen: Author (year). Title.

Daher ist shortauthor über begentry einzufügen, scheinbar keine Option. Jemand eine Idee, wie das alternativ umgesetzt werden kann.

Code: Alles auswählen

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@online{mustermann2020,
  author      = {Max Mustermann},
  shortauthor = {MM},
  title       = {Titel},
  year		  = {2020}
}
\end{filecontents*}

\usepackage[backend=biber, style=authoryear]{biblatex}


\addbibresource{\jobname.bib}

\begin{document}
	
\parencite{mustermann2020}

\printbibliography
\end{document}

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

Re: Shortauthor im Lit.Verz.

Beitrag von MoeWe »

Wie Du schon sagst, ist begentry hier nicht das Mittel der Wahl, Du musst in die Makros für author (author) und editor (bbx:editor) gehen.

Da ich keinen guten Weg gefunden habe, die gewünschte Ausgabe mit der Option dashed=true, zu kombinieren, habe ich dashed=false, gesetzt.

Code: Alles auswählen

\documentclass[ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear, dashed=false]{biblatex}

\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

\begin{filecontents*}{\jobname.bib}
@online{mustermann2020,
  author      = {Max Mustermann},
  shortauthor = {MM},
  title       = {Titel},
  year        = {2020}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
  \autocite{mustermann2020,sigfridsson}

  \printbibliography
\end{document}

Gast

Re: Shortauthor im Lit.Verz.

Beitrag von Gast »

Super, das klappt hervorragend. Dashed hab ich auch auf false, hatte das nur aufgrund des Minimalbeispiels verkürzt, an dieser Stelle wohl zu stark verkürzt. Danke


Antworten