Feinanpassungen für Literaturverzeichnis mit BibLaTeX

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

Feinanpassungen für Literaturverzeichnis mit BibLaTeX

Beitrag von Tassadar »

Hallo alle zusammen,

ich habe vor einiger Zeit eine Vorlage zusammengebastelt die die ganzen Vorgaben meiner Uni erfüllt.
Jetzt bin ich gerade an einer neuen Arbeit dran und stolpere über neue Punkte bei denen ich über Hilfe sehr dankbar wäre!

Konkret geht es um folgende zwei Punkte:

1) Ich möchte einen Bericht vom Statistischen Bundesamt einbinden. Die Vorgabe der Uni dafür sieht wie folgt aus:
Autor. (Jahr). Titel (Monat Jahr). Ort: Institution.

Als Typ für den Bericht habe ich Report verwendet. Bei mir sieht der Eintrag im Verzeichnis dann aber so aus:

Autor (Jahr). Titel. Ort: Institution.

Dass nach dem Autor kein . kommt liegt wohl daran, dass ich Statistisches Bundesamt als Nachnamen verwendet habe. Ansonsten fängt er an Bundesamt, S. zu machen...

2) Wenn ich aus einem Reader der Uni zitieren will ist die Vorgabe wie bei einem Buch, nur dass man es zusätzlich mit [Reader] versehen soll.

Autor. (Jahr). Titel (Auflage) [Reader]. Ort: Verlag

Sinnvollerweise müsste ich hier ja einen anderen Typ verwenden. Gibt es da einen Typ der für sowas gedacht ist?

Hier mal der Code den ich bisher verwendet habe:
\documentclass[
paper=A4, 
11pt, 
headings=big, 
listof=leveldown, 
listof=numbered, 
numbers=noenddot, 
bibliography=totoc
]{scrartcl}


% Bibliography Formatierungen

\usepackage[
	backend = biber, 	
	style = authoryear, 	
	giveninits = true, 	
	uniquename = init, 	
	dashed = false, 	
	sorting = nyt, 
	doi = true, 
	url = false,  
	isbn = false, 		
	eprint = false	
	]{biblatex}

% Formatierungen für Intext      

% Bei Parencite "&" statt "und" verwenden	
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\renewcommand*{\finalnamedelim}{\addspace\&\space}% 
	\usebibmacro{prenote}}% 
	{\usebibmacro{citeindex}% 
	\usebibmacro{cite}} 
	{\multicitedelim} 
	{\usebibmacro{postnote}}

% Bei Parencite ein "," zwischen Names und Year
\renewcommand*{\nameyeardelim}{\addcomma\space}

% Formatierungen für Verzeichnis 

% "&" statt "und" verwenden
\AtBeginBibliography{%
	\renewcommand{\finalnamedelim}{\addspace\&\space}}

% immer "Nachname, V."
\DeclareNameAlias{sortname}{family-given} 

% Herausgeber als "V. Nachname"
\DeclareNameAlias{editor}{given-family}

% keine " " um Titel
\DeclareFieldFormat[article]{title}{#1\isdot}
\DeclareFieldFormat[incollection]{title}{#1\isdot}

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

% kein "In:" vor Journal
\renewbibmacro{in:}{%
	\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}

% kein ":" nach "In" bei incollection
\renewcommand*{\intitlepunct}{\addspace}

% 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 \addabbrvspaceal\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}% 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}%
	\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} 


