Biblatex:仅清除某些参考文献的额外年份字段

Biblatex:仅清除某些参考文献的额外年份字段

这是我第一次提问,所以我希望我说清楚了......

我想引用同一篇参考文献两次,一次采用作者年份格式,一次采用简写格式,并打印两个不同的参考书目。我想这样做是因为这本书是古希腊铭文的集合,所以在某些情况下我只想给出铭文的编号,而在其他情况下我感兴趣的是铭文的编辑者对它们的评价。

在我下面的例子中,在我的正常参考书目中,有一个“Bresson 1991b”,尽管没有“Bresson 1991a”,因为另一个具有相同名称和年份的参考文献(实际上是相同的)有简写并打印在简写列表中。 所以我想使用“Bresson 1991”,没有标签,但仍然能够区分“Guy 2017a”和“Guy 2017b”。

我的参考书目文件中有同一条参考文献的两个条目,但它们看起来完全不同,因为我添加了简写、关键字、分页,并将作者更改为编辑。所以我认为没有办法判断它们是同一条参考文献,但也许只有当同一参考书目中有同一位作者和日期的参考文献时才biblatex可以给出标签。extrayear

我只能extrayear使用 来清除简写列表中的字段\AtEveryBiblistitem{shorthand}{\clearfield{extrayear}}。这是我的 MWE:

\documentclass[12pt,a4paper]{report} 
\usepackage[citestyle=authoryear-icomp, bibstyle=authoryear-icomp, backend=biber]{biblatex}
\AtEveryBiblistitem{shorthand}{\clearfield{extrayear}}
\addbibresource{Bibliography.bib}

\begin{document}
About the inscription \cite[44]{i.peree.rhodes}, Alain \textcite[68-69]{bresson1991} suggests that blablabla. \textcites{otherguy2017a}{otherguy2017b} agrees that blablabla.

\printbibliography[notkeyword=epigraphy]
\printbiblist[keyword=epigraphy]{shorthand} 
\end{document}

参考书目如下:

@book{otherguy2017b,
Author = {Guy, Other},
Booktitle = {Another Book},
Title = {Another Book},
Year = {2017}}

@book{otherguy2017a,
Author = {Guy, Other},
Title = {Some title},
Year = {2017}}

@book{bresson1991, 
Address = {Paris},
Author = {Bresson, Alain},
Booktitle = {Recueil des inscriptions},
Title = {Recueil des inscriptions},
Year = {1991}}

@book{i.peree.rhodes,
Address = {Paris},
Booktitle = {Recueil des inscriptions},
Editor = {Bresson, Alain},
Keywords = {epigraphy},
Pagination = {none},
Shorthand = {\emph{I.Per.Rhod.}},
Title = {Recueil des inscriptions},
Year = {1991}}

另外,我不明白biblatex标签是如何定义的。如果我在\cite{bresson1991}之前引用\cite{i.peree.rhodes},第一个会显示为 Bresson 1991a,但如果我在第二个引用它,它就会变成“Bresson 1991b”。但是当我使用时\textcites{otherguy2017a}{otherguy2017b},第一个引用的参考文献是标签 Guy 2017b,第二个引用 Guy 2017a。有没有办法确定哪个是 a,哪个是 b?

答案1

如果您不想对条目使用“正常标签方案”,则可以使用选项skiplab。使用authoryear-type 样式,条目将获得否extrayear,并且条目将被忽略,以消除所有歧义。您希望此选项用于i.peree.rhodes

@book{i.peree.rhodes,
  address    = {Paris},
  editor     = {Bresson, Alain},
  keywords   = {epigraphy},
  pagination = {none},
  shorthand  = {\emph{I.Per.Rhod.}},
  title      = {Recueil des inscriptions},
  year       = {1991},
  options    = {skiplab=true},
}

(对于一个条目来说booktitle,与重合是没有用的,所以我把它删除了。)相关行是最后一行。title@bookoptions = {skiplab=true},

通过此设置,您bresson1991在 MWE 中的条目将被引用为“Bresson 1991”和i.peree.rhodesI.Per.Rhod.“”。

您将不再需要它了\AtEveryBiblistitem{shorthand}{\clearfield{extrayear}}


对于问题的第二部分:

如果您使用authoryear-family 样式,biblatex则使用名为 的排序方案nyt。简而言之,这会通过“名称 -> 年份 -> 标题”对条目进行排序。排序顺序也决定了extrayear

在您的 MWE 中i.peree.rhodes,并且bresson1991根据所有相关的排序标准并列(毕竟,这是同一项工作!),因此为了打破平局,Biber 只需查看谁首先被引用。

otherguy2017a但是,和总是按< 的otherguy2017b顺序排列,因为前者的标题是“另一本书”,它排在 的“某个标题”之前。otherguy2017aotherguy2017botherguy2017b


\documentclass[12pt,a4paper]{article} 
\usepackage[citestyle=authoryear-icomp, bibstyle=authoryear-icomp, backend=biber]{biblatex}

\usepackage{filecontents}  
\begin{filecontents}{\jobname.bib}  
@book{otherguy2017b,
  author = {Guy, Other},
  title = {Another Book},
  year = {2017},
}

@book{otherguy2017a,
  author = {Guy, Other},
  title = {Some title},
  year = {2017},
}

@book{bresson1991, 
  address = {Paris},
  author  = {Bresson, Alain},
  title   = {Recueil des inscriptions},
  year    = {1991},
}

@book{i.peree.rhodes,
  address    = {Paris},
  editor     = {Bresson, Alain},
  keywords   = {epigraphy},
  pagination = {none},
  shorthand  = {\emph{I.Per.Rhod.}},
  title      = {Recueil des inscriptions},
  year       = {1991},
  options    = {skiplab=true},
}
\end{filecontents}  
\addbibresource{\jobname.bib}

\begin{document}
About the inscription \cite[44]{i.peree.rhodes}, Alain \textcite[68-69]{bresson1991} suggests that blablabla. \textcites{otherguy2017a}{otherguy2017b} agrees that blablabla.

\printbibliography[notkeyword=epigraphy]
\printbiblist[keyword=epigraphy]{shorthand} 
\end{document}

平均能量损失

相关内容