Probleme mit \renewbibmacro*{date+extrayear} seit Update

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


Verena
Forum-Anfänger
Forum-Anfänger
Beiträge: 44
Registriert: Mi 18. Nov 2015, 14:41

Probleme mit \renewbibmacro*{date+extrayear} seit Update

Beitrag von Verena »

Liebe alle,

seit einem Update habe ich folgendes Problem, das ich einfach nicht gelöst bekomme:
Im Literaturverzeichnis (Monographie) soll die Auflage hochgestellt vor der Jahreszahl stehen. Das hatte eigentlich auch funktioniert, doch seit dem Update steht die Jahreszahl zwar hochgestellt, jedoch hinter dem Buchtitel.
Ich denke, das Problem liegt in der Einheit \renewbibmacro*{date+extrayear}, aber weiter komme ich leider nicht. Habe diverse Vorschläge aus dem Internet versucht, aber die Auflagenanzahl möchte einfach nicht mehr vor die Jahreszahl.

Über Hilfe wäre ich sehr sehr dankbar, da ich jetzt einfach nicht mehr weiterkomme.



\documentclass[paper=a4, 12pt, oneside, headsepline, headings=optiontoheadandtoc]{scrbook}
%\usepackage[paper=a4paper, left=25mm, right=25mm, top=30mm, bottom=30mm]{geometry} %Seitenränder ändern

\usepackage[french, ngerman]{babel}
\usepackage[backend=biber, style=authoryear-comp, isbn=false, dashed=false, maxitems=2, maxnames=3, uniquename=false]{biblatex}
%\renewcommand{\postnotedelim}{\addcolon\addspace} 		%für Punkt statt Komma in Kurzverweisen zwischen Autor und Seitenangabe
\usepackage[utf8]{inputenc}
\usepackage[babel, german=quotes]{csquotes}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{xcolor, colortbl}
\usepackage{enumerate}
\usepackage{pdfpages}

