biblatex: relatedtype={bytranslator} 無法如預期般與 @article 和 @incollection 一起工作

biblatex: relatedtype={bytranslator} 無法如預期般與 @article 和 @incollection 一起工作

昨天我問了如何以「由...翻譯為...」的形式將作品的翻譯納入參考書目中。我被告知要使用字段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}

當我切換translatorrelatedrelatedtype字段(錯誤地)進行@incollection的翻譯時@article,會發生類似的截斷。代替

雅克‧德希達(2007)。 「說出事件的某種不可能的可能性」。在:批判性詢問33.2,第 441-461 頁。吉拉沃克 (Gila Walker) 將其翻譯為“Une certaine possibilité irresible de dire l'événement”。在:可怕的事情,可能嗎?(巴黎:L'Harmattan,2001)。

我明白了

雅克‧德希達(2007)。 「說出事件的某種不可能的可能性」。在:批判性詢問33.2,第 441-461 頁。吉拉沃克 (Gila Walker) 將其翻譯為「Une certaine possibilité Impossible de dire l'événement」(巴黎:L'Harmattan,2001)。

也就是說,出現的書名@incollection遺失了。

這是一個錯誤嗎?如果是這樣,有辦法解決嗎?

在此先感謝您的幫忙!

答案1

預設related:bytranslator巨集僅適用於@books 和類似的條目類型(我認為)。為了使其適用於@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}

在此輸入影像描述

這可能不適用於所有情況,因此可能需要針對極端情況進行一些修改。

相關內容