昨天我问过如何将某部作品的译文以“由...翻译为...”的形式纳入参考书目。我被告知要使用字段related={<key>}
和relatedtype={bytranslator}
。起初,这对我来说效果很好。但后来我意识到它只对正确起作用@book
,而对@article
或不起作用@incollection
。例如,以下@incollection
及其翻译是@article
:
德里达,雅克(2001)。 “可怕的事件导致某些可能性不大”。在:事情太糟糕,可能吗?巴黎:L'Harmattan,第 79-112 页。
德里达,雅克 (2007)。“说出事件的某种不可能的可能性”。吉拉·沃克译。在:批判性探究33.2,第 441-461 页。
将两者结合起来relatedtype={bytranslator}
产生以下不完整的条目:
德里达,雅克(2001)。 “可怕的事件导致某些可能性不大”。在:事情太糟糕,可能吗?巴黎:L'Harmattan,第 79–112 页。吉拉·沃克 (Gila Walker) 译为“说出事件的某种不可能的可能性” (2007 年)。
缺少有关该译文刊登的期刊和期刊号的信息。也就是说,该条目应为(我认为):
德里达,雅克(2001)。 “可怕的事件导致某些可能性不大”。在:事情太糟糕,可能吗?巴黎:L'Harmattan,第 79–112 页。吉拉·沃克 (Gila Walker) 译为“说出事件的某种不可能的可能性”。在:批判性探究 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 页。吉拉·沃克 (Gila Walker) 将其译为“可怕的事件中不可能出现的可能性”。在:事情太糟糕,可能吗?(巴黎:L'Harmattan,2001 年)。
我明白了
德里达,雅克 (2007)。“说出事件的某种不可能的可能性”。在:批判性探究33.2,第 441-461 页。吉拉·沃克 (Gila Walker) 译作“某种不可能的可能性”(巴黎: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}
这可能不适用于所有情况,因此可能需要针对特殊情况进行一些修改。