我想為特定條目類型(bookinbook)重新定義書目驅動程序,以便包含翻譯者的姓名,其中翻譯者可能因父書中的各種作品(不是從父條目繼承)而有所不同。因此,我希望我的條目如下所示:
柏拉圖:梅農。尤伯斯。馮·弗里德里希·施萊爾馬赫。在:沃克BD。 II,S.509--599。
--普羅泰戈拉。尤伯斯。馮·迪特里希·庫爾茲.在:沃克BD。 II,S.83--217。
我透過使用以下驅動程式實現了除了「Übers.von」(編者)部分之外的所有內容:
\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}}
請注意,從技術上講, for biblatex
、translator
for@in...
條目(以及也@bookinbook
)指的是整個作品的翻譯者(父親@book
),因此我們在這裡所做的有點牽強。