\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
	\ifboolexpr{
		test \ifuseeditor
		and
		not test {\ifnameundef{editor}}
	}
		
	{\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


\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} 
@report{Bundesamt2016,
abstract = {S. 25 Bildungsabschl{\"{u}}sse Ausl{\"{a}}nder},
address = {Wiesbaden},
author = {{Statistisches Bundesamt}},
file = {:C$\backslash$:/Users/Julian/Desktop/Anna Uni/Expra/Literatur/BildungsstandBevoelkerung5210002167004.pdf:pdf},
institution = {Statistisches Bundesamt},
keywords = {Abschluss,Schulart,Schulbesuch,Staatsangeh{\"{o}}rigkeit},
title = {{Bildungsstand der Bev{\"{o}}lkerung}},
year = {2016},
month = {November}
}
\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}
\usepackage{blindtext}			% Blindtext
\usepackage{graphicx}			% Grafiken
\usepackage{pgfplots}			% Plots erstellen
\usepackage{siunitx}			% SI-Einheiten
\usepackage{multirow}			% Zellen in Tabellen verschmelzen
\usepackage{paralist}			% kompakte Aufzählungen



\usepackage{color,soul}			
\sethlcolor{white}
\usepackage{xcolor}			

\begin{document}
	\parencite{Bundesamt2016}
	\printbibliography[title=Literaturverzeichnis]
	
\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Nach \addabbrvspace fehlt ein Leerzeichen.

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

Beitrag von Tassadar »

Bartman hat geschrieben:Nach \addabbrvspace fehlt ein Leerzeichen.
Nicht die Antwort auf meine Frage, aber natürlich trotzdem richtig.
Danke!

Gast

Beitrag von Gast »

Ich habe Deinen Code ein klein wenig an neuere biblatex-Versionen angepasst (getestet mit 3.10, sollte für >= 3.8 funktionieren). Die Änderungen sind kommentiert, dazu habe ich Deine Kommentare entfernt, damit es keine Verwirrung gibt.

Muss den das Veröffentlichungsdatum bei Berichten immer hinter den Titel, oder nur wenn es eh schon fast zum Titel gehört?

Ein @report hat in biblatex keine Auflage. Aber
Autor. (Jahr). Titel [Reader]. Ort: Verlag
wäre ohne Probleme möglich.

Zunächst kann ich
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
  backend = biber,    
  style = authoryear,  
  mergedate = basic, % vom Konzept wäre das am schönsten
  giveninits = true,    
  uniquename = init,    
  dashed = false,    
%  sorting = nyt,% das ist die Voreinstellung bei style=authoryear
%  doi = true,% ebenfalls Standard
  url = false,  
  isbn = false,      
  eprint = false  
  ]{biblatex}


% "&" statt "und" verwenden
% geht nun etwas einfacher
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% mit dieser Einstellung werden alle "und"s in Namenlisten zu "&"
% ist das anders geplant, kann das über das optionale Argument gesteuert werden.
% nur für \parencite: \DeclareDelimFormat[parencite]{finalnamedelim}{\addspace\&\space}
%nur für Verzeichnis: \DeclareDelimFormat[bib,biblist]{finalnamedelim}{\addspace\&\space}

% Bei Parencite ein "," zwischen Names und Year
% s.o. eventuell auch nur \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% je nach dem, was für \cite gewüscht ist.
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% sorgt für den Punkt hinter dem Autorennamen im Verzeichnis
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}


\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{editor}{given-family}

%\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[incollection]{title}{#1\isdot}
% Wirklich alle " in Titeln werden wie folgt unterdrückt
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

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

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

\renewcommand*{\intitlepunct}{\addspace}

\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}% 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}%
  \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}}

% @report-Typ in eckigen Klammern, z.B. [Reader]
\DeclareFieldFormat[report]{type}{\mkbibbrackets{#1}}
\DeclareBibliographyDriver{report}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \setunit{\addspace}%
  \printfield{type}%
  \setunit*{\addspace}%
  \printfield{number}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{institution+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isrn}}
    {}%
  \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}


% Der Block, der hier war, kann ersatzlos gestrichen werden,
% seit 3.8 ist er Standard.
% Im gezeigten Code fehlte der Teil, der es ermöglicht,
% denselben Namen im Literaturverzeichnis durch einen --
% zu ersetzen. Das geht nun wieder. Ist das nicht erwünscht,
% verschafft die Option dashed=false Abhilfe. 


\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}
@report{Bundesamt2016,
  abstract    = {S. 25 Bildungsabschlüsse Ausländer},
  address     = {Wiesbaden},
  author      = {{Statistisches Bundesamt}},
  institution = {Statistisches Bundesamt},
  keywords    = {Abschluss,Schulart,Schulbesuch,Staatsangehörigkeit},
  title       = {Bildungsstand der Bevölkerung},
  date        = {2016-11},% date ist besser als year und month
  url         = {https://www.destatis.de/GPStatistik/receive/DEHeft_heft_00057188},
}
@report{unireader,
  address     = {London},
  author      = {Anne Elk},
  institution = {University of Monthy},
  title       = {University Reader},
  type        = {Reader},
  date        = {2016},
  url         = {https://www.example.edu/~elk/reader.pdf},
}
\end{filecontents}
   
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}

\usepackage{hyperref}
% im Allgemeinen sollte hyperref als letztes Paket geladen werden
% wie immer gibt es Ausnahmen, aber bei Dir war es eindeutig zu früh

\begin{document}
  \parencite{Bundesamt2016,unireader}
  \printbibliography[title=Literaturverzeichnis]
\end{document}
anbieten.

Je nach dem, wie genau die Vorgaben bei 1. sind kann man da noch basteln.

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

Beitrag von Tassadar »

Erstmal vielen vielen Dank für deine Antwort!
Da sind schon sehr viele hilfreiche Sachen dabei!

So ganz übernehmen kann ich das aber leider nicht...

Das liegt unter anderem daran, dass ich meine Literatur mit Mendeley verwalte und ich da leider nicht bis ins letzte Detail einstellen kann welcher Felder wie genutzt werden und ich dann auch nicht alles im Nachhinein immer wieder verändern will.

Z.B.:
date        = {2016-11},% date ist besser als year und month 
Stimme ich dir zu, gibt Mendeley aber nicht her... Er spuckt es getrennt aus.
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}
Funktioniert einwandfrei, vielen Dank!
Muss den das Veröffentlichungsdatum bei Berichten immer hinter den Titel, oder nur wenn es eh schon fast zum Titel gehört?
Gute Frage... So wie ich die Richtlinien verstehe soll das immer sein.
Ein @report hat in biblatex keine Auflage.
Versteh ich nicht genau was du damit meinst...
% @report-Typ in eckigen Klammern, z.B. [Reader]
Bzgl. dieses Punktes: Ich würde es gerne so umsetzen wie du es angegangen bist, also dass man z.B. Reader in das Typ feld schreibt und das ausgibt, aber ich würde es gerne für Book und nicht für Report machen. Das hat 2 Grüne:
Die Teile um die es geht haben tatsächlich eine ISBN, sind also im Prinzip wie ein Buch zu behandeln.
Und: Ich habe in der Zwischenzeit ein anderes Problem festgestellt. Mendeley macht @techreport und nicht @report. Biblatex wandelt das intern um und setzt dann selber was in in das type Feld. Das soll aber dann eigentlich nicht ausgegeben werden, weswegen ich den report driver auch schon umformuliert hatte, so dass es gerade unterdrückt wird, dass type ausgegeben wird.
% don't print Techn. Ber. for techreports
\DeclareBibliographyDriver{report}{%
	\usebibmacro{bibindex}%
	\usebibmacro{begentry}%
	\usebibmacro{author}
	\setunit{\labelnamepunct}\newblock
	\usebibmacro{title}%
	%\newunit\newblock
	%\printfield{type}%
	\newunit\newblock
	\usebibmacro{institution+location+date}
	\usebibmacro{pageref}%
	\usebibmacro{finentry}}
