Duplikat von Namensformat mit biblatex 3.3


Nach der Aktualisierung von LaTex und Biber laufen meine LaTex-Datein nicht mehr korrekt durch. Die Ursache dafür ist, dass es eine neue Syntax für DeclareNameFormat gibt (http://www.texdev.net/2016/03/13/biblatex-a-new-syntax-for-declarenameformat/).

Bisher sah meine Syntaxdatei für den Zitationsstil wie folgt aus:

Öffne in Overleaf
\RequirePackage{filecontents}
\begin{filecontents*}
    @ONLINE{website,
        TITLE        = {Titel der Website},
        HOWPUBLISHED = {Website},
        URL          = {http://www.musterseite.de},
        URLDATE      = {2017-07-11},
    }

@book{a,
    title = {Bsp. Titel},
    date = {2012},
    author = {Mustermax, Hans},
    location = {Berlin},
    publisher = {Musterverlag},
    }

@article{b,
    title = {Musterarticle},
    pages = {{116--121}},
    number = {39},
    journaltitle = {Musterjurnal},
    author = {Musterautor, Hans and Peter, Lustig and Schulz, Mario and Maier, Marie},
    date = {2012},   
}

\end{filecontents*}

\documentclass [12pt,a4paper]{article}  
\usepackage{cmap}
\usepackage[utf8]{inputenc}             
\usepackage[ngerman]{babel}

%BIBLATEX
\usepackage[style=authoryear-icomp,backend=biber,url=false,isbn=false,maxnames=2,maxbibnames=8,minbibnames=8]{biblatex}

\DeclareFieldFormat{pages}{#1}

\DeclareFieldFormat*{title}{\textit{#1}}
\DeclareFieldFormat*{citetitle}{\textit{#1}}
\DeclareFieldFormat*{journaltitle}{\textit{#1}}
\DeclareFieldFormat*{booktitle}{\textit{#1}}

\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:}
    \usebibmacro{editor}
    \setunit{\addcolon\space}
    \usebibmacro{maintitle+booktitle}
    \newunit\newblock
    \printfield{edition}
    \newunit
    \iffieldundef{maintitle}
    {\printfield{volume}
        \printfield{part}}
    {}
    \newunit
    \printfield{volumes}
    \newunit\newblock
    \usebibmacro{series+number}
    \newunit\newblock
    \newunit\newblock
    \usebibmacro{chapter+pages}
    \newunit\newblock
    \usebibmacro{publisher+location+date}
    \newunit\newblock
    \newunit\newblock
    \usebibmacro{doi+eprint+url}
    \newunit\newblock
    \usebibmacro{addendum+pubstate}
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{finentry}
}

\renewbibmacro*{editor}{
    \ifnameundef{editor}
    {}
    {\printnames{editor}
        \usebibmacro{editorstrg}
        \clearname{editor}}}
\renewbibmacro*{editorstrg}{
    \iffieldundef{editortype}
    {\ifboolexpr{
            test {\ifnumgreater{\value{editor}}{1}}
            or
            test {\ifandothers{editor}}
        }
        {\addspace\mkbibparens{\bibstring{editors}}}
        {\addspace\mkbibparens{\bibstring{editor}}}}
    {\ifboolexpr{
            test {\ifnumgreater{\value{editor}}{1}}
            or
            test {\ifandothers{editor}}
        }
        {\addspace\mkbibparens{\bibstring{\thefield{editortype}s}}}
        {\addspace\mkbibparens{\bibstring{\thefield{editortype}}}}}
}

\DeclareFieldFormat{pagetotal}{ {} }

\DeclareFieldFormat{volumes}{ {} }

\DeclareNameFormat{default}{
    \usebibmacro{name:last}{#1}{#3}{#5}{#7}
    \usebibmacro{name:andothers}
}
\DeclareNameFormat{labelname}{
    \usebibmacro{name:last}{#1}{#3}{#5}{#7}
    \usebibmacro{name:andothers}
}

\DeclareNameFormat{sortname}{
    \iffirstinits
    {\usebibmacro{name:last-first}{#1}{#4}{#5}{#7}}
    {\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}}
    \usebibmacro{name:andothers}
}

\let\oldmultinamedelim\multinamedelim
\let\oldfinalnamedelim\finalnamedelim
\renewcommand*{\multinamedelim}{,\space}
\renewcommand*{\finalnamedelim}{~\&\space}
\AtBeginBibliography{
    \renewcommand*{\multinamedelim}{\oldmultinamedelim}
    \renewcommand*{\finalnamedelim}{\oldfinalnamedelim}
}

\usepackage{xpatch}

\xpatchbibmacro{textcite}{
    {\usebibmacro{cite:label}
        \setunit{
            \global\booltrue{cbx:parens}
            \addspace\bibopenparen}
        \ifnumequal{\value{citecount}}{1}
        {\usebibmacro{prenote}}
        {}
        \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
        {\usebibmacro{cite:ibid}}
        {\usebibmacro{cite:labelyear+extrayear}}}
}{
{\usebibmacro{cite:label}
    \setunit{
        \global\booltrue{cbx:parens}
        \addspace\bibopenparen}
    \ifnumequal{\value{citecount}}{1}
    {\usebibmacro{prenote}}
    {}
    \usebibmacro{cite:labelyear+extrayear}}
}{}{}

\xpatchbibmacro{textcite}{
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
        {\usebibmacro{cite:ibid}}
        {\usebibmacro{cite:labelyear+extrayear}}}
}{
{\usebibmacro{cite:labelyear+extrayear}}
}{}{}

%ENDE BIBLATEX

\begin{document}
Text. \cite{Website}. Ein weiteres Zitat \cite{a} oder auch \cite{b}.

\printbibliography
\end{document}

Wie müsste die Syntax für die neueren Biblatex-Versionen aussehen um den selben Output für Zitate und für das Literaturverzeichnis zu erhalten?

gefragt 04 Sep '17, 22:28

J_tex's gravatar image

J_tex
16751115
Akzeptiert-Rate: 0%

geschlossen 06 Sep '17, 10:22

saputello's gravatar image

saputello
11.1k174365

Könntest Du bitte ein Minimalbeispiel einfügen? Also ein möglichst kurzes, aber komplettes Dokument, von \documentclass{...} bis zu \end{document}, was das Problem zeigt. Das vereinfacht die Bearbeitung erheblich und ist meist eine Garantie für eine Lösung. \DeclareNameFormat kommt in Deinem Code übrigens gar nicht vor. Dennoch sei auf Namensformat mit biblatex 3.3 hingewiesen. Außerdem sei auf \mkbibname<namepart> in der biblatex-Anleitung hingewiesen. Diese Änderungen ziehen sich durch ganz biblatex.

(05 Sep '17, 08:25) saputello

Off-Topic: Es sei auch wieder einmal darauf hingewiesen, dass in der Themenliste zu einem Beitrag nur einzelne Wörter als Themen angegeben werden können. Jedes einzelne Wort stellt also für sich ein Thema dar. Aus „neue Syntax“ werden also die Themen „syntax“ und „neue“, was natürlich Unsinn ist. Daher bitte immer nur Wörter angeben, die einzeln für sich jeweils ein sinnvolles Thema ergeben!

(05 Sep '17, 08:28) saputello

Das ist keine Antwort auf Deine Frage. Bitte editiere die Frage selbst, um alle relevanten Informationen einzufügen! Bitte verzichte dabei auf alles, was nichts mit der Frage zu tun hat und für ein vollständiges Minimalbeispiel nicht benötigt wird, beispielsweise ausufernde hyperref- oder geometry-Einstellungen und alle anderen Pakete, die für das Problem unerheblich sind. Wobei ich dringend empfehle, die Antwort aus der im Kommentar zur Frage bereits angegebene verwandten Frage bereits anzuwenden und ggf. lediglich Probleme damit zu zeigen.

(05 Sep '17, 11:20) saputello

Was soll man davon halten, dass Dein Beispiel trotz ausdrücklichen Hinweises auf die VM-Anleitung nicht lauffähig ist? Bei der filecontents-Umgebung fehlt das obligatorische Argument und das Beispiel enthält auch kein \addbibresource, lädt also gar keine Literaturdatenbank. Was soll man davon halten, dass trotz entsprechenden Hinweises gar nicht versucht wurde, die Änderung des Namensformats anzuwenden? So wie es die Frage ist, ist sie min. ein Duplikat.

(06 Sep '17, 10:11) saputello

Die Frage wurde aus folgenden Grund "Duplikat einer anderen Frage" geschlossen saputello 06 Sep '17, 10:22


Wie bereits im ersten Kommentar zur Frage angegeben, liegt das Problem am Namensformat mit biblatex 3.3. Leider musste ich dein Beispiel erst einmal grundsätzlich lauffähig machen:

  • bei \begin{filecontents*} fehlt das Argument mit dem Namen der zu erzeugenden Datei,
  • ein Literaturverzeichnis kann nur erstellt werden, wenn man per \addbibresource auch min. eine Literaturdatenbank verwendet,

um die dort angegebenen Änderungen dumm anwenden zu können:

Öffne in Overleaf
\begin{filecontents*}{\jobname.bib}
@ONLINE{website,
  TITLE        = {Titel der Website},
  HOWPUBLISHED = {Website},
  URL          = {http://www.musterseite.de},
  URLDATE      = {2017-07-11},
}

@book{a,
  title = {Bsp. Titel},
  date = {2012},
  author = {Mustermax, Hans},
  location = {Berlin},
  publisher = {Musterverlag},
}

@article{b,
  title = {Musterarticle},
  pages = {{116--121}},
  number = {39},
  journaltitle = {Musterjurnal},
  author = {Musterautor, Hans and Peter, Lustig and Schulz, Mario and Maier, Marie},
  date = {2012},   
}
\end{filecontents*}

\documentclass [12pt,a4paper]{article}  
\usepackage{cmap}
\usepackage[utf8]{inputenc}             
\usepackage[ngerman]{babel}

%BIBLATEX
\usepackage[style=authoryear-icomp,backend=biber,url=false,isbn=false,maxnames=2,maxbibnames=8,minbibnames=8]{biblatex}
\addbibresource{\jobname.bib}% Hinzugefügt

\DeclareFieldFormat{pages}{#1}

\DeclareFieldFormat*{title}{\textit{#1}}
\DeclareFieldFormat*{citetitle}{\textit{#1}}
\DeclareFieldFormat*{journaltitle}{\textit{#1}}
\DeclareFieldFormat*{booktitle}{\textit{#1}}

\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:}
    \usebibmacro{editor}
    \setunit{\addcolon\space}
    \usebibmacro{maintitle+booktitle}
    \newunit\newblock
    \printfield{edition}
    \newunit
    \iffieldundef{maintitle}
    {\printfield{volume}
        \printfield{part}}
    {}
    \newunit
    \printfield{volumes}
    \newunit\newblock
    \usebibmacro{series+number}
    \newunit\newblock
    \newunit\newblock
    \usebibmacro{chapter+pages}
    \newunit\newblock
    \usebibmacro{publisher+location+date}
    \newunit\newblock
    \newunit\newblock
    \usebibmacro{doi+eprint+url}
    \newunit\newblock
    \usebibmacro{addendum+pubstate}
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{finentry}
}

\renewbibmacro*{editor}{
    \ifnameundef{editor}
    {}
    {\printnames{editor}
        \usebibmacro{editorstrg}
        \clearname{editor}}}
\renewbibmacro*{editorstrg}{
    \iffieldundef{editortype}
    {\ifboolexpr{
            test {\ifnumgreater{\value{editor}}{1}}
            or
            test {\ifandothers{editor}}
        }
        {\addspace\mkbibparens{\bibstring{editors}}}
        {\addspace\mkbibparens{\bibstring{editor}}}}
    {\ifboolexpr{
            test {\ifnumgreater{\value{editor}}{1}}
            or
            test {\ifandothers{editor}}
        }
        {\addspace\mkbibparens{\bibstring{\thefield{editortype}s}}}
        {\addspace\mkbibparens{\bibstring{\thefield{editortype}}}}}
}

\DeclareFieldFormat{pagetotal}{ {} }

\DeclareFieldFormat{volumes}{ {} }

\DeclareNameFormat{default}{
  % siehe http://texwelt.de/wissen/fragen/16629
  \nameparts{#1}%
  \usebibmacro{name:last}
    {\namepartfamily}
    {\namepartgiven}
    {\namepartprefix}
    {\namepartsuffix}%
  \usebibmacro{name:andothers}%
}
\DeclareNameFormat{labelname}{
  % siehe http://texwelt.de/wissen/fragen/16629
  \nameparts{#1}%
  \usebibmacro{name:last}
    {\namepartfamily}
    {\namepartgiven}
    {\namepartprefix}
    {\namepartsuffix}%
  \usebibmacro{name:andothers}%
}

\DeclareNameFormat{sortname}{
  % siehe http://texwelt.de/wissen/fragen/16629
  \nameparts{#1}%
  \iffirstinits
  {%
    \usebibmacro{name:last}
      {\namepartfamily}
      {\namepartgiveni}
      {\namepartprefix}
      {\namepartsuffix}%
  }
  {%
    \usebibmacro{name:last}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  }%
  \usebibmacro{name:andothers}%
}

\let\oldmultinamedelim\multinamedelim
\let\oldfinalnamedelim\finalnamedelim
\renewcommand*{\multinamedelim}{,\space}
\renewcommand*{\finalnamedelim}{~\&\space}
\AtBeginBibliography{
    \renewcommand*{\multinamedelim}{\oldmultinamedelim}
    \renewcommand*{\finalnamedelim}{\oldfinalnamedelim}
}

\usepackage{xpatch}

\xpatchbibmacro{textcite}{
    {\usebibmacro{cite:label}
        \setunit{
            \global\booltrue{cbx:parens}
            \addspace\bibopenparen}
        \ifnumequal{\value{citecount}}{1}
        {\usebibmacro{prenote}}
        {}
        \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
        {\usebibmacro{cite:ibid}}
        {\usebibmacro{cite:labelyear+extrayear}}}
}{
{\usebibmacro{cite:label}
    \setunit{
        \global\booltrue{cbx:parens}
        \addspace\bibopenparen}
    \ifnumequal{\value{citecount}}{1}
    {\usebibmacro{prenote}}
    {}
    \usebibmacro{cite:labelyear+extrayear}}
}{}{}

\xpatchbibmacro{textcite}{
    {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
        {\usebibmacro{cite:ibid}}
        {\usebibmacro{cite:labelyear+extrayear}}}
}{
{\usebibmacro{cite:labelyear+extrayear}}
}{}{}

%ENDE BIBLATEX

\begin{document}
Text. \cite{Website}. Ein weiteres Zitat \cite{a} oder auch \cite{b}.

\printbibliography
\end{document}

Die notwendigen Änderungen waren also exakt so wie unter der oben verlinkten Frage erklärt. Es sei zusätzlich noch darauf hingewiesen, dass das korrekte Format für date eigentlich auch ein ISO-Format wäre. Nur die Jahreszahl ist eigentlich eher als year anzugeben auch wenn biblatex an der Stelle nicht ganz so streng ist.

Permanenter link

beantwortet 06 Sep '17, 10:18

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×222
×8
×2

gestellte Frage: 04 Sep '17, 22:28

Frage wurde gesehen: 6,573 Mal

zuletzt geändert: 06 Sep '17, 10:24