Diverse Feinanpassungen für Biblatex Literaturverzeichnis

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


Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Diverse Feinanpassungen für Biblatex Literaturverzeichnis

Beitrag von Tassadar »

Hi Leute,

ich habe jetzt fast den ganzen Tag damit verbracht mein Literaturverzeichnis umzudefinieren um diesen nervigen Vorgaben der Uni zu entsprechen.

Habe zwar viel erreicht, aber an den letzten Punkten verzweifel ich einfach, finde nichts und wäre für Hilfe mega dankbar!

Im Endeffekt geht es darum, dass der Literaturverzeichniseintrag in dem Minimalbeispiel wie folgt angezeigt werden soll:

Nachname, Initialen. (Jahr). Titel des Kapitels oder Beitrags. In Initial(en).
Nachname (Hrsg.), Titel des Herausgeberwerks (S. Seitenzahlen). Erscheinungsort: Verlag.

Was also geändert werden müsste ist folgendes:
- kein Doppelpunkt nach "In"
- kein "," nach dem Booktitle
- Seitenzahlen in Klammern

Ich wäre sososo dankbar für Hilfe!
\documentclass[
paper=A4, 
11pt, 
headings=big, 
listof=leveldown, 
listof=numbered, 
numbers=noenddot, 
bibliography=totoc
]{scrartcl}




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%			Bibliography Formatierungen     %%%%%%%%%%%%%%%%%%%%
% Bibliography Formatierungen

\usepackage[
	backend = biber,
	style = authoryear,
	sorting = nyt,
	doi = true,
	url = false,
	isbn = false,
	eprint = false
	]{biblatex}
    
%%%%%%%%%%%%%%%%%%%%			Formatierungen für Verzeichnis  %%%%%%%%%%%%%%%%%%%%
% "&" statt "und" verwenden
\AtBeginBibliography{%
	\renewcommand{\finalnamedelim}{\addspace\&\space}}

% immer "Nachname, V."
\DeclareNameFormat{sortname}{%
	\usebibmacro{name:last-first}
	{\namepartfamily}
	{\namepartgiveni}
	{\namepartprefix}
	{\namepartsuffix}%
}%

% Herausgeber als "V. Nachname"
\DeclareNameFormat{first-last}{%
	\usebibmacro{name:first-last}
	{\namepartfamily}
	{\namepartgiveni}
	{\namepartprefix}
	{\namepartsuffix}%
}%
\DeclareNameAlias{editor}{first-last}