\DefineBibliographyStrings{german}{%
urlseen = {aufgerufen am},
andothers = {{et\,al\adddot}},}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{volcitepages}{#1}
\DeclareFieldFormat{multipostnote}{#1} %zum Löschen von S. vor Seitenangabe
\renewcommand{\baselinestretch}{1.30}\normalsize %Zeilenabstand
\usepackage{setspace} %bewirkt, dass der Zeilenabstand in den Fußnoten weiterhin einfach ist
\setlength{\parindent}{1cm} %Einrückung der ersten Zeile eines neuen Absatzes
%Paket chngcntr betrifft allgemein Zählung; soll anscheinend vor Paket hyperref stehen
\usepackage{chngcntr}
\counterwithout{footnote}{chapter} %Zählung der Fußnoten verläuft durchgehend; einfach löschen, dann beginnt die Zählung für jedes Kapitel neu

\usepackage{hyperref}
\usepackage{microtype} %gegen übervolle Boxen -> Zeilenumbrüche besser kontrolliert 
\setkomafont{pagehead}{\normalfont\footnotesize} %Schrifteinstellung Kopfzeile
\hyphenpenalty=5000 \tolerance=1000 %Silbentrennung wird verhindert bzw. neue Toleranzwerte dafür verteilt 

\renewcaptionname{ngerman}{\figurename}{Abb.} %Bezeichnung für Abbildungen
\renewcaptionname{ngerman}{\tablename}{Tab.} %Bezeichnung für Tabellen

\addtokomafont{disposition}{\rmfamily} %Schriftart aller Kapitelüberschriften wird angepasst
\addtokomafont{section}{\normalsize} %Schriftgröße der Überschriften
\addtokomafont{subsection}{\normalsize}
\setlength{\textheight}{23cm} %Länge des Textes (vertikal) von oberster bis zu unterster Zeile einer Seite

% Seitenzahlen
\setlength{\footskip}{14mm} %bestimmt die Abstand zwischen unterster Textzeile und Seitenzahl
\addtokomafont{pagenumber}{\small} %Größe der Seitenzahl

% Fußnoten
\renewcommand{\footnotesize}{\small} %Größe der Fußnoten 
\setlength{\footnotesep}{12pt} % Abstand zwischen Fußnoten
\setlength{\skip\footins}{1.00cm} %Abstand zw. Text und Fußnoten 
\deffootnote[2em]{0em}{0em}{
            \makebox[2em][l]{\thefootnotemark}}	

% eingerückte Zitate
\newenvironment{myquote}%bei quote wird das Zitat beidseitig eingerückt, bei list nicht unbedingt 
	{\vspace{0pt}\begin{quote}
	%\setlength{\parskip}{0cm}
	\renewcommand{\baselinestretch}{1.00}
	\small}
	{\end{quote}\vspace{-4pt}}
	
\bibliography{DateiCitavi}
\DefineBibliographyExtras{ngerman}{\renewcommand*{\bibrangedash}{-}} %Binde- statt Gedankenstriche bei Seitenangaben
\setlength{\bibitemsep}{0,2em} %Abstand zwischen den Literaturangaben
\setlength{\bibhang}{2em} %Einzug nach jeweils erster Zeile
\AtBeginBibliography{%
  %\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} %schreibt Name des Autors in Kapitälchen, aber nur in Bibliographie
\renewcommand*{\labelnamepunct}{\addcolon\addspace}} %Doppelpunkt zwischen Autor und Titel in der Bibliographie
\renewcommand{\multinamedelim}[0]{/}
\renewcommand{\finalnamedelim}[0]{/} %Schrägstrich zw. mehreren Autoren
\DeclareFieldFormat{editortype}{\mkbibparens{#1}} %Hrsg. in Klammern						
\DeclareNameAlias{sortname}{last-first} %Nachname bei allen Autoren zuerst

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
	\newunit
	\setunit{\addspace}
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \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}}
	
\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% 
  \renewbibmacro*{date+extrayear}{}% 
	\usebibmacro{editor+others}
	\setunit{\addcolon\space} %Doppelpunkt nach (Hrsg.)
	\endgroup% 
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
	\newunit\newblock %
  \usebibmacro{publisher+location+date}%
	\newunit
	\setunit{\addspace}
	\usebibmacro{series+number}% -> Reihentitel
	\newunit\newblock
  \usebibmacro{chapter+pages}%
  \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{number}{\bibstring{volume}~#1} -> fügt "`Bd."' vor Anzahl des Reihentitels hinzu
\renewbibmacro*{series+number}{% formatiert Reihentitel
	\iffieldundef{series}%
		{}
		{\printtext[parens]{%
			\printfield{series}%
			\setunit{\addspace}%
			\printfield{number}}}}
			
\makeatletter %kein Komma zw. Namen und (Hrsg.)
\renewbibmacro*{bbx:editor}[1]{%
  \ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}}
    {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND
                 \NOT\iffirstonpage\AND
         \(\NOT\boolean{bbx@inset}\OR
           \iffieldequalstr{entrysetcount}{1}\)}
       {\bibnamedash}
       {\printnames{editor} %
    \setunit{\addspace} %statt "`\addcomma\space"' nur "`\addspace"'
    \usebibmacro{bbx:savehash}}%
     \usebibmacro{#1}%
     \clearname{editor}%
     \setunit{\addspace}}%
    {\global\undef\bbx@lasthash
     \usebibmacro{labeltitle}%
     \setunit*{\addspace}}%
  \usebibmacro{date+extrayear}}
\makeatother

\makeatletter
% Auflage wird hochgestellt und vor die Jahreszahl gerückt
\renewbibmacro*{date+extrayear}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
			\iffieldnum{edition}{\printfield[superedition]{edition}\global\clearfield{edition}}{}%
			\iffieldsequal{year}{labelyear}
					{\printlabeldateextra}%
         {\ifdefstring\blx@dateformat@labeldate{edtf}
            {}
            {\datecircaprint}%
          \dateeraprintpre{labelyear}%
          \printfield{labelyear}%
          \printfield{extrayear}%
          \dateuncertainprint%
          \iffieldsequal{labeldateera}{labelenddateera}
            {}
            {\dateeraprint{labelyear}}%
          \ifdefstring\blx@dateformat@labeldate{edtf}
            {\datecircaprintedtf}
            {}%
          \iffieldundef{labelendyear}
            {}
            {\iffieldsequal{labelyear}{labelendyear}
               {}
               {\ifdefstring\blx@dateformat@labeldate{edtf}
                  {\slash}% strict EDTF
                  {\bibdaterangesep
                \enddatecircaprint}%
                \dateeraprintpre{labelendyear}%
                \printfield{labelendyear}%
                \enddateuncertainprint
                \ifdefstring\blx@dateformat@labeldate{edtf}
                  {\enddatecircaprintedtf}
                  {}%
                \dateeraprint{labelendyear}}}}%
       }}}
