我发现有点奇怪,作者的第二个名字出现在间接引用中。
不正确,添加时
This is correct, but adding this will make second name appear all J. Hollandet al. (1998)
@article{holland1998use,
title={Use },
author={Holland, JK and Kemsley, EK and Wilson, RH},
journal={Journal of the Science of Food and Agriculture},
volume={76},
number={2},
pages={263--269},
year={1998},
publisher={Wiley Online Library}
正确,当没有
This is correct, but adding this will make second name appear all J. Hollandet al. (1998)
@article{holland1998use,
title={Use },
author={Holland, JK and Kemsley, EK and Wilson, RH},
journal={Journal of the Science of Food and Agriculture},
volume={76},
number={2},
pages={263--269},
year={1998},
publisher={Wiley Online Library}
我该如何解决?
我的完整 MWE:
\documentclass{article}
\usepackage{xpatch}
% \usepackage[style = authoryear-comp, maxnames = 99]{biblatex}
\usepackage[backend=biber,
% style=authoryear,
style=authoryear-comp,
% citestyle=authoryear,
dashed=false,
maxcitenames=2,
maxbibnames=99,
giveninits,
alldates=comp,
dateabbrev=false,
uniquename=init]{biblatex}
% to make volume (number), eg. 4(2)
\newcommand*{\volnumdelim}{}
\DeclareFieldFormat[article,periodical]{number}{\mkbibparens{#1}}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\volnumdelim}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}}
\newcommand*{\jourvoldelim}{\addcomma\space}
\newcommand*{\jourserdelim}{\newunitpunct}
\newcommand*{\servoldelim}{\jourvoldelim}
\newcommand*{\volnumdatedelim}{\addspace}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\jourvoldelim}%
\iffieldundef{series}
{}
{\setunit*{\jourserdelim}%
\printfield{series}%
\setunit{\servoldelim}}%
\usebibmacro{volume+number+eid}%
\setunit{\volnumdatedelim}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
% to make volume (number), eg. 4(2)
\DeclareNameAlias{sortname}{family-given} %for second and third author name
\DeclareFieldFormat{postnote}{\printtext[bibhyperref]{#1}}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{csquotes}
\addto\captionsenglish{
\renewcommand{\listfigurename}{\textsf{List of Figures}}
\renewcommand{\listtablename}{\textsf{List of Tables}}
}
% Flag for whether to add front matter to TOC
\newtoggle{fulltoc}
\toggletrue{fulltoc} % Change to \togglefalse{fulltoc} to remove front matter
\renewcommand{\contentsname}{Table of Contents}
\usepackage[unicode,colorlinks,citecolor=blue]{hyperref}
% for a chapter edited by a book
\usepackage{xpatch}
% \renewcommand*{\finalnamedelim}{\addspace\&\space}
% \renewcommand*{\intitlepunct}{\space} (to become In:)
\renewcommand{\labelnamepunct}{\space} %to delete . after (1997)
% \DeclareFieldFormat[article, incollection, unpublished]{pages}{#1} % to add in PP. (page)
\DeclareFieldFormat[article, incollection, unpublished]{title}{#1}
% \renewcommand{\bibpagespunct}{\ifentrytype{article}{\addcolon}{\addperiod\addspace}} %cancel out this in order to add in PP. (page)
% for title italic
% \DeclareFieldFormat*{title}{\mkbibemph{#1}} %for title italic in all format (conference, paper..)
\DeclareFieldFormat*{title}{#1} %for conference title delete ".."
\DeclareFieldFormat[incollection]{title}{\mkbibemph{#1}} %for incollecion title italic ONLY
\DeclareFieldFormat[thesis]{title}{\mkbibemph{#1}} %for phdthesis title italic ONLY
% for title italic
% to delete "In:" for article
\renewbibmacro{in:}{%
\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}}
% to delete "In:" for article
% for delete comma after Author A and Aurhor b
\DefineBibliographyExtras{english}{%
\let\finalandcomma\empty
\let\finalandsemicolon\empty
}
\renewcommand{\compcitedelim}{\space\&\space}
\DeclareNameAlias{editorin}{given-family}
\newbibmacro*{byeditor:in}{%
\ifnameundef{editor}
{}
{\printnames[editorin]{editor}%
\setunit{\addcomma\space}%
\usebibmacro{editorstrg}%
\clearname{editor}}}
\DeclareDelimFormat[textcite]{postnotedelim}{\addcolon\space}
\DeclareDelimFormat[parencite]{postnotedelim}{\addcolon\space}
% \DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{postnote}{\printtext[bibhyperref]{#1}}
\DeclareFieldFormat{multipostnote}{#1}
% for references 's studies (year)
\renewcommand*{\nameyeardelim}{\addcomma\space}
\newcommand{\mycite}[1]{\citeauthor{#1}'s \citeyear{#1}}
\DeclareCiteCommand{\citeauthor}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printtext[bibhyperref]{\printnames{labelname}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\citeyear} % <======================================
{}
{(\bibhyperref{\printdate})}
{\multicitedelim}
{}
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\renewcommand*{\postnotedelim}{\addcolon\space}%
\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\usebibmacro{cite}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\cbx@textcite}
{\renewcommand*{\postnotedelim}{\addsemicolon\space}%
\usebibmacro{cite:init}}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{}
{\usebibmacro{textcite:postnote}}
\makeatletter
\let\abx@macro@textciteOrig\abx@macro@textcite
\renewbibmacro{textcite}{% <============================================
\bibhyperref{%
\let\bibhyperref\relax\relax%
\abx@macro@textciteOrig%
}%
}%
\makeatother
% for references 's studies (year)
\DeclareFieldFormat[book]{title}{\mkbibemph{#1}}
\DeclareFieldFormat{url}{Available at\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}
\DeclareFieldFormat[online]{title}{\mkbibemph{#1}}
\DefineBibliographyStrings{english}{%
urlseen = {Accessed},
}
\DefineBibliographyExtras{english}{%
\protected\def\mkdaterangecomp{%
\mkdaterangetrunc{long}}%
\protected\def\mkdaterangeterse{%
\mkdaterangetrunc{short}}%
\protected\def\mkdaterangecompextra{%
\mkdaterangetruncextra{long}}%
\protected\def\mkdaterangeterseextra{%
\mkdaterangetruncextra{short}}%
\protected\def\mkbibdatelong#1#2#3{%
\iffieldundef{#3}
{}
{\thefield{#3}%
\iffieldundef{#2}{}{\nobreakspace}}%
\iffieldundef{#2}
{}
{\mkbibmonth{\thefield{#2}}%
\iffieldundef{#1}{}{\space}}%
\iffieldbibstring{#1}
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
}
% \DeclareFieldFormat{doi}{\bibstring{urlfrom}\addcolon\space\url{#1}}
% \DefineBibliographyStrings{english}{%
% urlfrom = {Available at}
% }
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{harris2009using,
title={Using Statistics to},
% author={Harris, Lr and Holland, Saleh},
journal={Proceedings of the Institute of Acoustics},
author={Harris, L. E. and Holland, K. R.},
year={2009},
volume={31},
}
@article{ghasemi2012normality,
title={Normality },
author={Ghasemi, Asghar and Zahediasl, Saleh},
journal={International journal of endocrinology and metabolism},
volume={10},
number={2},
pages={486},
year={2012},
publisher={Kowsar Medical Institute}
}
@article{holland1998use,
title={Use },
author={Holland, JK and Kemsley, EK and Wilson, RH},
journal={Journal of the Science of Food and Agriculture},
volume={76},
number={2},
pages={263--269},
year={1998},
publisher={Wiley Online Library}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{WinNT}
Text is \textcite{harris2009using} sentences.
This is \textcite{ghasemi2012normality} sentences.
% This is correct, but adding this will make second name appear all \textcite{holland1998use}
% \textcite{primarysource}\parencite[cited in][]{secondarysource}
\printbibliography
\end{document}
答案1
您的参考书目中有两位姓氏为“Holland”的不同作者。Biblatex 已添加首字母以消除歧义。
发生这种情况是因为您uniquename=init
的序言中有该选项。要禁用此功能,请删除该选项或将其更改为uniquename=false
。
biblatex 手册(“4.11.4 名称消歧义”一节)还列出了其他可能的设置:
uniquename=true, false, init, full, allinit, allfull, mininit, minfull
默认:
false
是否更新唯一名称计数器,详情请参阅 § 4.6.2。此功能将消除标签名称列表中各个名称的歧义。此选项也可按类型、按条目、按名称列表和按名称设置。可能的选择包括:
- true - full 的别名。
- false-禁用此功能。
- init-仅使用首字母缩写来消除歧义。
- full - 根据需要,使用首字母或全名消除歧义。
- allinit - 与 init 类似,但消除标签名称列表中所有名称的歧义,超出 maxnames/minnames/uniquelist。
- allfull - 与 full 类似,但消除标签名称列表中所有名称的歧义,超出 maxnames/minnames/uniquelist。
- mininit - init 的一个变体,它仅消除基本名称部分相同列表中的名称歧义(默认情况下为家族名称列表)。
- minfull - full 的一种变体,它仅消除基本名称部分相同列表中的名称歧义(默认情况下为姓氏列表)。