% keine " " um Titel und für Bücher kursiv
\DeclareFieldFormat[article]{title}{#1\isdot}
\DeclareFieldFormat[book]{title}{\textit{#1}\isdot}
\DeclareFieldFormat[incollection]{title}{#1\isdot}

% keine "S." bei Seitenangabe
\DeclareFieldFormat[article]{pages}{#1}

% kein "In:" vor Journal (eventuell löscht es auch andere "In")
\renewbibmacro{in:}{%
	\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}


% Komma zwischen Journal und Volume
\renewbibmacro*{journal+issuetitle}{% 
	\usebibmacro{journal}% 
	\setunit*{\addcomma\addspace}%<--da 
	\iffieldundef{series} 
	{} 
	{\newunit 
		\printfield{series}% 
		\setunit{\addspace}}% 
	\usebibmacro{volume+number+eid}% 
	\setunit{\addspace}% 
	\usebibmacro{issue+date}% 
	\setunit{\addcolon\space}% 
	\usebibmacro{issue}% 
	\newunit}



\DefineBibliographyStrings{ngerman}{andothers={et \addabbrvspace al\adddot},editor = {(Hrsg.),},editors = {(Hrsg.),}}


\DeclareBibliographyDriver{incollection}{%
	\usebibmacro{bibindex}%
	\usebibmacro{begentry}%
	\usebibmacro{author/translator+others}%
	\setunit{\labelnamepunct}\newblock
	\usebibmacro{title}%
	\newunit
	\printlist{language}%
	\newunit\newblock
	\usebibmacro{byauthor}%
	\newunit\newblock
	\usebibmacro{in:}%
	\begingroup % NEU
	\renewbibmacro*{date+extrayear}{} % NEU
	\usebibmacro{editor+others} % NEU
	\setunit{\addcolon\space} % NEU
	\endgroup % NEU
	\usebibmacro{maintitle+booktitle}%
	\newunit\newblock
	% \usebibmacro{byeditor+others}% NEU
	% \newunit\newblock % NEU
	\printfield{edition}%
	\newunit
	\iffieldundef{maintitle}
	{\printfield{volume}%
		\printfield{part}}
	{}%
	\newunit
	\printfield{volumes}%
	\newunit\newblock
	\usebibmacro{series+number}%
	\newunit\newblock
	\printfield{note}%
	\newunit\newblock
	\usebibmacro{chapter+pages}%
	\newunit\newblock
	\usebibmacro{publisher+location+date}%
	\newunit\newblock
	\iftoggle{bbx:isbn}
	{\printfield{isbn}}
	{}%
	\newunit\newblock
	\usebibmacro{doi+eprint+url}%
	\newunit\newblock
	\usebibmacro{addendum+pubstate}%
	\newunit\newblock
	\usebibmacro{pageref}%
	\usebibmacro{finentry}}
\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
	\ifboolexpr{
		test \ifuseeditor
		and
		not test {\ifnameundef{editor}}
	}%
	{\printnames{editor}%
		\setunit{\space}%
		\usebibmacro{bbx:savehash}
		\usebibmacro{#1}%
		\clearname{editor}%
		\setunit{\addspace}
	}%
	{\global\undef\bbx@lasthash
		\usebibmacro{labeltitle}%
		\setunit*{\addspace}
	}%
	\usebibmacro{date+extrayear}
}
\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\addbibresource{LitDaten.bib} 
\usepackage{filecontents}   
\begin{filecontents}{LitDaten.bib} 
@incollection{Kruger1980,
address = {T{\"{u}}bingen},
author = {Kr{\"{u}}ger, Hans-Peter},
booktitle = {Klinische Psychologie und Psychotherapie},
editor = {Schulz, Wolfgang},
file = {:C$\backslash$:/Users/Julian/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/Kr{\"{u}}ger - 1968 - Selbst- und Fremdbeurteilung in Diagnostik und Psychotherapie.pdf:pdf},
pages = {339--350},
publisher = {DGVT},
title = {{Selbst- und Fremdbeurteilung in Diagnostik und Psychotherapie}},
year = {1980}
} 
\end{filecontents} 

%Verlinkungen in der PDF
\usepackage[breaklinks=true, linkbordercolor={1 1 1}, citebordercolor={1 1 1}, urlbordercolor={1 1 1}]{hyperref}	
\usepackage[ngerman]{babel}		% Spracheinstellung
\usepackage[utf8]{inputenc}		% deutsche Umlaute
\usepackage[T1]{fontenc}		% Trennung bei deutschen Umlauten
\usepackage[babel,german=quotes]{csquotes}

\begin{document}

\parencite{Kruger1980} \\
\printbibliography

\end{document}


Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Beitrag von Tassadar »

Ok, Problem 3 ist gelöst durch folgenden einfachen Code:
\DeclareFieldFormat[incollection]{pages}{(S. #1)}
Ist vielleicht nicht die schöne/korrekte Art es zu machen, aber es Funktioniert.

Bleiben noch zwei Probleme.
Ich bin nach wie vor dankbar für Hilfe!

Gast

Beitrag von Gast »

Probier es mal mit
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
   backend = biber,
   style = authoryear,
   giveninits = true,
   url = false,
   isbn = false,
   eprint = false
   ]{biblatex}
   
\AtBeginBibliography{%
   \renewcommand{\finalnamedelim}{\addspace\&\space}}

\DeclareNameAlias{sortname}{family-given}

\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[book]{title}{\textit{#1}\isdot}% geht auch so, ist dann zwar \emph, aber das kann auch Vorteile haben
\DeclareFieldFormat[incollection]{title}{#1\isdot}

\DeclareFieldFormat[article]{pages}{#1}

\renewcommand*{\intitlepunct}{\addspace}

\renewbibmacro{in:}{%
   \ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}

% Komma zwischen Journal und Volume
\renewbibmacro*{journal+issuetitle}{%
   \usebibmacro{journal}%
   \setunit*{\addcomma\addspace}%<--da
   \iffieldundef{series}
   {}
   {\newunit
      \printfield{series}%
      \setunit{\addspace}}%
   \usebibmacro{volume+number+eid}%
   \setunit{\addspace}%
   \usebibmacro{issue+date}%
   \setunit{\addcolon\space}%
   \usebibmacro{issue}%
   \newunit}

\DefineBibliographyStrings{ngerman}{andothers={et \addabbrvspace al\adddot}}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{in:editor+others} % NEU
  \setunit{\addcomma\space}\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \setunit{\addspace}%
  \usebibmacro{in:chapter+pages}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{editortypedelim}{\addspace}

% wird in der kommenden Version 3.8 nicht mehr benötigt
% BEGIN
\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\usebibmacro{bbx:dashcheck}
       {\bibnamedash}
       {\printnames{editor}%
        \setunit{\printdelim{editortypedelim}}%
        \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\printdelim{nameyeardelim}}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\printdelim{nonameyeardelim}}}%
  \usebibmacro{date+extrayear}}
\makeatother
% STOP

\newbibmacro*{in:editor+others}{%
  \ifnameundef{editor}
    {}
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{editor+othersstrg}%
     \clearname{editor}}}

\newbibmacro*{in:chapter+pages}{%
  \ifboolexpr{not test {\iffieldundef{chapter}} or not test {\iffieldundef{pages}}}
    {\printtext[parens]{%
       \printfield{chapter}%
       \setunit{\bibpagespunct}%
       \printfield{pages}}}
    {}%
  \newunit} 


\addbibresource{LitDaten.bib}
\usepackage{filecontents}  
\begin{filecontents}{LitDaten.bib}
@incollection{Kruger1980,
address = {T{\"{u}}bingen},
author = {Kr{\"{u}}ger, Hans-Peter},
booktitle = {Klinische Psychologie und Psychotherapie},
editor = {Schulz, Wolfgang},
pages = {339--350},
publisher = {DGVT},
title = {Selbst- und Fremdbeurteilung in Diagnostik und Psychotherapie},
year = {1980}
}
\end{filecontents}

%Verlinkungen in der PDF
\usepackage[breaklinks=true, linkbordercolor={1 1 1}, citebordercolor={1 1 1}, urlbordercolor={1 1 1}]{hyperref}  
\usepackage[ngerman]{babel}      % Spracheinstellung
\usepackage[utf8]{inputenc}      % deutsche Umlaute
\usepackage[T1]{fontenc}      % Trennung bei deutschen Umlauten
\usepackage[babel,german=quotes]{csquotes}

\begin{document}
\parencite{Kruger1980}
\printbibliography
\end{document}
Ich habe auch einen Teil des schon vorhandenen Codes behutsam angepasst, sieh es Dir mal an.

Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Beitrag von Tassadar »

Erstmal vielen vielen vielen Dank!!!

Bzgl. deiner Änderungen:
\DeclareNameFormat{first-last}{%
	\usebibmacro{name:first-last}
	{\namepartfamily}
	{\namepartgiveni}
	{\namepartprefix}
	{\namepartsuffix}%
}%
\DeclareNameAlias{editor}{first-last}
hattest du rausgenommen, brauche ich aber, da der Herausgeber im Stil V. Nachname dargestellt werden soll.
In Anlehnung an deine Änderung ist aber natürlich das hier viel schöner:
\DeclareNameAlias{editor}{given-family}
\renewcommand*{\intitlepunct}{\addspace}
führt bei mir dazu, dass dann nach dem "In" ein Space zuviel ist. Habe es daher abgeändert zu:
\renewcommand*{\intitlepunct}{}

Habe versucht die anderen Änderungen bei mir einzubauen, aber wenn ich deine Lösung einfach auf meine draufkopiere zerschießt er mir an irgendeiner Stelle irgendwas...

Kannst du nochmal kurz hervorheben, was die entscheidenden Punkte sind um das Komma hinter dem Booktitle wegzubekommen?
Dann versuche ich das für mich anzupassen.

Vielen vielen Dank aber auf jeden Fall!!!

Gast

Beitrag von Gast »

Tassadar hat geschrieben:
\DeclareNameFormat{first-last}{%
	\usebibmacro{name:first-last}
	{\namepartfamily}
	{\namepartgiveni}
	{\namepartprefix}
	{\namepartsuffix}%
}%
\DeclareNameAlias{editor}{first-last}
hattest du rausgenommen, brauche ich aber, da der Herausgeber im Stil V. Nachname dargestellt werden soll.

In Anlehnung an deine Änderung ist aber natürlich das hier viel schöner:
\DeclareNameAlias{editor}{given-family}
Hupps, da habe ich mich vertan. Ich würde dann
\DeclareNameAlias{default}{given-family}
empfehlen. Oder, wenn es wirklich nur der editor sein soll, eben \DeclareNameAlias{editor}{given-family}.
Tassadar hat geschrieben:
\renewcommand*{\intitlepunct}{\addspace}
führt bei mir dazu, dass dann nach dem "In" ein Space zuviel ist. Habe es daher abgeändert zu:
\renewcommand*{\intitlepunct}{}
Das liegt daran, dass der Code
   \begingroup % NEU
   \renewbibmacro*{date+extrayear}{} % NEU
   \usebibmacro{editor+others} % NEU
   \setunit{\addcolon\space} % NEU
   \endgroup % NEU
ungewollte Leerzeichen erzeugt. Du musst die % direkt nach der schließenden Klammer haben, sonst wird ein Leerzeichen erzeugt. Siehe https://tex.stackexchange.com/q/7453/
Habe versucht die anderen Änderungen bei mir einzubauen, aber wenn ich deine Lösung einfach auf meine draufkopiere zerschießt er mir an irgendeiner Stelle irgendwas...

Kannst du nochmal kurz hervorheben, was die entscheidenden Punkte sind um das Komma hinter dem Booktitle wegzubekommen?
Dann versuche ich das für mich anzupassen.
Ich war davon ausgegangen, dass der gezeigte Code Deine Änderungen an biblatex vollständig abbildet. Dann ist mein Code - zumindest meiner Meinung nach - so auf jeden Fall vorzuziehen. Was genau geht denn kaputt und was hast Du sonst noch in Deinem Dokument an Modifikationen für biblatex?

Das Komma wird mit
\setunit{\addspace}%
  \usebibmacro{in:chapter+pages}%
statt
\newunit\newblock
  \usebibmacro{in:chapter+pages}%
oder gar
\newunit\newblock
  \usebibmacro{chapter+pages}%
zu einem Leerzeichen, wenn die Seitenzahl folgt.

Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Beitrag von Tassadar »

Habe alle Fehler gefunden. Lag daran, dass ich in der Zwischenzeit selber versucht hatte die Probleme zu lösen und es manchmal Kollisionen gab.
Waren zwei drei Kleinigkeiten und hatte vor allem übersehen das
\DefineBibliographyStrings{ngerman}{andothers={et \addabbrvspace al\adddot}}
In der gekürzten Fassung zu übernehmen.

Mega gut! Vielen, vielen Dank!!!

Jetzt müsste ich es nur noch umfassend verstehen. :D

Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Beitrag von Tassadar »

Achso eine Sache wäre doch noch...

Ich musste das folgende auskommentieren
	{\usebibmacro{bbx:dashcheck} 
	{\bibnamedash} 
Da ich sonst eine Fehlermeldung bekomme:

File ended while scanning use of \@argdef.

Aber scheint zumindest vom Ergebnis her bei mir kein Problem zu machen.
Wofür wären die Zeilen gedacht?[/code]

Gast

Beitrag von Gast »

Mhhh, das kann ich nicht ganz nachvollziehen. Bei mir trat das Problem nicht auf. Auch mit Overleaf bekomme ich das Problem nicht, wenn ich auf "Öffne in Overleaf" klicke.

Der Code ist dazu da, die dashed-Funktion auszuführen. Dabei wird der Autorenname durch einen Strich ersetzt, wenn er in der Bibliographie ein zweites Mal auftritt. Wenn Du die zwei genannten Zeilen entfernst, dann bekommst Du diesen Strich nie. (Was aber mit dashed=false als Option besser erreicht wird.)

Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Beitrag von Tassadar »

Gut, dass wir drüber sprechen. ^^

Dann liegt es nämlich daran, dass ich dieses "Problem" in der Zwischenzeit selbst angegangen bin, da ich nicht möchte, dass er die Autoren durch Striche ersetzt.

Ich hatte es so gemacht:
%\makeatletter
%\newbibmacro*{bbx:dashcheck}[2]{#2}
%\makeatother
Aber auch hier ist deine Lösung mit
dashed = false
natürlich klar zu bevorzugen.

Dann bleibt mir wohl nur nochmal ein abschließendes

Vielen, vielen Dank!!!

Antworten