\makeatother
\DeclareFieldFormat{edition}{\textsuperscript{#1}} %Auflagenanzahl wird hochgestellt		

\DeclareBibliographyDriver{article}{%
  \usebibmacro{author/editor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
	\newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \printtext{\printfield{number}}% in BibLatex-Datei als Heftnummer definiert
  %\iffieldundef{volume}{}{\printtext[parens]{\printfield{volume}}}% in Biblatex-Datei entspricht volume dem Jahrgang; dieser soll jedoch nicht aufgeführt werden
  \setunit{\addcomma\space}%
  \printfield{pages}%
  \usebibmacro{finentry}}
	
\makeatletter
\def\thickhrulefill{\leavevmode \leaders \hrule height 1ex \hfill \kern \z@}
\def\@makechapterhead#1{%
\vspace*{-30\p@}%
  {\parindent \z@ \raggedleft \reset@font
            %\scshape -> schreibt Kapitelüberschriften in Kapitälchen
									\textbf{\@chapapp{} \thechapter}
        \par \nobreak
        \interlinepenalty \@M
    \Large \bfseries #1\par\nobreak
\vspace*{1\p@}%
\hrulefill
\par\nobreak
    \vskip 24\p@
  }}
\def\@makeschapterhead#1{%
\vspace*{-30\p@}%
  {\parindent \z@ \raggedright \reset@font
            %\scshape 
						\vphantom{\@chapapp{} \thechapter}
        \par\nobreak
        \interlinepenalty\@M
    \Large \bfseries #1\par\nobreak
\vspace*{1\p@}%
    \hrulefill
    \par\nobreak
    \vskip 24\p@
  }}
	
\newenvironment{Dissertation_Onlinequellen}{%
  \parskip6pt \parindent0pt \raggedright
  \def\lititem{\hangindent=1cm \hangafter1}}{%
  \par\ignorespaces} 	

\begin{document}

Hier steht der Text.


\singlespacing
\printbibliography

\end{document}

Gast

Beitrag von Gast »

Das Makro date+extrayear heißt jetzt date+extradate. Leider kann der Code für Abwärtskompatibilität nicht alles abfangen, daher ist es angeraten, wenn man schon so weit wie Du in das Reich der Stilschreiber vorgedrungen ist, immer nach einem Update den Changelog zu Rate zu ziehen: http://mirrors.ctan.org/macros/latex/co ... CHANGES.md
Dort steht im Allgemeinen was sich geändert hat, und was zu tun ist. Siehe aber auch https://github.com/plk/biblatex/issues/700 Besonders diese Änderung ist problematisch, da der Code für Abwärtskompatibilität die Situation in Fällen wie Deinem eher verschlimmert als verbessert.

Ich habe Deinen Code etwas modernisiert und das Problem beseitigt. Deine Kommentare habe ich der Übersichtlichkeit halber entfernt, damit meine besser sichtbar sind.

Deine Redefinition von @article halte ich für viel zu radikal.
\documentclass[paper=a4, 12pt, oneside, headsepline, headings=optiontoheadandtoc]{scrbook}
\usepackage[french, ngerman]{babel}
\usepackage[backend=biber, style=authoryear-comp, isbn=false, dashed=false, maxitems=2, maxnames=3, uniquename=false]{biblatex}
%\renewcommand{\postnotedelim}{\addcolon\addspace}
\usepackage[utf8]{inputenc}
\usepackage[babel, german=quotes]{csquotes}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\DefineBibliographyStrings{german}{%
urlseen = {aufgerufen am},
andothers = {{et\,al\adddot}},}
\DeclareFieldFormat{pages}{#1}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{volcitepages}{#1}
\DeclareFieldFormat{multipostnote}{#1}

\DefineBibliographyExtras{ngerman}{\renewcommand*{\bibrangedash}{-}}

% neue Befehle für Zeichensetzung
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\addcolon\space}
\DeclareDelimFormat{multinamedelim}{\addslash}
\DeclareDelimAlias{finalnamedelim}{multinamedelim}

\DeclareFieldFormat{editortype}{\mkbibparens{#1}}% <- das reicht jetzt, um das Komma vor "Herausgeber" wegzubekommen

\DeclareNameAlias{sortname}{family-given}% <- neues Namensformat

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock% <- schönere Zeichensetzung
  \usebibmacro{maintitle+title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
   \newunit
   \setunit{\addspace}
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \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}}
   
\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock% <- schönere Zeichensetzung
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \begingroup%
  \renewbibmacro*{date+extradate}{}%
  \usebibmacro{editor+others}
  \setunit{\printdelim{nametitledelim}}\newblock
  \endgroup%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}% <- das ist kaputt, ich weiß nicht, was es tun soll, daher kann ich es nicht retten
   \newunit\newblock %
  \usebibmacro{publisher+location+date}%
   \newunit
   \setunit{\addspace}
   \usebibmacro{series+number}%
   \newunit\newblock
  \usebibmacro{chapter+pages}%
  \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}}
   