Und zu guter letzt:
mergedate = basic,
Sorgt jetzt dafür, dass bei dem Report das Datum ganz zum Schluss ausgegeben wird (vermutlich wegen dem institution+location+date macro.
Es muss aber nach dem Titel kommen.

Aber vielen vielen Dank!
Deine Antwort hat mir auch sehr geholfen das besser zu verstehen und ich versuche mich jetzt auch mal selber dran.
Aber über weitere Hilfe wäre ich trotzdem sehr dankbar. :)

Gast

Beitrag von Gast »

Wenn Mendeley es nicht erlaubt, date zu exportieren, solltest Du aber zumindest month = {11}, schreiben statt {November}, das erspart Dir eine Warnung.
Ein @report hat in biblatex keine Auflage.
Sollte heißen, dass biblatex bei dem Typ @report standardmäßig das Feld edition ignoriert und nicht ausgibt. Damit hat ein @report keine Auflage. Stattdessen gibt es das Feld version, das eine ähnliche Funktion haben kann.

Eleganter als durch auskommentieren kann man Felder übrigens durch \DeclareFieldInputHandler{foo}{\def\NewValue{}}, \AtEveryBibitem{\clearfield{foo}} oder eine Sourcemap unterdrücken. Hier ist es schöner, der Rückumwandlung von @techreport zu @report mit type = {techreport} zuvorzukommen (s.u.).

