碰巧,我有一个 .bib 数据库,其中包含同一作者的多个作品。照例,在第二部作品中添加了一个字母以区分参考文献。(第一部作品仅按年份引用。)
梅威瑟:
\documentclass{scrreprt}
\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes}
\begin{filecontents}{\jobname.bib}
@article{Preissmann.2013,
title = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
author = {Preissmann, Christine},
date = {2013},
journaltitle = {Psychopraxis},
volume = {16},
number = {4},
pages = {17--19},
langid = {german}
}
@book{Preissmann.2013a,
title = {Überraschend anders. Mädchen \& Frauen mit Asperger},
author = {Preissmann, Christine},
date = {2013},
publisher = {Trias},
langid = {german}
}
\end{filecontents}
\usepackage[bibstyle=verbose, citestyle=authoryear-icomp, language=auto, autolang=other,
dashed=true, maxcitenames=2, sorting=nyt, alldates=year]{biblatex}
\addbibresource{\jobname.bib}
% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}}
\begin{document}
\begin{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\end{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\printbibliography[heading=secbib]
\end{document}
如您所见,尽管 bibkeys 是Preissmann.2013
,并且在编译的 PDF 中Preissmann.2013a
被引用为 和Preissmann.2013a
。Preissmann.2013b
我如何确保:a)使用的是原始密钥(即 2013 和 2013a,不是2013a 和 2013b),以及 b) 参考书目中的年份中添加了字母?我希望它读起来(粗体作为奖励,我会为第二项添加字母):
- 普雷斯曼,克里斯汀。 »具有自闭症频谱范围的女孩和女孩«。在:心理实践16.4 (2013),第17-19页。
- 除外其他。患有阿斯伯格综合症的儿童和女性。特里亚斯,2013年。
答案1
这里发生了几件事。
首先,bibstyle=verbose,
本质上等同于bibstyle=authortitle,
。这解释了为什么你在参考书目中看不到任何消歧义字母:对于作者标题样式来说,它们根本就没有必要。
你应该使用
style=authoryear-icomp,
而不是bibstyle=verbose, citestyle=authoryear-icomp,
获取与您的引用样式相匹配的书目样式。(然后您也可以删除,sorting=nyt,
因为作者年份样式会自动设置此排序方案。)
作者年份格式还会将年份从条目的后面(或中间)移到前面。这很重要,因为它可以让读者更轻松地浏览您的条目,并真正从引用标签中找到条目。
\documentclass{scrreprt}
\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes}
\usepackage[
style=authoryear-icomp,
maxcitenames=2,
alldates=year,
dashed=true,
language=auto, autolang=other,
]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{Preissmann.2013,
title = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
author = {Preissmann, Christine},
date = {2013},
journaltitle = {Psychopraxis},
volume = {16},
number = {4},
pages = {17--19},
langid = {german},
}
@book{Preissmann.2013a,
title = {Überraschend anders. Mädchen \& Frauen mit Asperger},
author = {Preissmann, Christine},
date = {2013},
publisher = {Trias},
langid = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}
% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}}
\begin{document}
\begin{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\end{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\printbibliography[heading=secbib]
\end{document}
碰巧的是,这里Preissmann.2013
是 2013b,Preissmann.2013a
结果却是 2013a。如果您知道如何biblatex
分配extradate
字母,这并不奇怪。首先biblatex
对所有条目进行排序,然后按排序顺序分配字母。这里使用的排序方案是nyt
,所以名称、年份、标题。名称和年份相同,所以标题决定顺序。 Preissmann.2013a
梅德申排序Preissmann.2013
在结论,这就是我们得到的。
输入键Preissmann.2013
和Preissmann.2013a
应该是(任意的)纯内部标签。它们不会影响输出,通常也不会影响排序。您也可以使用zzz
和aaa
作为键,并会得到相同的输出。特别是2013a
在输入键中使用绝对不能保证输出中应该有一个“a”。(传统上,只有在需要消除歧义时才会添加消歧字母,所以如果在您的一篇文档中,您引用的 Preissmann 的唯一作品是Preissmann.2013a
为什么它应该以 2013a 的形式出现,而 2013 已经完全没问题了?)
排序应该只使用条目中可用的数据.bib
或文档中的上下文相关数据。因此问题变成了:为什么您希望这两部作品以特定顺序出现?然后下一个问题是:我们如何应用biblatex
此顺序。
例如,有些人不太关心标题决定参考书目中的最终排序位置,而更关心 2013a 在文内引用中出现在 2013b 之前(因此新引用的消歧字母会增加)。这可以通过定义一个考虑引用顺序而不是标题的排序方案来实现。
将其与作者-标题书目样式相结合并非不可能,其中年份位于末尾(以粗体显示),但我觉得这会产生不太理想且可用的结果
\documentclass{scrreprt}
\usepackage[shorthands=off,main=ngerman,english]{babel}
\usepackage[german=guillemets]{csquotes}
\usepackage[
citestyle=authoryear-icomp,
bibstyle=authortitle,
maxcitenames=2,
alldates=year,
dashed=true,
language=auto, autolang=other,
]{biblatex}
\DeclareFieldFormat{date}{\mkbibbold{#1}}
\renewbibmacro*{date}{\printdateextra}
\DeclareSortingTemplate{nyc}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\sort{\citeorder}
}
\sort{
\field{volume}
\literal{0}
}
}
\ExecuteBibliographyOptions{sorting=nyc}
\begin{filecontents}{\jobname.bib}
@article{Preissmann.2013,
title = {Mädchen und Frauen mit Autismus-Spektrum-Störung},
author = {Preissmann, Christine},
date = {2013},
journaltitle = {Psychopraxis},
volume = {16},
number = {4},
pages = {17--19},
langid = {german},
}
@book{Preissmann.2013a,
title = {Überraschend anders. Mädchen \& Frauen mit Asperger},
author = {Preissmann, Christine},
date = {2013},
publisher = {Trias},
langid = {german},
}
\end{filecontents}
\addbibresource{\jobname.bib}
% prevent pagebreak before bibliography by pretending to be a section:
\defbibheading{secbib}[\bibname]{\section*{#1}\markboth{#1}{#1}}
\begin{document}
\begin{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\end{verbatim}
As shown in \textcite{Preissmann.2013} and \textcite{Preissmann.2013a}.
\printbibliography[heading=secbib]
\end{document}