参考书目中的 BibLaTeX 和 origyear 问题

参考书目中的 BibLaTeX 和 origyear 问题

这是我第一次在这里发布问题,所以请原谅一些错误。我想要做的是引用某些内容及其原始出版年份,并让它出现在我的参考书目中。我使用 BibLaTeX 并采用以下选项:

\usepackage[style=authoryear-icomp, bibstyle=authoryear-comp]{biblatex}

为了让我的引用标签显示origyear我很高兴找到以下解决方案:

\DeclareLabelyear{\field{origyear}\field{year}}

如果有的话,这会给我提供引文中的原始出版日期。遗憾的是,参考书目不包括此标签,但包括字段year,因此我引用了“lastname (1891)”,而我的参考书目有一个类似于

lastname, first (2002): titel...

例如。为了适应这种情况,我做了以下事情:

\AtEveryBibitem{%
\iffieldundef{origyear}{%
  \printnames{author} (\printdate)\addcolon\addspace
  }{%
    \setunit*{\addspace}%
    \printtext[]{\printnames{author} (\printorigdate)\addcolon\addspace}%
  }%
\clearname{author}%
\clearfield{year}}

所以,现在我有了正确的标签,这意味着我的参考书目条目是

lastname, firstname (1981): titel...

但实际出版日期已丢失。我想要类似

lastname, firstname (1981): titel... published in booktitel (or whatever) 2002..."

这里有以下两个问题:

  • 有没有更简单的方法可以到达我所在的地方,那就是为什么不\DeclareLabelyear改变我的参考书目中的标签呢?
  • 我该如何在参考书目中包含实际出版日期,以及在哪里?

(此时或许第三个问题也有意义:

  • 首先,我心目中的引用风格是否有意义,或者我应该遵循 APA 建议的风格并在引用和参考书目中使用 (1981/2002) 标签?)

编辑:我被告知要包含一个最低限度的工作示例,因此这里就有了(希望足够):

\documentclass[]{scrartcl}

\usepackage{csquotes}

\usepackage[backend=biber,
    style=authoryear-icomp,
    bibstyle=authoryear-comp,
     ]{biblatex}

\addbibresource{bibliography.bib}

\defbibenvironment{bibliography}
  {\list
     {}
     {\setlength{\leftmargin}{\bibhang}%
      \setlength{\itemindent}{-\leftmargin}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}}
  {\endlist}
  {\item}

\DeclareNameFormat{author}{%
\ifthenelse{\value{listcount}=1}
{\textsc{#1}%
\ifblank{#3}{}{\addcomma\space \textsc{#3}}}
{\ifblank{#3}{}{\textsc{#3}\space}%
\textsc{#1}}%
\ifthenelse{\value{listcount}<\value{liststop}}
{\addcomma\space}
{}}

\AtEveryBibitem{%
\iffieldundef{origyear}{%
  \printnames{author} (\printdate)\addcolon\addspace
  }{%
    \setunit*{\addspace}%
    \printtext[]{\printnames{author} (\printorigdate)\addcolon\addspace}%
  }%
\clearname{author}%
\clearfield{year}}

\DeclareLabelyear{\field{origyear}\field{year}}

\begin{document}

 Some text \cite{Frege.2002a}, some text \cite{Frege.2002b}.

\printbibliography
\end{document}

这就是我所看到的可能与我的问题有关的一切。当然,这是我的.bib条目:

@incollection{Frege.2002c,
 author = {Frege, Gottlob},
 title = {{\"U}ber Sinn und Bedeutung},
 pages = {23--46},
 bookpaginationtype = {page},
 volume = {4},
 publisher = {Vandenhoeck {\&} Ruprecht},
 isbn = {978-3-525-30603-1},
 series = {Sammlung Philosophie},
 editor = {Textor, Mark},
 booktitle = {Funktion - Begriff - Bedeutung},
 year = {2002},
 origdate = {1892},
 location = {G{\"o}ttingen},
 number = {4}
}


@incollection{Frege.2002b,
 author = {Frege, Gottlob},
 title = {Funktion und Begriff},
 pages = {2--22},
 bookpaginationtype = {page},
 volume = {4},
 publisher = {Vandenhoeck {\&} Ruprecht},
 isbn = {978-3-525-30603-1},
 series = {Sammlung Philosophie},
 editor = {Textor, Mark},
 booktitle = {Funktion - Begriff - Bedeutung},
 year = {2002},
 origdate = {1891},
 location = {G{\"o}ttingen},
 number = {4}
} 

此外,您可以从中看到该问题与@incollection条目有关,但我希望全面修复它。

答案1

所有标准作者年份样式都使用authoryear书目样式,该样式有一个名为 的附加选项mergedate。其各种设置在 biblatex 文档的示例 50 中进行了说明。要在书目中使用 ,labelyearyear放弃\AtEveryBibitem钩子,只需使用以下任一方式加载 biblatex:

\usepackage[backend=biber,style=authoryear-icomp,mergedate=basic]{biblatex}
\usepackage[backend=biber,style=authoryear-icomp,mergedate=minimum]{biblatex}
\usepackage[backend=biber,style=authoryear-icomp,mergedate=false]{biblatex}

或者,您可以重新定义date+extrayear参考书目宏:

\renewbibmacro*{date+extrayear}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \printfield{labelyear}%
       \printfield{extrayear}}}}

下一个版本将包含一些改进,mergedate以便作者年份样式能够一致使用labelyear,并且可以通过更灵活地定义年份标签\DeclareLabeldate

相关内容