Zu den eckigen Klammern kannst Du dann einfach @book nehmen und Reader in titleaddon schreiben.

Ja das mit dem mergedate=basic war einfach die Hoffnung, dass Dir diese Ausgabe, die - sagen wir mal - konzeptionell ähnlich zu der geforderten ist, vielleicht schon ausreicht.

Um das vernünftig zu implementieren, wäre erforderlich genauer zu wissen, wann und wie das Datum aufzutreten hat. Standardmäßig wird es bei biblatex am Ende nach Verlag und Ort ausgegeben. Bei authoryear wird es jedoch auch schon am Anfang ausgegeben, eine Dopplung wird dann automatisch vermieden. Mit der mergedate-Option kann man das feiner steuern. Sie ist im Stil-Beispiel authoryear erklärt.
Die Frage ist insbesondere, ob das Datum für alle Typen, für die es sinnvoll ist, ein genaueres Datum als nur das Jahr anzugeben, gezeigt werden soll, oder nur für @report. Ebenso ist wichtig, ob das Datum nach dem Titel kommen soll oder vor dem Verlag/Institution-Ort-Block. Das mag zwar häufig aufs gleiche herauskommen, ist für die Implementierung aber wichtig.
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
  backend = biber,    
  style = authoryear,  
  mergedate = basic, % vom Konzept wäre das am schönsten
  giveninits = true,    
  uniquename = init,    
  dashed = false,    
%  sorting = nyt,% das ist die Voreinstellung bei style=authoryear
%  doi = true,% ebenfalls Standard
  url = false,  
  isbn = false,      
  eprint = false  
  ]{biblatex}


% "&" statt "und" verwenden
% geht nun etwas einfacher
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% mit dieser Einstellung werden alle "und"s in Namenlisten zu "&"
% ist das anders geplant, kann das über das optionale Argument gesteuert werden.
% nur für \parencite: \DeclareDelimFormat[parencite]{finalnamedelim}{\addspace\&\space}
%nur für Verzeichnis: \DeclareDelimFormat[bib,biblist]{finalnamedelim}{\addspace\&\space}

% Bei Parencite ein "," zwischen Names und Year
% s.o. eventuell auch nur \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% je nach dem, was für \cite gewüscht ist.
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% sorgt für den Punkt hinter dem Autorennamen im Verzeichnis
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}


\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{editor}{given-family}

%\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[incollection]{title}{#1\isdot}
% Wirklich alle " in Titeln werden wie folgt unterdrückt
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

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

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

\renewcommand*{\intitlepunct}{\addspace}

\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}% 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}%
  \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}

% Zweiter Anlauf für Reader
\DeclareFieldFormat{titleaddon}{\mkbibbrackets{#1}}
\renewbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \setunit{\addspace}}%
  \printfield{titleaddon}}

% Der Block, der hier war, kann ersatzlos gestrichen werden,
% seit 3.8 ist er Standard.
% Im gezeigten Code fehlte der Teil, der es ermöglicht,
% denselben Namen im Literaturverzeichnis durch einen --
% zu ersetzen. Das geht nun wieder. Ist das nicht erwünscht,
% verschafft die Option dashed=false Abhilfe.


\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}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[typesource=techreport, typetarget=report, final]
    }
  }
}

\addbibresource{LitDaten.bib}
\usepackage{filecontents}  
\begin{filecontents}{LitDaten.bib}
@report{Bundesamt2016,
  abstract    = {S. 25 Bildungsabschlüsse Ausländer},
  address     = {Wiesbaden},
  author      = {{Statistisches Bundesamt}},
  institution = {Statistisches Bundesamt},
  keywords    = {Abschluss,Schulart,Schulbesuch,Staatsangehörigkeit},
  title       = {Bildungsstand der Bevölkerung},
  date        = {2016-11},% date ist besser als year und month
  url         = {https://www.destatis.de/GPStatistik/receive/DEHeft_heft_00057188},
}
@book{unireader,
  address     = {London},
  author      = {Anne Elk},
  institution = {University of Monthy},
  title       = {University Reader},
  titleaddon  = {Reader},
  isbn        = {978-1-56619-909-4},
  date        = {2016},
  url         = {https://www.example.edu/~elk/reader.pdf},
}
@techreport{padhye:copy,
  author       = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don},
  title        = {A Stochastic Model of {TCP Reno} Congestion Avoidance and
                  Control},
  institution  = {University of Massachusetts},
  date         = 1999,
  number       = {99-02},
  location     = {Amherst, Mass.},
}
\end{filecontents}
   
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}

