Biblatex による書誌ドライバのカスタマイズ

Biblatex による書誌ドライバのカスタマイズ

特定のエントリ タイプ (bookinbook) の Bibliography Driver を再定義して、翻訳者の名前を含めたいと思います。翻訳者は、親ブック内のさまざまな作品ごとに異なる場合があります (親エントリから継承されません)。そのため、エントリは次のようになります。

プラトン:メノン。ウーバース。フリードリヒ・シュライエルマッハー。で:ヴェルケBd. II、S. 509--599。

--プロタゴラス。ウーバース。ディートリッヒ・クルツ。で:ヴェルケBd. II、S. 83--217。

次のドライバーを使用して、「Übers. von」(ed. by) 部分を除くすべてを実現します。

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

この\newbibmacroと組み合わせて:

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

しかし、タイトルの直後に「翻訳者」と表示させるには、何をどこに挿入すればよいのかがわかりません。どなたか助けていただければ幸いです。

答え1

\usebibmacro{bytranslator+others}の後にマクロを追加します\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}}

技術的にはbiblatex、の場合、エントリtranslator@in...(および@bookinbook)は全体の作業の翻訳者(親@book)を参照するため、ここで行っていることは少し無理が​​あることに注意してください。

関連情報