使用authoryear.cbx
引文格式—— \textcite
“作者 (2012)”或\parencite
“(作者 2012)”——如果同一作者在同一年有多个条目,通常会使用小写字母后缀:“作者 (2013b)”。否则,(必填)年份部分可消除同一作者的多个条目的歧义,并显示确实存在引文(附有参考书目条目)。页码等内容可以用冒号前缀附加到年份上:“作者 (2012:123)”/“(作者 2012:123)”。
如果引用了撰写了多篇与你的作品相关的文本的作者,这是一种非常有用的样式。但在某些情况下,参考书目几乎不包含多个作者条目,即年份变得多余。author
那么简单的引用样式就足够了——“作者”或“(作者)”——尽管\textcite
(也许\autocite
)应该使用一些字体样式,例如小写字母或斜体“作者”,以强调名称应被视为引用,而不是随意出现的。
当然,仍然需要消除歧义。可以通过添加(可能缩短的)年份来实现 - “作者14“” / “作者'14” / “作者2014“” / “作者2014” / “作者(2014)”——或者按字母或数字索引:“作者A“” / “作者“” / “作者(一)“” / “作者A ” // ”作者1“” / “作者1” / “作者1 ”。我倾向于使用不会被误认为是脚注标记的上标字母。
有没有author.cbx
我忽略的可以实现这一点的方法?
您会从其他东西中衍生出这种风格authoryear.cbx
吗?需要哪些额外的代码?
\documentclass{scrartcl}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@book{foo12, Author={A. Uthor}, Title={Some Title}, Year={2012}, Publisher={Standard Press}, Address={Global}}
@book{foo13a, Author={A. Uthor}, Title={Another Title}, Year={2013}, Publisher={Standard Press}, Address={Global}}
@book{foo13b, Author={A. Uthor}, Title={Boring Title}, Year={2013}, Publisher={Standard Press}, Address={Global}}
@book{foos10, Author={A. Uthor and A. Uteur}, Title={International Title}, Year={2010}, Publisher={Standard Press}, Address={Global}}
@book{foos11, Author={A. Uthor and C. Utor}, Title={Collaboration Title}, Year={2011}, Publisher={Standard Press}, Address={Global}}
@book{foos12, Author={A. Uteur and B. Uteur}, Title={Foreign Title}, Year={2012}, Publisher={Standard Press}, Address={Global}}
@book{bar14, Author={B. Uteur}, Title={Interesting Title}, Year={2014}, Publisher={Standard Press}, Address={Global}}
@book{baz14, Author={A. Uteur}, Title={New Title}, Year={2014}, Publisher={Standard Press}, Address={Global}}
\end{filecontents}
\addbibresource{\jobname.bib}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} % smallcaps for last names
\begin{document}
Let’s cite some book \autocite{foo12} or a particular page therein \autocite[123]{foo12}.
Its author also published two works during the following year \autocite{foo13a,foo13b}.
Our friend did two collaborations \autocite{foos10,foos11},
but others worked together as well \autocite{foos12}.
Those two authors with same last name are also cited individually \autocite{bar14,baz14}.
\printbibliography
\end{document}
附言:我不喜欢作者-年份引用格式与参考书目格式相结合,即作者排在最前面,年份排在最后(几乎)。我也不喜欢前后不一致的姓名列表,如“Uthor, A. and A. Uteur”,但那是另一回事。
答案1
我之前在评论中写道,没有办法biblatex
判断一个作者(更好labelname
:)写了一部还是多部作品,这似乎是错的。甚至有一个测试可以测试这一点:\ifsingletitle
参见第 174 页biblatex
文档):
如果参考书目中
<true>
只有一部同名的作品,则扩展为 ,否则扩展为 。如果条目根本没有 名称,则如果参考书目中只有一部同名的作品,则扩展为 ,否则扩展为 。如果条目既未设置也未设置 ,则将始终扩展为。请注意,此功能需要使用包选项 明确启用。labelname
<false>
labelname
<true>
labeltitle
<false>
labelname
labeltitle
<false>
singletitle
authoryear
对的宏进行很小的修改cite
,
\newbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\ifsingletitle% this is new
{}% do not print year if only work by labelname
{\usebibmacro{cite:labelyear+extrayear}}}% print year to disambiguate
{\usebibmacro{cite:shorthand}}}
如果特定作者只有一部作品,则返回“名称”,如果有多个作品,则返回“名称年份[+额外年份]”。
可能有办法实现“作者 1”、“作者 2”等页,但我认为“作者年份”是最自然的(并且考虑到参考书目的格式最容易找到)。
平均能量损失
\documentclass{scrartcl}
\usepackage[style=authoryear,singletitle]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{foo12, Author={A. Uthor}, Title={Some Title}, Year={2012}, Publisher={Standard Press}, Address={Global}}
@book{foo13a, Author={A. Uthor}, Title={Another Title}, Year={2013}, Publisher={Standard Press}, Address={Global}}
@book{foo13b, Author={A. Uthor}, Title={Boring Title}, Year={2013}, Publisher={Standard Press}, Address={Global}}
@book{foos10, Author={A. Uthor and A. Uteur}, Title={International Title}, Year={2010}, Publisher={Standard Press}, Address={Global}}
@book{foos11, Author={A. Uthor and C. Utor}, Title={Collaboration Title}, Year={2011}, Publisher={Standard Press}, Address={Global}}
@book{foos12, Author={A. Uteur and B. Uteur}, Title={Foreign Title}, Year={2012}, Publisher={Standard Press}, Address={Global}}
@book{bar14, Author={B. Uteur}, Title={Interesting Title}, Year={2014}, Publisher={Standard Press}, Address={Global}}
@book{baz14, Author={A. Uteur}, Title={New Title}, Year={2014}, Publisher={Standard Press}, Address={Global}}
\end{filecontents*}
\DeclareNameAlias{sortname}{last-first}
\addbibresource{\jobname.bib}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}} % smallcaps for last names
\newbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\ifsingletitle
{}%
{\usebibmacro{cite:labelyear+extrayear}}}%
{\usebibmacro{cite:shorthand}}}
\begin{document}
Let’s cite some book \autocite{foo12} or a particular page therein \autocite[123]{foo12}.
Its author also published two works during the following year \autocite{foo13a,foo13b}.
Our friend did two collaborations \autocite{foos10,foos11},
but others worked together as well \autocite{foos12}.
Those two authors with same last name are also cited individually \autocite{bar14,baz14}.
\printbibliography
\end{document}