biblatex-chicago 不打印 cmsdate=both 的 origyear

biblatex-chicago 不打印 cmsdate=both 的 origyear

在下面的 MWE 中,biblatex-chicago 带有选项cmsdate=both,而不是像这样打印 origyear 和 year([1956] 1980) 它打印两次年份([1980] 1980),既在文内引用中,也在参考书目条目中。

\documentclass{article}   %
\usepackage{polyglossia}
\setdefaultlanguage{english}
\usepackage[authordate, backend=biber,%
    bookpages=false, isbn=false, doi=false, numbermonth=false,% don't print doi, isbn, (total) pages for books, and month in articles
    mincrossrefs=10,% only include the @collection when more than 10 @incollections unless explicitly cited
    longcrossref=true,% no abbreviated citations of @incollection, @inbook, etc. 
    cmsdate=both]% print both, origdate and date >> change to =off to only print date
    {biblatex-chicago}
\DeclareLanguageMapping{american}{cms-american}
\addbibresource{Bibliography.bib}

\begin{document}
\autocite{Jakobson:1980} 
\printbibliography
\end{document}

相关 bibfile 条目:

@inbook{Jakobson:1980,
    Author = {Jakobson, Roman},
    Booktitle = {The Framework of Language},
    Location = {Ann Arbor},
    Origyear = {1956},
    Pages = {81--92},
    Publisher = {University of Michigan Press},
    Shorttitle = {Metalanguage as a Linguistic Problem},
    Title = {Metalanguage as a Linguistic Problem},
    Year = {1980}}

之前一直运行良好。不知道在哪里查找错误。

在此处输入图片描述

答案1

为什么会发生这种情况?

origyear不是A支持的输入字段,正确使用的字段是origdate

根据经验法则,正确的字段始终是...date,您永远不应使用单独的字段...year或。 唯一的例外是出于兼容性原因,可以接受 ,但即使存在 ,也...month强烈建议 而不是。...dayyeardateyear

你会发现 whileorigdate在§2.2.2 中的已知字段列表中列出数据字段origyear不是。origyear仅在§4.2.4.3中提及日期组件字段,但这是 §4.2.4 的一个小节特殊字段以(重点是我的)开头

以下列表和字段用于biblatex将数据传递给参考书目驱动程序和引用命令。它们不在bib文件中使用,而是由包自动定义。从参考书目或引用样式的角度来看,它们与文件中的字段没有区别bib

因此文档中非常清楚不应在文件origyear中使用.bib。它几乎可以正常工作,这是 Biber 如何解析...date字段的产物。

这里具体的问题是什么?

如果你付出, year = {1980}, origyear = {1956}你最终会得到

\field{labeldatesource}{year}
\field{origyear}{1956}
\field{year}{1980}

.bbl文件中。但是如果正确,date = {1980}, origdate = {1956},你就会得到

\field{labeldatesource}{orig}
\field{origyear}{1956}
\field{year}{1980}
\field{dateera}{ce}
\field{origdateera}{ce}

的条目...dateera在这里并不那么相关,但对我们来说重要的是该\field{labeldatesource}行。该行告诉我们,在第一种情况下,year被视为主要标签日期,而在第二种情况下,origdate负责标签日期。

现在biblatex-chicago有一些真的日期处理的代码很复杂,但本质上代码总是假设labeldate 以下内容

\DeclareLabeldate{
  \field{origdate}
  \field{date}
  \field{year}
  \field{eventdate}
  \field{urldate}}

因此origdate优先于date,即如果origdatedate/同时year存在,origdate则为labeldate。如果origyear使用,则不会发生这种情况。

这就是biblatex-chicago令人困惑的地方:它假设由于和都origyear存在year,所以第一个也必须等于labelyear。所以它打印labelyearyear。但事实证明labelyearyear,所以它只是打印了两次相同的年份。

如何修复此问题?

当然,通过使用正确的输入

@inbook{Jakobson:1980,
  author    = {Jakobson, Roman},
  title     = {Metalanguage as a Linguistic Problem},
  date      = {1980},
  booktitle = {The Framework of Language},
  publisher = {University of Michigan Press},
  location  = {Ann Arbor},
  origdate  = {1956},
  pages     = {81--92},
}

如果您使用参考文献管理器来编写.bib文件,那么应该有一种方法可以使用origdate而不是。即使您没有,在文件中origyear搜索并替换 到 也相当简单origyear(如果您从来没有 ,这就是所需的全部)。origdate.biborigmonth

如果你必须找到一个解决损坏.bib文件的方法,你可以尝试

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=origyear, fieldtarget=origdate, final]
      \step[fieldset=origyear, null]
      \step[fieldsource=origmonth, final]
      \step[fieldset=origdate, fieldvalue=-, append]
      \step[fieldset=origdate,  origfieldval, append]
      \step[fieldsource=origmonth, null]
      \step[fieldsource=origday, final]
      \step[fieldset=origdate, fieldvalue=-, append]
      \step[fieldset=origdate,  origfieldval, append]
      \step[fieldsource=origday, null]
    }
  }
}

origyear

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=origyear, fieldtarget=origdate, final]
      \step[fieldset=origyear, null]
    }
  }
}

答案2

我不知道在biblatex-chicago这方面最近发生了什么变化。但手册中提到了origdatedate,这与 的术语一致biblatex。事实上,有了这些字段,它就能按预期工作。

@inbook{Jakobson:1980,
    Author = {Jakobson, Roman},
    Booktitle = {The Framework of Language},
    Location = {Ann Arbor},
    Origdate = {1956},
    Pages = {81--92},
    Publisher = {University of Michigan Press},
    Shorttitle = {Metalanguage as a Linguistic Problem},
    Title = {Metalanguage as a Linguistic Problem},
    Date = {1980}}

结果是:

在此处输入图片描述

相关内容