(奇怪)作者名字变成作者姓氏,不正确

(奇怪)作者名字变成作者姓氏,不正确

我发现有点奇怪,作者的第二个名字出现在间接引用中。

不正确,添加时

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 的一种变体,它仅消除基本名称部分相同列表中的名称歧义(默认情况下为姓氏列表)。

相关内容