Вчера я спросилкак включить перевод произведения в библиографию в форме «переведено ... как ...». Мне сказали использовать поля related={<key>}
и relatedtype={bytranslator}
. Сначала это работало очень хорошо для моих целей. Но потом я понял, что это работает правильно только для @book
, а не для @article
или @incollection
. Возьмем, к примеру, следующее @incollection
и его перевод, который является @article
:
Деррида, Жак (2001). «Определенная возможность невозможного события». В:Dire l'événement, est-ce possible?Париж: L'Harmattan, страницы 79–112.
Деррида, Жак (2007). «Некая невозможная возможность высказывания события». Перевод Джилы Уокер. В:Критическое расследование33.2, страницы 441–461.
Объединение этих двух записей relatedtype={bytranslator}
дает следующую неполную запись:
Деррида, Жак (2001). «Определенная возможность невозможного события». В:Dire l'événement, est-ce possible?Париж: L'Harmattan, страницы 79–112. Перевод Джилы Уокер как «Некая невозможная возможность высказывания события» (2007).
Информация о журнале и номере, в котором был опубликован перевод, отсутствует. То есть запись должна выглядеть так (я думаю):
Деррида, Жак (2001). «Определенная возможность невозможного события». В:Dire l'événement, est-ce possible?Париж: L'Harmattan, страницы 79–112. Переведено Джила Уокер как «Некая невозможная возможность высказывания события». В:Критическое расследование 33.2 (2007), страницы 441–461.
Вот минимальный пример:
\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents}{biblio.bib}
@incollection{Derrida2001,
author = {Derrida, Jacques},
title = {Une certaine possibilit\'{e} impossible de dire l'\'{e}v\'{e}nement},
location = {Paris},
publisher = {L'Harmattan},
year = {2001},
pages = {79-112},
booktitle = {Dire l'\'{e}v\'{e}nement, est-ce possible?},
related = {Derrida2007},
relatedtype = {bytranslator},
}
@article{Derrida2007,
author = {Derrida, Jacques},
translator = {Walker, Gila},
title = {A certain impossible possibility of saying the event},
journaltitle = {Critical Inquiry},
volume = {33},
number = {2},
year = {2007},
pages = {441-461},
}
\end{filecontents}
\usepackage[style=authoryear,abbreviate=false]{biblatex}
\addbibresource{biblio.bib}
\begin{document}
Citing a text by \textcite{Derrida2001}.
\printbibliography
\end{document}
Когда я меняю местами поля translator
, related
, и relatedtype
, (неправильно) делая @incollection
перевод @article
, происходит похожее усечение. Вместо
Деррида, Жак (2007). «Некая невозможная возможность высказывания события». В:Критическое расследование33.2, страницы 441–461. Перевод Джилы Уокер: «Определенная возможность невозможного события». В:Dire l'événement, est-ce possible?(Париж: L'Harmattan, 2001).
я получил
Деррида, Жак (2007). «Некая невозможная возможность высказывания события». В:Критическое расследование33.2, страницы 441–461. Перевод Джилы Уокер: «Une certaine possibilité impossible de dire l'événement» (Париж: L'Harmattan, 2001).
То есть название книги, в которой оно @incollection
появилось, отсутствует.
Это ошибка? Если да, то есть ли способ ее обойти?
Заранее спасибо за вашу помощь!
решение1
Макрос по умолчанию related:bytranslator
хорошо работает только для @book
s и подобных типов записей (я думаю). Чтобы он работал для @in...
типов, нам нужно немного изменить макрос.
Для каждого из этих типов записей, которым требуется больше вывода, мы проверяем этот тип и выводим нужную информацию (код для этого взят из standard.bbx
).
\makeatletter
\newbibmacro*{related:bytranslator}[1]{%
\entrydata{#1}{%
\renewbibmacro*{name:hook}[1]{%
\ifnumequal{\value{listcount}}{1}
{\begingroup
\mkrelatedstring%
\lbx@initnamehook{#1}%
\endgroup}
{}}%
\printnames[bytranslator]{translator}%
\clearname{translator}%
\setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}%
\usebibmacro{title}%
\ifentrytype{article}
{\usebibmacro{in:}%
\usebibmacro{journal+issuetitle}}
{}
\ifentrytype{inbook}
{\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}}
{}
\ifentrytype{incollection}
{\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}}
{}
\ifentrytype{inproceedings}
{\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}}
{}
\setunit{\addspace}%
\printtext[parens]{%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printdate}
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}}}
\makeatother
МВЭ
\documentclass[12pt]{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{Derrida2001,
author = {Derrida, Jacques},
title = {Une certaine possibilit\'{e} impossible de dire l'\'{e}v\'{e}nement},
location = {Paris},
publisher = {L'Harmattan},
year = {2001},
pages = {79-112},
booktitle = {Dire l'\'{e}v\'{e}nement, est-ce possible?},
related = {Derrida2007},
relatedtype = {bytranslator},
}
@article{Derrida2007,
author = {Derrida, Jacques},
title = {A certain impossible possibility of saying the event},
journaltitle = {Critical Inquiry},
translator = {Walker, Gila},
volume = {33},
number = {2},
year = {2007},
pages = {441-461},
}
\end{filecontents}
\usepackage[style=authoryear,abbreviate=false]{biblatex}
\addbibresource{\jobname.bib}
\makeatletter
\newbibmacro*{related:bytranslator}[1]{%
\entrydata{#1}{%
\renewbibmacro*{name:hook}[1]{%
\ifnumequal{\value{listcount}}{1}
{\begingroup
\mkrelatedstring%
\lbx@initnamehook{#1}%
\endgroup}
{}}%
\printnames[bytranslator]{translator}%
\clearname{translator}%
\setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}%
\usebibmacro{title}%
\ifentrytype{article}
{\usebibmacro{in:}%
\usebibmacro{journal+issuetitle}}
{}
\ifentrytype{inbook}
{\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}}
{}
\ifentrytype{incollection}
{\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}}
{}
\ifentrytype{inproceedings}
{\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}}
{}
\setunit{\addspace}%
\printtext[parens]{%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printdate}
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}}}
\makeatother
\begin{document}
Citing a text by \textcite{Derrida2001}.
\printbibliography
\end{document}
Это может не сработать во всех случаях, поэтому для особых случаев могут потребоваться некоторые изменения.