![同一作者、同一年份、不同标题的出版物的引文标注](https://linux22.com/image/346830/%E5%90%8C%E4%B8%80%E4%BD%9C%E8%80%85%E3%80%81%E5%90%8C%E4%B8%80%E5%B9%B4%E4%BB%BD%E3%80%81%E4%B8%8D%E5%90%8C%E6%A0%87%E9%A2%98%E7%9A%84%E5%87%BA%E7%89%88%E7%89%A9%E7%9A%84%E5%BC%95%E6%96%87%E6%A0%87%E6%B3%A8.png)
当我引用同一作者、同一年份但标题不同的出版物时,我的 TeX 文档似乎提供了一些引文,如“blah blah (Institute, 2016c)”...“blah bla (Institute, 2016a)”。尽管我认为它应该自动为第一次提及提供年份后面的“a”。这就是我想要的,但无论我怎么尝试都得不到。
我使用biblatex
选项natbib=true
、style=apa
和backend=biber
。
\documentclass[fontsize=12pt,oneside,headsepline]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage[onehalfspacing]{setspace} %h
\usepackage[urlcolor = black,plainpages=false,pdfpagelabels=true,
colorlinks=true,linkcolor=black,citecolor=black,
bookmarksopen=true]{hyperref}
\usepackage[style=apa,natbib=true,backend=biber,uniquename=false,
pagetracker=true,sortcites=true,sorting=nyt,backref=true,
hyperref=true]{biblatex}
\DeclareLanguageMapping{german}{german-apa}
\DeclareFieldFormat{apacase}{#1}
\DefineBibliographyStrings{ngerman}{
andothers = {{et al\adddot}}, }
\usepackage{parskip}
\usepackage[german]{algorithm2e}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{tablefootnote}
\usepackage{lmodern}
\usepackage{subfigure}
\usepackage{comment}
\usepackage{placeins}
\usepackage{scrpage2}
\addbibresource{BeispielQVZ.bib}
\usepackage{nccmath}
\usepackage{tikz}
\usepackage{amsthm}
\newtheoremstyle{break}
{8pt}{}%
{\itshape}{}%
{\bfseries}{}% % Note that final punctuation is omitted.
{\newline}{}
\theoremstyle{break}
\newtheorem{mydef}{Definition}[chapter]
\usepackage{tikz} % Für Zeichnungen mit dem tikz-Package
\usepackage{tablefootnote}
\usepackage[all]{nowidow}
\makeatletter
\@removefromreset{footnote}{chapter}
\@removefromreset{footnote}{part}
\makeatother
\begin{document}
[...]
很抱歉,我已经有一个非常复杂的文档,并且我在 biblatex-line 中尝试了不同的选项。
您能帮我实现一下,让作者第一次出现时显示为“a”,第二次出现时显示为“b”,等等吗?当然,年份后面的字母也应该显示在文档末尾的参考书目中。
研究所,2016a,......
我用来\citep{institute2016somestuff}
引用。
答案1
如果我正确理解了您的设置,您真正想要实现的是biber
仅按作者姓名和出版年份对书目条目进行排序,而不是按出版物标题对书目条目进行排序,对吗?如果不根据标题字段对条目进行排序,它们将事实上按照文档主体中各自引用标注的首次出现的顺序进行排序。
由于您的代码设置了biblatex
选项sorting=nyt
,因此所有条目都按作者姓名、出版年份和标题排序。要实现仅按作者姓名和出版年份排序,只需ny
通过\DeclareSortingScheme
指令定义一个新的排序选项,例如 。不过,无需将sortcites
选项设置为 false。
请考虑以下屏幕截图和代码。有 3 个 bib 条目具有完全相同的作者和年份,但具有不同的标题字段。(条目键的形成是为了包含有关其标题字段的信息。)在文档正文中,条目inst:16c
在条目之前被引用inst:16a
。如果 sorting=nyt
生效后,键为 的条目inst:16c
将排在键为 的条目之后inst:16a
,它们的年份标签分别为2016c
和2016a
。但是,由于sorting=ny
生效,条目inst:16c
具有2016a
作为其调出标签,而条目inst:16a
具有 调出标签2016c
;此外,条目inst:16c
还列出了前参考书目中的条目inst:16a
。换句话说,引文标注中的年份标签和参考书目中的排序现在由引文的第一次出现决定,而不是根据相应标题字段的字母顺序。(当然,不同年份的条目仍然按年份排序,与标注顺序无关。)
这是你想要的吗?
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib} % create a dummy bib file with 5 entries
@misc{inst:15, author="Institute", year=2015, title="zzz",}
@misc{inst:17, author="Institute", year=2017, title="nnn",}
@misc{inst:16a, author="Institute", year=2016, title="aaa",}
@misc{inst:16b, author="Institute", year=2016, title="bbb",}
@misc{inst:16c, author="Institute", year=2016, title="ccc",}
\end{filecontents}
% I'm using 'scrarticl' instead of 'scrbook' so that output is all on a single page.
% I've also condensed the preamble to the bare minimum needed for this example.
\documentclass[fontsize=12pt,oneside,headsepline]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[style=apa, natbib=true, backend=biber,
uniquename=false, pagetracker=true, sortcites=true,
sorting=ny, backref=true, hyperref=true]{biblatex}
\addbibresource{mybib.bib}
\DeclareSortingScheme{ny}{ % see section 4.5.6 of the biblatex manual
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
}
\sort{
\field{sortyear}
\field{year}
}
}
\DeclareLanguageMapping{german}{german-apa}
\DeclareFieldFormat{apacase}{#1}
\DefineBibliographyStrings{ngerman}{
andothers = {{et~al\adddot}}, }
% It's usually a good idea to load 'hyperref' last (with very few exceptions)
% Just for this example: set link color to 'red'
\usepackage[colorlinks=true,allcolors=red,plainpages=false,
pdfpagelabels=true,bookmarksopen=true]{hyperref}
\begin{document}
\citep{inst:16c,inst:16b,inst:16a,inst:17,inst:15}
\printbibliography
\end{document}