特定のエントリ タイプ (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
)を参照するため、ここで行っていることは少し無理があることに注意してください。