
Estou tentando usar o date
campo de uma entrada em um bib
arquivo para outra entrada. A ideia é que eu esteja usando outra fonte para datar a entrada (que não tem data) e quero evitar a duplicação de dados.
Biblatex fornece uma maneira simples de usar um campo de outra entrada em um bib
arquivo com o \entrydata{entry_key}{\thefield{field}}
comando.
Embora funcione bem para campos como title
e embora usar o \printdate
comando também funcione se for usado, por exemplo, em um title
campo ( \entrydata{entry_key}{\prindate}
), usar \entrydata{entry_key}{\thefield{date}}
em um date
campo não funciona.
Suponho que tenha a ver com a natureza do date
campo que não é uma simples string, mas depois de ter tentado empiricamente todos os comandos que consegui pensar no manual do biblatex, nada funciona.
Além disso, o date
campo que desejo utilizar virá no YYYY-MM-DD
formato: Gostaria que a data completa fosse mantida para fins de classificação, mas apenas o ano fosse impresso.
Qualquer ajuda seria muito apreciada.
MWE:
\documentclass{article}
\usepackage{biblatex}
\usepackage{filecontents}
\begin{filecontents}{sources.bib}
@article{testart1,
title = {First Article Title},
journaltitle = {Something Times},
date = {1964-02-01},
}
@article{testart2,
title = {\entrydata{testart1}{\thefield{title}}},% using the title of testart1 entry, working
journaltitle = {Another Times},
date = {1975-05-10},
}
@video{testvid,
title = {A Film Title},
editor = {Doe, John},
date = {},% should use date field from testart1 entry, not working with \thefield{date}
}
\end{filecontents}
\addbibresource{sources.bib}
\begin{document}
Lorem.
\nocite{*}
\printbibliography
\end{document}
Responder1
Encontrei uma solução simples:
Para utilizar o date
campo de outra entrada de peito, basta adicionar um crossref
campo à entrada de destino contendo a chave de outra entrada (entrada de origem).
O uso crossref
tem um efeito colateral: preenche a entrada de destino com campos desnecessários da entrada de origem se esses campos ainda não estiverem definidos (uma ocorrência comum se as entradas de origem e de destino forem de tipos diferentes). Isso é facilmente evitado usando \DeclareDataInheritance
. Por exemplo:
\DeclareDataInheritance{article}{music}{% source entry type / destination entry type
\inherit{date}{date}% field we want to use
\noinherit{entrysubtype}% fields we don't want to use
\noinherit{author}
\noinherit{title}
\noinherit{subtitle}
\noinherit{journaltitle}
\noinherit{pages}
}