Anpassen des Bibliografietreibers mit Biblatex

Anpassen des Bibliografietreibers mit Biblatex

Ich möchte den Bibliografietreiber für einen bestimmten Eintragstyp (bookinbook) neu definieren, sodass er den Namen des Übersetzers enthält, wobei der Übersetzer für verschiedene Werke innerhalb des übergeordneten Buchs unterschiedlich sein kann (nicht vom übergeordneten Eintrag übernommen). Daher möchte ich, dass mein Eintrag ungefähr wie folgt aussieht:

Platon:Menon. Übers. von Friedrich Schleiermacher. In:WerkeBd. II, S. 509--599.

--Protagoras. Übers. von Dietrich Kurz. In:WerkeBd. II, S. 83--217.

Alles außer dem „Übers. von“-Teil erreiche ich mit dem folgenden Treiber:

\DeclareBibliographyDriver{bookinbook}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{in:}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:full}}
    {\usebibmacro{crossref:labelbookinbook}}
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \iffieldundef{crossref}
    {\usebibmacro{crossref:extrainfo}}
    {}
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \usebibmacro{finentry}}

in Kombination mit diesem \newbibmacro:

\newbibmacro{crossref:labelbookinbook}{%
    \entrydata{\strfield{crossref}}
    {\printfield[title]{labeltitle}}
    \setunit*{\addspace}
    \printfield{volume}}

Aber ich weiß einfach nicht, was und wo ich einfügen muss, damit die Angabe „übersetzt von“ direkt hinter dem Titel steht. Ich wäre also für jede Hilfe sehr dankbar!

Antwort1

Fügen Sie das Makro \usebibmacro{bytranslator+others}danach hinzu \usebibmacro{byauthor}.

\DeclareBibliographyDriver{bookinbook}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\labelnamepunct}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock
    \usebibmacro{bytranslator+others}%
    \newunit\newblock
    \usebibmacro{in:}%
    \iffieldundef{crossref}
      {\usebibmacro{crossref:full}}
      {\usebibmacro{crossref:labelbookinbook}}%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \iffieldundef{crossref}
      {\usebibmacro{crossref:extrainfo}}
      {}%
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \usebibmacro{finentry}}

Beachten Sie, dass sich bei biblatex, translatorbei @in...Einträgen (und auch @bookinbook) technisch gesehen auf den Übersetzer des Gesamtwerks (das übergeordnete @book) bezieht. Was wir hier also tun, ist etwas weit hergeholt.

verwandte Informationen