\usepackage{hyperref}
% im Allgemeinen sollte hyperref als letztes Paket geladen werden
% wie immer gibt es Ausnahmen, aber bei Dir war es eindeutig zu früh

\begin{document}
  \parencite{Bundesamt2016,unireader,padhye:copy}
  \printbibliography[title=Literaturverzeichnis]
\end{document}

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

Beitrag von Tassadar »

Sehr sehr cool!
Vielen vielen Dank!

Ich hab nochmal nachgeschaut und glaube, dass es bei den Reports generell hinter dem Titel stehen soll. Und ich denke, dass es dort immer kommen soll. Der Titel soll ja kursiv sein aber das zusätzliche Datum nicht. Daher fasse ich es nicht als Teil des Titels auf und daher auch nicht nur dann wenn es zum Titel gehört. Aber glaube das könnte ich zur Not vernachlässigen wenn es zu kompliziert wird.

Das andere größere Problem was mir jetzt noch aufgefallen ist, ist wenn ein Buch dann eine Edition hat.
Dass diese dann in Klammern steht habe ich auch alleine hinbekommen.
Aber von der Sortierung her macht er jetzt das [Reader] zwischen Titel und Edition. Es sollte aber die Form haben:
Titel (Edition) [Reader].

Wenn wir (oder besser gesagt du ^^) das noch lösen könntest wäre echt alles perfekt und ich mega happy und vor allem mega dankbar!!!
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
  backend = biber,    
  style = authoryear,  
  giveninits = true,    
  uniquename = init,    
  dashed = false,    
%  sorting = nyt,% das ist die Voreinstellung bei style=authoryear
%  doi = true,% ebenfalls Standard
  url = false,  
  isbn = false,      
  eprint = false  
  ]{biblatex}


% "&" statt "und" verwenden
% geht nun etwas einfacher
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% mit dieser Einstellung werden alle "und"s in Namenlisten zu "&"
% ist das anders geplant, kann das über das optionale Argument gesteuert werden.
% nur für \parencite: \DeclareDelimFormat[parencite]{finalnamedelim}{\addspace\&\space}
%nur für Verzeichnis: \DeclareDelimFormat[bib,biblist]{finalnamedelim}{\addspace\&\space}

% Bei Parencite ein "," zwischen Names und Year
% s.o. eventuell auch nur \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% je nach dem, was für \cite gewüscht ist.
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% sorgt für den Punkt hinter dem Autorennamen im Verzeichnis
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}


\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{editor}{given-family}

%\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[incollection]{title}{#1\isdot}
% Wirklich alle " in Titeln werden wie folgt unterdrückt
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

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

% Klammern um Edition
\DeclareFieldFormat{edition}{% 
  \mkbibparens{% 
    \ifinteger{#1} 
      {\mkbibordedition{#1}~\bibstring{edition}} 
      {#1\isdot}}
      \nopunct}

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

\renewcommand*{\intitlepunct}{\addspace}

\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}% 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}%
  \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}

% Zweiter Anlauf für Reader
\DeclareFieldFormat{titleaddon}{\mkbibbrackets{#1}}
\renewbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \setunit{\addspace}}%
  \printfield{titleaddon}}

% Der Block, der hier war, kann ersatzlos gestrichen werden,
% seit 3.8 ist er Standard.
% Im gezeigten Code fehlte der Teil, der es ermöglicht,
% denselben Namen im Literaturverzeichnis durch einen --
% zu ersetzen. Das geht nun wieder. Ist das nicht erwünscht,
% verschafft die Option dashed=false Abhilfe.


\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}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[typesource=techreport, typetarget=report, final]
    }
  }
}

