Personalizando Driver de Bibliografia com Biblatex

Personalizando Driver de Bibliografia com Biblatex

Quero redefinir o Driver de Bibliografia para um tipo de entrada específico (bookinbook) de modo a conter o nome do tradutor, onde o tradutor pode diferir para vários trabalhos dentro do livro pai (não herdado da entrada pai). Então, quero que minha entrada seja parecida com a seguinte:

Platão:Menon. Übers. de Friedrich Schleiermacher. Em:TrabalhoBd. II, pp. 509--599.

--Protágoras. Übers. de Dietrich Kurz. Em:TrabalhoBd. II, S. 83--217.

Eu consigo tudo, exceto a parte "Übers. von" (ed. by), usando o seguinte driver:

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

em combinação com este \newbibmacro:

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

Mas simplesmente não consigo descobrir o que e onde inserir para obter o item "traduzido por" logo após o título. Portanto, qualquer ajuda seria muito apreciada!

Responder1

Adicione a macro \usebibmacro{bytranslator+others}depois \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}}

Observe que tecnicamente for biblatex, translatorfor @in...entradas (e também @bookinbook) refere-se ao tradutor do trabalho geral (o pai @book), então o que fazemos aqui é um pouco exagerado.

informação relacionada