\renewbibmacro*{series+number}{%
   \iffieldundef{series}%
      {}
      {\printtext[parens]{%
         \printfield{series}%
         \setunit{\addspace}%
         \printfield{number}}}}
         
\DeclareDelimFormat{editortypedelim}{\addspace}

% neuer Name und einfachere Definition
\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \iffieldnum{edition}{\printfield[superedition]{edition}\global\clearfield{edition}}{}%
       \iflabeldateisdate
         {\printdateextra}
         {\printlabeldateextra}}}}

\DeclareFieldFormat{superedition}{\textsuperscript{#1}}     

\DeclareBibliographyDriver{article}{%
  \usebibmacro{author/editor}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
   \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \printtext{\printfield{number}}%<- das sieht mir recht fishy aus. volume ist im Allgemeinen viel wichtiger als number
  \setunit{\addcomma\space}%
  \printfield{pages}%
  \usebibmacro{finentry}}
   

\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{sigfridsson,malinowski,companion}
\printbibliography
\end{document}

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

Beitrag von Bartman »

@Verena
%\renewcommand{\baselinestretch}{1.30} %Zeilenabstand
\usepackage{setspace}
\setstretch{1.3}
% ...
\AtBeginBibliography{\singlespacing}

\begin{document}
\cite{sigfridsson,malinowski,companion}
%\singlespacing
\printbibliography
\end{document}
Eine Alternative zur Einstellung des Zeilenabstandes.
%\renewcommand{\footnotesize}{\small} %Größe der Fußnoten
\addtokomafont{footnote}{\small}
Die Anpassung von \footnotesize verändert nicht nur die Schriftgröße in den Fußnoten, sondern wirkt überall dort, wo der Befehl zum Einsatz kommt.

Quelle: Antwort von Johannes_B

Verena
Forum-Anfänger
Forum-Anfänger
Beiträge: 44
Registriert: Mi 18. Nov 2015, 14:41

Beitrag von Verena »

Wow, vielen lieben Dank! Jetzt funktioniert es wieder einwandfrei.
Danke auch für all die anderen Tipps, die wirklich sehr gut sind!

Die Anmerkung zu number ist auch völlig richtig. Ich hab das über Citavi umdefiniert (Formatierungsgründe), und in den Eintrag für number schreibt Citavi im BibLatex-File die Volume-Nummer. Sorry, wenn ich damit für Verwirrung gesorgt hab :D Aber gut aufgepasst von dir! :D

Gast

Beitrag von Gast »

Die Umdefinierung von \@makechapterhead und \@makeschapterhead ist bei KOMA-Script übrigens auch nicht die feine Art. Besser mit \RenewSectionCommand und Umdefinierung von \chapterlinesformat etc. arbeiten.

Antworten