\addbibresource{LitDaten.bib}
\usepackage{filecontents}  
\begin{filecontents}{LitDaten.bib}
@report{Bundesamt2016,
  abstract    = {S. 25 Bildungsabschlüsse Ausländer},
  address     = {Wiesbaden},
  author      = {{Statistisches Bundesamt}},
  institution = {Statistisches Bundesamt},
  keywords    = {Abschluss,Schulart,Schulbesuch,Staatsangehörigkeit},
  title       = {Bildungsstand der Bevölkerung},
  date        = {2016-11},% date ist besser als year und month
  url         = {https://www.destatis.de/GPStatistik/receive/DEHeft_heft_00057188},
}
@book{unireader,
  address     = {London},
  author      = {Anne Elk},
  institution = {University of Monthy},
  title       = {University Reader},
  titleaddon  = {Reader},
  isbn        = {978-1-56619-909-4},
  date        = {2016},
  edition	  = {2},
  url         = {https://www.example.edu/~elk/reader.pdf},
}
@techreport{padhye:copy,
  author       = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don},
  title        = {A Stochastic Model of {TCP Reno} Congestion Avoidance and
                  Control},
  institution  = {University of Massachusetts},
  date         = 1999,
  number       = {99-02},
  location     = {Amherst, Mass.},
}
\end{filecontents}
   
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}

\usepackage{hyperref}
% im Allgemeinen sollte hyperref als letztes Paket geladen werden
% wie immer gibt es Ausnahmen, aber bei Dir war es eindeutig zu früh

\begin{document}
  \parencite{Bundesamt2016,unireader,padhye:copy}
  \printbibliography[title=Literaturverzeichnis]
\end{document}

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

Beitrag von Tassadar »

So, ich habe mir mal den Bibliographydriver für book angeschaut.
Und nach der Definition dort bin ich der Meinung, dass das dort verwendete Feld "note" für das geeignet ist was ich für [Reader] haben will.

Ich habe hiermit die eckigen Klammern hinzugefügt:
\DeclareFieldFormat[book]{note}{\mkbibbrackets{#1}}
Und das Funktioniert eigentlich einwandfrei.

Jetzt ist mir nur noch eine letzte Sache aufgefallen...

Das Folgende bezieht sich alles auf book:

Den Punkt nach [Reader] macht er korrekt.
Zur Zeit macht er grundsätzlich einen Punkt nach dem title.

Insgesamt sollte es aber so sein wie folgt, eben je nachdem welche Infos vorhanden sind:

title. Ort: Verlag
title (Edition). Ort: Verlag
title (Edition) [Reader]. Ort: Verlag

Unterm Strich müsste es wie folgt sein:

title Edition und das [Reader] Note ist ein Block der insgesamt von nur einem Punkt abgeschlossen wird, jenachdem was alles vorhanden ist.

Ideen?
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
  backend = biber,    
  style = authoryear,  
  giveninits = true,    
  uniquename = init,    
  dashed = false,    
%  sorting = nyt,% das ist die Voreinstellung bei style=authoryear
%  doi = true,% ebenfalls Standard
  url = false,  
  isbn = false,      
  eprint = false  
  ]{biblatex}


% "&" statt "und" verwenden
% geht nun etwas einfacher
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% mit dieser Einstellung werden alle "und"s in Namenlisten zu "&"
% ist das anders geplant, kann das über das optionale Argument gesteuert werden.
% nur für \parencite: \DeclareDelimFormat[parencite]{finalnamedelim}{\addspace\&\space}
%nur für Verzeichnis: \DeclareDelimFormat[bib,biblist]{finalnamedelim}{\addspace\&\space}

% Bei Parencite ein "," zwischen Names und Year
% s.o. eventuell auch nur \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% je nach dem, was für \cite gewüscht ist.
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% sorgt für den Punkt hinter dem Autorennamen im Verzeichnis
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}


\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{editor}{given-family}

