翻译文章的作者年份样式的 BibLaTeX `@set`

翻译文章的作者年份样式的 BibLaTeX `@set`

当将条目类型与 BibLaTeX 中的 authoryear 样式结合使用时@set,我得到了意想不到的结果。集合中的每个条目并没有给出正确的年份,而是重复了主条目的年份。

一个例子更好地解释了这一点:

\begin{filecontents*}{\jobname.bib}
@SET{set,
  entryset = {original,translation}
}

@ARTICLE{original,
  author = {Author, A.},
  journal = {Journal de France},
  year = {1999}
}

@ARTICLE{translation,
  author = {Author, A.},
  journal = {American Journal},
  year = {2000},
  translator = {Traducteur, T.}
}
\end{filecontents*}

\documentclass{article}

\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{set}
\printbibliography
\end{document}

编译结果

我原本以为 1999 年第二次出现会变成 2000 年……或者,书目样式会在后续的集合条目中发生变化。有人能向我澄清这一点或提出解决方法吗?

答案1

您可能应该使用relatedrelatedtype字段而不是@set条目类型。默认情况下定义了一个relatedtype称为bytranslator。但是,它旨在与@book条目结合使用,而不是@article像您的情况那样与条目结合使用。但您仍然可以定义自己的条目,relatedtype如下例所示:

\begin{filecontents*}{\jobname.bib}
@ARTICLE{original,
  author = {Auteur, A.},
  journal = {Journal de France},
  year = {1999},
  title = {Always English},
  related = {translation},
  relatedtype = {articletranslatedin}
}

@ARTICLE{translation,
  author = {Author, A.},
  journal = {American Journal},
  year = {2000},
  title = {Always English},
  translator = {Traducteur, T.}
}
\end{filecontents*}

\documentclass{article}

\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}

\makeatletter
%% Here we basically just re-use code from different places in BibLaTeX
\newbibmacro*{related:articletranslatedin}[1]{%
 \entrydata{#1}{%
  \renewbibmacro*{name:hook}[1]{%
   \ifnumequal{\value{listcount}}{1}
    {\begingroup
     \mkrelatedstring%
     \lbx@initnamehook{#1}%
     \endgroup}
    {}}%
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal+issuetitle}%
  \setunit{\addspace}%
  \printtext[parens]{\printdate}
  \newunit
  \usebibmacro{note+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
   {\printfield{issn}}
   {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
}}
\makeatother

\begin{document}
\nocite{original}
\printbibliography
\end{document}

编译后的结果

但要小心这个例子。它的可移植性不强,并且需要以下内容:

  1. 两个条目中的应该author相同。因此在相关文章中省略了它。我们不检查不同的名称。
  2. 预计title也应相同,并且第二个条目被省略。

相关内容