biblatex: 관련 유형={bytranslator}가 @article 및 @incollection에서 예상대로 작동하지 않습니다.

biblatex: 관련 유형={bytranslator}가 @article 및 @incollection에서 예상대로 작동하지 않습니다.

어제 내가 물었지"...에 의해 ...로 ...로 번역됨" 형식으로 참고문헌에 작품 번역을 포함하는 방법. 나는 필드를 사용하라는 지시를 받았습니다 related={<key>}. relatedtype={bytranslator}이것은 처음에는 내 목적에 매우 잘 맞았습니다. 그러나 나는 그것이 에 대해서만 올바르게 작동하고 또는 에 @book대해서는 작동하지 않는다는 것을 깨달았습니다 . 예를 들어 다음 과 그 번역을 살펴보겠습니다 .@article@incollection@incollection@article

데리다, 자크(2001). “무서운 상황에서는 불가능할 것이라는 확실한 가능성이 있습니다.” 안에:Dire l'événement, est-ce 가능합니까?파리: L'Harmattan, 79~112페이지.

데리다, 자크(2007). “사건을 말할 수 없는 어떤 가능성”. 길라 워커 번역. 안에:중요한 문의33.2, 441~461페이지.

두 가지를 결합하면 다음과 relatedtype={bytranslator}같은 불완전한 항목이 생성됩니다.

데리다, 자크(2001). “무서운 상황에서는 불가능할 것이라는 확실한 가능성이 있습니다.” 안에:Dire l'événement, est-ce 가능합니까?파리: L'Harmattan, 79~112페이지. Gila Walker는 "사건을 말할 수 없는 어떤 가능성"(2007)으로 번역했습니다.

번역이 게재된 저널 및 번호에 대한 정보가 누락되었습니다. 즉, 항목은 다음과 같아야 합니다.

데리다, 자크(2001). “무서운 상황에서는 불가능할 것이라는 확실한 가능성이 있습니다.” 안에:Dire l'événement, est-ce 가능합니까?파리: 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는 "Une 확실한 가능성은 불가능합니다. de dire l'événement"로 번역했습니다. 안에:Dire l'événement, est-ce 가능합니까?(파리: L'Harmattan, 2001).

나는 얻다

데리다, 자크(2007). “사건을 말할 수 없는 어떤 가능성”. 안에:중요한 문의33.2, 441~461페이지. Gila Walker는 "Une 확실한 가능성은 불가능합니다 de dire l'événement"로 번역했습니다(파리: L'Harmattan, 2001).

즉, 등장한 책의 제목이 @incollection누락된 것입니다.

이것은 버그인가요? 그렇다면 해결 방법이 있습니까?

도움을 주셔서 미리 감사드립니다!

답변1

기본 매크로는 s 및 유사한 항목 유형 related:bytranslator에만 잘 작동합니다 . 유형 @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

MWE

\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}

여기에 이미지 설명을 입력하세요

이는 모든 경우에 작동하지 않을 수 있으므로 특수한 경우에 대해 일부 수정이 필요할 수 있습니다.

관련 정보