biblatex: relatedtype={bytranslator} no funciona como se esperaba con @article y @incollection

biblatex: relatedtype={bytranslator} no funciona como se esperaba con @article y @incollection

Ayer preguntécómo incluir la traducción de una obra en la bibliografía en la forma "traducida por... como...". Me dijeron que usara los campos related={<key>}y relatedtype={bytranslator}. Al principio, esto funcionó muy bien para mis propósitos. Pero luego me di cuenta de que funciona correctamente sólo para @book, no para @articleo @incollection. Tomemos, por ejemplo, lo siguiente @incollectiony su traducción, que es @article:

Derrida, Jacques (2001). “Una cierta posibilidad imposible de terrible acontecimiento”. En:Dire l'événement, est-ce posible?París: L'Harmattan, páginas 79-112.

Derrida, Jacques (2007). “Una cierta posibilidad imposible de decir el acontecimiento”. Traducido por Gila Walker. En:Investigación crítica33.2, páginas 441–461.

Combinando los dos con relatedtype={bytranslator}se produce la siguiente entrada incompleta:

Derrida, Jacques (2001). “Una cierta posibilidad imposible de terrible acontecimiento”. En:Dire l'événement, est-ce posible?París: L'Harmattan, páginas 79-112. Traducido por Gila Walker como “Una cierta posibilidad imposible de decir el acontecimiento” (2007).

Falta la información sobre la revista y el número en el que apareció la traducción. Es decir, la entrada debería decir (creo):

Derrida, Jacques (2001). “Una cierta posibilidad imposible de terrible acontecimiento”. En:Dire l'événement, est-ce posible?París: L'Harmattan, páginas 79-112. Traducido por Gila Walker como “Cierta posibilidad imposible de decir el acontecimiento”. En:Investigación crítica 33.2 (2007), páginas 441–461.

Aquí hay un ejemplo mínimo:

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

Cuando cambio los campos translator, relatedy relatedtype, (incorrectamente) haciendo la @incollectiontraducción de @article, ocurre un truncamiento similar. En lugar de

Derrida, Jacques (2007). “Una cierta posibilidad imposible de decir el acontecimiento”. En:Investigación crítica33.2, páginas 441–461. Traducido por Gila Walker como “Una cierta posibilidad imposible de dire l'événement”. En:Dire l'événement, est-ce posible?(París: L'Harmattan, 2001).

yo obtengo

Derrida, Jacques (2007). “Una cierta posibilidad imposible de decir el acontecimiento”. En:Investigación crítica33.2, páginas 441–461. Traducido por Gila Walker como “Une suree possibilité imposible de dire l'événement” (París: L'Harmattan, 2001).

@incollectionEs decir, falta el título del libro en el que apareció.

¿Es esto un error? Si es así, ¿hay alguna forma de evitarlo?

¡Gracias de antemano por tu ayuda!

Respuesta1

La related:bytranslatormacro predeterminada funciona bien sólo para @books y tipos de entrada similares (creo). Para que funcione con @in...tipos, necesitamos modificar un poco la macro.

Para cada uno de estos tipos de entrada que necesitan más resultados, verificamos ese tipo e imprimimos la información deseada (el código para eso se toma de 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}

ingrese la descripción de la imagen aquí

Es posible que esto no funcione en todos los casos, por lo que es posible que sea necesario realizar algunas modificaciones en los casos extremos.

información relacionada