
date
ファイル内のエントリのフィールドを別のエントリに使用しようとしていますbib
。別のソースを使用してエントリの日付を記入し (エントリ自体には日付がありません)、データの重複を避けたいと考えています。
bib
Biblatex では、コマンドを使用してファイル内の別のエントリのフィールドを使用する簡単な方法が提供されています\entrydata{entry_key}{\thefield{field}}
。
これは や などのフィールドでは適切に機能しますtitle
が、\printdate
コマンドをたとえばtitle
フィールド ( \entrydata{entry_key}{\prindate}
) で使用する場合も機能しますが、フィールド\entrydata{entry_key}{\thefield{date}}
で を使用してもdate
機能しません。
これは単純な文字列ではないフィールドの性質に関係していると思われますdate
が、biblatex マニュアルで考えられるすべてのコマンドを実験的に試してみましたが、何も機能しません。
さらに、date
使用したいフィールドは次のYYYY-MM-DD
形式になります: 並べ替えの目的で日付全体を保持し、年だけを印刷したいと思います。
どのような助けでも大歓迎です。
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}
答え1
簡単な解決策を見つけました:
別の bib エントリのフィールドを使用するには、別のエントリ (ソース エントリ) のキーを含むフィールドを宛先エントリにdate
追加するだけです。crossref
を使用するcrossref
と副作用があり、ソース エントリの不要なフィールドがまだ定義されていない場合、宛先エントリにそれらのフィールドが入力されます (ソース エントリと宛先エントリのタイプが異なる場合によく発生します)。 を使用すると、これを簡単に防ぐことができます\DeclareDataInheritance
。例:
\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}
}