Biblatex 缺少具有非唯一名稱的首字母縮寫

Biblatex 缺少具有非唯一名稱的首字母縮寫

我引用了具有相同姓氏的不同作者biblatex,通常它會添加縮寫來區分他們,但如果兩個作者在一次引用中具有相同的名字,它只會添加第一作者的縮寫。我怎麼能加入第二作者的姓名縮寫?

圍兜文件:

@Book{MuthenMuthen19982017a,
  title     = {{Mplus User's Guide}},
  publisher = {Muth{\'e}n \& Muth{\'e}n},
  year      = {1998--2017},
  author    = {Muth{\'e}n, L. K. and Muth{\'e}n, B. O.},
  address   = {Los Angeles, CA},
  edition   = {8},
}

@Article{Muthen1983a,
  author  = {Muth{\'e}n, B. O.},
  title   = {{Latent variable structural equation modeling with categorical data}},
  journal = {{Journal of Econometrics}},
  year    = {1983},
  volume  = {22},
  pages   = {43--65},
}

tex 檔:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage{csquotes}
\usepackage[style=apa, backend=biber, bibencoding=utf8]{biblatex}
\addbibresource{example.bib}

\begin{document}
\noindent
\parencite{Muthen1983a}\\
\parencite{MuthenMuthen19982017a}

\printbibliography
\end{document}

輸出:

在此輸入影像描述

答案1

如果我理解其中的評論https://blog.apastyle.org/apastyle/2014/01/when-to-use-author-initials-for-text-itations.html正確的是,APA 風格只需要首字母縮寫來消除主要作者俱有相同姓氏的不同作者的歧義。這意味著我們觀察到的行為正是 APA 想要的結果。

幸運的是,在這種情況下,很容易改變行為以消除引文中所有名稱的歧義。我們只需要重新定義labelname:doname一點。與原來的定義相比(在目前版本7.7中biblatex-apa可以在 ll 中找到它。 77-96 的apa.cbx)我們刪除了涉及 的初始測試\ifuniqueprimaryauthor

一般來說,應該注意的是,biblatex-apa即使“應該很容易”,修改起來也可能相當棘手。因此,如果不打算遵循 APA 風格,通常更明智的做法是從其中一種標準風格開始,而不是從高度客製化的、因此複雜的風格開始biblatex-apa

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[style=apa, backend=biber]{biblatex}

\renewbibmacro*{labelname:doname}[8]{%
  \ifcase\value{uniquename}%
    \ifuseprefix
      {\usebibmacro{name:family}{#1}{#3}{#5}{\relax}}
      {\usebibmacro{name:family}{#1}{#3}{\relax}{\relax}}%
  \or
     \ifuseprefix
       {\usebibmacro{name:given-family}{#1}{#4}{#5}{\relax}}
       {\usebibmacro{name:given-family}{#1}{#4}{\relax}{\relax}}%
  \or
     \ifuseprefix
       {\usebibmacro{name:given-family}{#1}{#3}{#5}{\relax}}
       {\usebibmacro{name:given-family}{#1}{#3}{\relax}{\relax}}%
  \fi
  \usebibmacro{name:andothers}}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{MuthenMuthen19982017a,
  title     = {{Mplus} User's Guide},
  publisher = {Muthén \& Muthén},
  date      = {1998/2017},
  author    = {Muthén, L. K. and Muthén, B. O.},
  address   = {Los Angeles, CA},
  edition   = {8},
}
@article{Muthen1983a,
  author  = {Muthén, B. O.},
  title   = {Latent variable structural equation modeling with categorical data},
  journal = {Journal of Econometrics},
  year    = {1983},
  volume  = {22},
  pages   = {43--65},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\parencite{Muthen1983a}

\parencite{MuthenMuthen19982017a}

\printbibliography
\end{document}

(BO Muthén,1983)//(LK Muthén 和 BO Muthén,1998-2017)

請注意,該year欄位只能保存整數。對於年份/日期範圍,請使用date欄位和 ISO 8601 輸入格式(例如date = {1998/2017},)。

bibencoding=utf8在 MWE 中不需要明確的,因為biblatex會自動偵測bibencodingfrom \usepackage[utf8]{inputenc}。該.bib文件實際上並未使用任何 UTF-8,它只是 US-ASCII,因此我將 MWE 切換為 UTF-8。

相關內容