BibLaTeX:同一年份,同一作者混淆

BibLaTeX:同一年份,同一作者混淆

碰巧,我有一个 .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.2013aPreissmann.2013b

我如何确保:a)使用的是原始密钥(即 2013 和 2013a,不是2013a 和 2013b),以及 b) 参考书目中的年份中添加了字母?我希望它读起来(粗体作为奖励,我会为第二项添加字母):

  1. 普雷斯曼,克里斯汀。 »具有自闭症频谱范围的女孩和女孩«。在:心理实践16.4 (2013),第17-19页。
  2. 除外其他。患有阿斯伯格综合症的儿童和女性。特里亚斯,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,Christine(2013a)。 »具有自闭症频谱范围的女孩和女孩«。出处:Psychopraxis 16.4,S.17–19。 —(2013b)。除外其他。患有阿斯伯格综合症的儿童和女性。三叉戟。

碰巧的是,这里Preissmann.2013是 2013b,Preissmann.2013a结果却是 2013a。如果您知道如何biblatex分配extradate字母,这并不奇怪。首先biblatex对所有条目进行排序,然后按排序顺序分配字母。这里使用的排序方案是nyt,所以名称、年份、标题。名称和年份相同,所以标题决定顺序。 Preissmann.2013a梅德申排序Preissmann.2013结论,这就是我们得到的。

输入键Preissmann.2013Preissmann.2013a应该是(任意的)纯内部标签。它们不会影响输出,通常也不会影响排序。您也可以使用zzzaaa作为键,并会得到相同的输出。特别是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}

普雷斯曼,克里斯汀。 »具有自闭症频谱范围的女孩和女孩«。出处:Psychopraxis 16.4 (2013a),第 17–19 页。 — 其他人的看法。患有阿斯伯格综合症的儿童和女性。 Trias,2013b。

相关内容