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ページ。

これら 2 つを組み合わせると、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ページ。ギラ・ウォーカーによる翻訳では「最悪の事態にはあり得ない可能性」となっている。で:恐ろしい出来事、それが可能でしょうか?(パリ:ラルマッタン、2001年)。

私は

デリダ、ジャック(2007年)。「出来事を語るという、ある不可能な可能性」。批判的調査33.2、441~461ページ。ギラ・ウォーカーによる翻訳『Une Certaine possibilité impossible de dire l'événement』(パリ:L'Harmattan、2001年)。

つまり、が@incollection登場する本のタイトルが欠落しています。

これはバグでしょうか? もしそうなら、回避策はあるでしょうか?

ご協力ありがとうございます!

答え1

デフォルトのrelated:bytranslatorマクロは、s および類似のエントリ タイプに対してのみ適切に機能します@book(と思います)。タイプに対して機能させるには@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}

ここに画像の説明を入力してください

これはすべてのケースで機能するわけではないので、特殊なケースでは何らかの変更が必要になる可能性があります。

関連情報