Я хочу переопределить драйвер библиографии для определенного типа записи (bookinbook), чтобы он содержал имя переводчика, причем переводчик может отличаться для разных работ в родительской книге (не унаследованной от родительской записи). Поэтому я хочу, чтобы моя запись выглядела примерно так:
Платон:Менон. Уберс. фон Фридрих Шлейермахер. В:ВеркеТр. II, С. 509--599.
--Протагор. Уберс. фон Дитрих Курц. В:ВеркеТр. II, С. 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}}
Обратите внимание, что технически для biblatex
, translator
для @in...
записей (а также @bookinbook
) относится к переводчику всей работы (родительской @book
), поэтому то, что мы здесь делаем, является некоторой натяжкой.