问题
我正在写一篇论文,主要分析不同作者在不同年份撰写的两篇论文,并使用了其他一些来源。引用是通过\textcite
或\parencite
使用 biblatex 的命令完成的。我想在主要论文的文本引用中省略作者,但不影响其余的书目条目。
例子
代替
作者提到,很难找到一个例子(Author,2009,第 83 页)。然而,另一位作者提到,这可能更加困难(Author2,2008,第 77 页)。
我想
作者提到,很难找到一个例子 (2009, p.83)。然而,另一位作者提到,这可能更加困难 (2008, p.77)。
我认为只要我不在这个命名方案中包含更多论文,可能就可以了?其他人对此有什么看法?但是,在参考书目列表中,我希望作者字段存在(即不变)。
问题
有人知道是否有一种优雅的方法吗? 也许有一些使用 biblatex 自定义特定条目的通用方法?
答案1
有几种方法可以抑制labelname
引用。钩子
\AtEveryCitekey{\clearname{labelname}}
会删除labelname
每个引文中的列表,但样式通常会打印后备值。authoryear
例如,样式会在字段不可用labeltitle
时打印该字段labelname
。抑制所有后备值通常会导致虚假的空格或标点符号。
解决这一切的一个简单方法是保存labelyear
到shorthand
现场。
\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\DeclareBibliographyCategory{citeyear}
\addtocategory{citeyear}{companion,knuth:ct:a}
\AtEveryCitekey{%
\ifcategory{citeyear}
{\edef\cbxlabel{\thefield{labelyear}}%
\restorefield{shorthand}{\cbxlabel}}
{}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\textcite[10--11]{companion} showed that...
Filler \parencite[e.g.][10--15]{knuth:ct:a}.
Filler \textcite[10--11]{kant:ku}.
Filler \parencite[e.g.][10--15]{kant:kpv}.
\printbibliography
\end{document}
请注意,labelname
中仍会出现\textcite
。这是故意的。\textcite
类似于\citeasnoun
哈佛格式中的 。 抑制labelname
就像\textcite
省略 中的名词一样\citeasnoun
。这毫无意义。
labelyear
不是一个很有意义的引用标签。因此我建议使用基于作品标题或作者的简写。上述文档引用了两个使用简写形式的条目biblatex-examples.bib
。以下是该文件的摘录。
@inbook{kant:kpv,
shorthand = {KpV},
author = {Kant, Immanuel},
title = {Kritik der praktischen Vernunft},
shorttitle = {Kritik der praktischen Vernunft},
booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft},
maintitle = {Kants Werke. Akademie Textausgabe},
volume = {5},
publisher = {Walter de Gruyter},
location = {Berlin},
date = {1968},
pages = {1--163},
}
@inbook{kant:ku,
shorthand = {KU},
author = {Kant, Immanuel},
title = {Kritik der Urtheilskraft},
booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft},
maintitle = {Kants Werke. Akademie Textausgabe},
volume = {5},
publisher = {Walter de Gruyter},
location = {Berlin},
date = {1968},
pages = {165--485},
}