%\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[incollection]{title}{#1\isdot}
% Wirklich alle " in Titeln werden wie folgt unterdrückt
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

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

% Klammern um Edition
\DeclareFieldFormat{edition}{% 
  \mkbibparens{% 
    \ifinteger{#1} 
      {\mkbibordedition{#1}~\bibstring{edition}} 
      {#1\isdot}}
      \nopunct}

% Eckige Klammern um note
\DeclareFieldFormat[book]{note}{\mkbibbrackets{#1}}

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

\renewcommand*{\intitlepunct}{\addspace}

\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}% 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}%
  \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}


\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}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[typesource=techreport, typetarget=report, final]
    }
  }
}

\addbibresource{LitDaten.bib}
\usepackage{filecontents}  
\begin{filecontents}{LitDaten.bib}
@report{Bundesamt2016,
  abstract    = {S. 25 Bildungsabschlüsse Ausländer},
  address     = {Wiesbaden},
  author      = {{Statistisches Bundesamt}},
  institution = {Statistisches Bundesamt},
  keywords    = {Abschluss,Schulart,Schulbesuch,Staatsangehörigkeit},
  title       = {Bildungsstand der Bevölkerung},
  date        = {2016-11},% date ist besser als year und month
  url         = {https://www.destatis.de/GPStatistik/receive/DEHeft_heft_00057188},
}
@book{unireader,
  address     = {London},
  author      = {Anne Elk},
  institution = {University of Monthy},
  title       = {University Reader},
  note  = {Reader},
  isbn        = {978-1-56619-909-4},
  date        = {2016},
  edition     = {2},
  url         = {https://www.example.edu/~elk/reader.pdf},
}
@book{Martin2006,
address = {Weinheim},
author = {Martin, Ernst and Wawrinowski, Uwe},
isbn = {978-3779907442},
publisher = {Beltz Juventa},
title = {{Beobachtungslehre: Theorie und Praxis reflektierter Beobachtung und Beurteilung}},
year = {2006}
}
@book{Brentano2013,
address = {Hamburg},
author = {Brentano, Franz},
isbn = {978-3787300136},
publisher = {Felix Meiner},
title = {{Psychologie vom empirischen Standpunkt}},
year = {2013},
edition = {3}
}
@techreport{padhye:copy,
  author       = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don},
  title        = {A Stochastic Model of {TCP Reno} Congestion Avoidance and
                  Control},
  institution  = {University of Massachusetts},
  date         = 1999,
  number       = {99-02},
  location     = {Amherst, Mass.},
}
\end{filecontents}
   
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}

\usepackage{hyperref}
% im Allgemeinen sollte hyperref als letztes Paket geladen werden
% wie immer gibt es Ausnahmen, aber bei Dir war es eindeutig zu früh

\begin{document}
  \parencite{Bundesamt2016,unireader,padhye:copy,Martin2006,Brentano2013}
  \printbibliography[title=Literaturverzeichnis]
\end{document}

Gast

Beitrag von Gast »

Da muss man die Driver anpassen. Da wir sonst viel Code kopieren müssten, schlage ich xpatch vor. Mit \xpatchbibmacro können wir am Driver rumschnippeln ohne ihn ganz neu zu definieren. Dabei wird einfach der Code im zweiten Argument durch den des dritten Arguments ersetzt. Das erste Argument gibt an, welcher Driver umdefiniert wird, im fünften Argument steht was passiert, wenn der Driver nicht angepasst werden kann (hier gibt es dann nur eine Zeile in der .log-Datei). Da wir mehrere Driver anpassen müssen nutzen wir die Konstruktion mit \do und \docsvlist (das sind Befehle aus etoolbox, das Paket wird automatisch von biblatex geladen).
\documentclass[
paper=A4,
11pt,
headings=big,
listof=leveldown,
listof=numbered,
numbers=noenddot,
bibliography=totoc
]{scrartcl}

\usepackage[
  backend = biber,    
  style = authoryear,  
  giveninits = true,    
  uniquename = init,    
  dashed = false,    
%  sorting = nyt,% das ist die Voreinstellung bei style=authoryear
%  doi = true,% ebenfalls Standard
  url = false,  
  isbn = false,      
  eprint = false  
  ]{biblatex}


% "&" statt "und" verwenden
% geht nun etwas einfacher
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
% mit dieser Einstellung werden alle "und"s in Namenlisten zu "&"
% ist das anders geplant, kann das über das optionale Argument gesteuert werden.
% nur für \parencite: \DeclareDelimFormat[parencite]{finalnamedelim}{\addspace\&\space}
%nur für Verzeichnis: \DeclareDelimFormat[bib,biblist]{finalnamedelim}{\addspace\&\space}

% Bei Parencite ein "," zwischen Names und Year
% s.o. eventuell auch nur \DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% je nach dem, was für \cite gewüscht ist.
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
% sorgt für den Punkt hinter dem Autorennamen im Verzeichnis
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addperiod\space}


\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{editor}{given-family}

%\DeclareFieldFormat[article]{title}{#1\isdot}
%\DeclareFieldFormat[incollection]{title}{#1\isdot}
% Wirklich alle " in Titeln werden wie folgt unterdrückt
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{#1\isdot}

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

% Klammern um Edition
\DeclareFieldFormat{edition}{%
  \mkbibparens{%
    \ifinteger{#1}
      {\mkbibordedition{#1}~\bibstring{edition}}
      {#1\isdot}}
      \nopunct}

% korrigiert die Zeichensetzung vor edition
\usepackage{xpatch}
\def\do#1{%
  \xpatchbibdriver{#1}
    {\newunit\newblock\printfield{edition}}
    {\setunit{\addspace}\newblock\printfield{edition}}
    {}
    {\typeout{failed to patch edition in #1}}}
\docsvlist{book,inbook,collection,incollection,manual}

% Eckige Klammern um note
\DeclareFieldFormat[book]{note}{\mkbibbrackets{#1}}

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

\renewcommand*{\intitlepunct}{\addspace}

\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}% 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}%
  \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}


\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}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[typesource=techreport, typetarget=report, final]
    }
  }
}

\addbibresource{LitDaten.bib}
\usepackage{filecontents}  
\begin{filecontents}{LitDaten.bib}
@report{Bundesamt2016,
  abstract    = {S. 25 Bildungsabschlüsse Ausländer},
  address     = {Wiesbaden},
  author      = {{Statistisches Bundesamt}},
  institution = {Statistisches Bundesamt},
  keywords    = {Abschluss,Schulart,Schulbesuch,Staatsangehörigkeit},
  title       = {Bildungsstand der Bevölkerung},
  date        = {2016-11},% date ist besser als year und month
  url         = {https://www.destatis.de/GPStatistik/receive/DEHeft_heft_00057188},
}
@book{unireader,
  address     = {London},
  author      = {Anne Elk},
  institution = {University of Monthy},
  title       = {University Reader},
  note  = {Reader},
  isbn        = {978-1-56619-909-4},
  date        = {2016},
  edition     = {2},
  url         = {https://www.example.edu/~elk/reader.pdf},
}
@book{Martin2006,
address = {Weinheim},
author = {Martin, Ernst and Wawrinowski, Uwe},
isbn = {978-3779907442},
publisher = {Beltz Juventa},
title = {{Beobachtungslehre: Theorie und Praxis reflektierter Beobachtung und Beurteilung}},
year = {2006}
}
@book{Brentano2013,
address = {Hamburg},
author = {Brentano, Franz},
isbn = {978-3787300136},
publisher = {Felix Meiner},
title = {{Psychologie vom empirischen Standpunkt}},
year = {2013},
edition = {3}
}
@techreport{padhye:copy,
  author       = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don},
  title        = {A Stochastic Model of {TCP Reno} Congestion Avoidance and
                  Control},
  institution  = {University of Massachusetts},
  date         = 1999,
  number       = {99-02},
  location     = {Amherst, Mass.},
}
\end{filecontents}
   
   
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel,german=quotes]{csquotes}

\usepackage{hyperref}
% im Allgemeinen sollte hyperref als letztes Paket geladen werden
% wie immer gibt es Ausnahmen, aber bei Dir war es eindeutig zu früh

\begin{document}
  \parencite{Bundesamt2016,unireader,padhye:copy,Martin2006,Brentano2013}
  \printbibliography[title=Literaturverzeichnis]
\end{document}

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

Beitrag von Tassadar »

Da muss man die Driver anpassen. Da wir sonst viel Code kopieren müssten, schlage ich Paket auf CTANxpatch vor.
Erstmal vielen Dank für den Ansatz und auch für die Erklärung!

Das Problem ist aber leider nur teilweise behoben...

title. Ort: Verlag ist richtig
title (edition) [Reader]. Ort: Verlag ist richtig

aber...

title (edition) Ort: Verlag müsste eigentlich title (edition). Ort: Verlag sein
title. [reader]. Ort: Verlag müsste eigentlich title [reader]. Ort: Verlag sein

Antworten