BibLaTeX 將參考書目中的“&”改為“and”

BibLaTeX 將參考書目中的“&”改為“and”

我是 BibLaTeX 的新手,遇到了我的參考書目問題,但不是引文問題。我想將參考書目中最後一個作者姓名之前的“&”更改為“and”。我知道有些帖子將參考書目中的“and”更改為“&”,但我沒有運氣修改這些代碼來執行相反的操作。

現在,我的程式碼在引文中使用“and”,但在參考書目中使用“&”。我目前使用的序言是:

\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[natbib=true,
backend=biber,
bibencoding=utf8,
sorting=nyt,
citestyle=authoryear,
bibstyle=apa,
maxbibnames=99,
apamaxprtauth=99,
maxcitenames=3,
uniquelist=false,
uniquename=false]{biblatex}
\addbibresource{bib3_clean.bib}% Syntax for version >= 1.2

% Removes period after year in bibliography
\renewcommand{\labelnamepunct}{\addspace} 

%put comma after title
\usepackage{xpatch}
\xpatchbibdriver{article}
{\usebibmacro{title}%
    \newunit}
{\usebibmacro{title}%
    \printunit{\addcomma\space}}
{}
{}

%remove journal number
\AtEveryBibitem{%
    \clearfield{number}}

% do not italicize volume number
\DeclareFieldFormat[article]{volume}{\apanum{#1}}

%remove comma after journal name
\renewbibmacro*{journal+issuetitle}{%
    \usebibmacro{journal}%
    \setunit*{\space}%
    \iffieldundef{series}
    {}
    {\newunit
        \printfield{series}%
        \setunit{\addspace}}%
    \usebibmacro{volume+number+eid}%
    \setunit{\addspace}%
    \usebibmacro{issue}%
    \setunit{\addcolon\space}%
    \usebibmacro{issue}%
    \newunit}

我的問題是,如何僅在參考書目中將“&”替換為“and”?

答案1

嘗試biblatex-apa與其他樣式混合或對其進行大量修改通常是一個壞主意:biblatex-apa應該使用 as ,style=apa,以便參考書目和引文樣式都是apa.這是一種相當複雜的風格,需要做大量工作來實現 APA 手冊的要求,這意味著程式碼中的某些選擇會犧牲可自訂性,以利於準確實現複雜的 APA 規則。參考書目和引文風格之間也存在一些(隱含的)依賴。如果您需要非 APA 樣式的作者年份樣式,那麼從標準樣式之一開始通常是更好的選擇。

- 樣式參考書目中的“&”apa由兩個分隔符號控制:標準finalnamedelimapa特定finalnamedelim:apa:family-given。兩者都需要重新定義。原始定義可以在二。 602-624 的apa.bbx,我們只需將\&s 全部更改為\bibstring{and}

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage[
  backend=biber,
  sorting=nyt,
  citestyle=authoryear,
  bibstyle=apa,
  maxbibnames=99,
  apamaxprtauth=99,
  maxcitenames=3,
  uniquelist=false,
  uniquename=false]{biblatex}

\renewcommand{\labelnamepunct}{\addspace}

\DeclareDelimFormat[bib]{finalnamedelim}{%
  \ifthenelse{\value{listcount}>\maxprtauth}
    {}
    {\ifthenelse{\value{liststop}>2}
       {\finalandcomma\addspace\bibstring{and}\space}
       {\addspace\bibstring{and}\space}}}

\DeclareDelimFormat[bib]{finalnamedelim:apa:family-given}{%
  \ifthenelse{\value{listcount}>\maxprtauth}
    {}
    {\ifthenelse{\ifcurrentname{groupauthor}\AND%
                 \value{liststop}=2}
     {\addspace\bibstring{and}\space}
     {\finalandcomma\addspace\bibstring{and}\space}}}

\usepackage{xpatch}
\xpatchbibdriver{article}
  {\usebibmacro{title}%
   \newunit}
  {\usebibmacro{title}%
   \printunit{\addcomma\space}}
  {}
  {}

\AtEveryBibitem{\clearfield{number}}

\DeclareFieldFormat[article]{volume}{\apanum{#1}}

\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\space}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addspace}%
  \usebibmacro{issue}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

\addbibresource{biblatex-examples.bib}


\begin{document}
\cite{sigfridsson}
\printbibliography
\end{document}

Sigfridsson, E. 和 Ryde, U. (1998) 從靜電勢和力矩導出原子電荷的方法比較。計算化學雜誌 19, 377–395。 https://doi.org/10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P


biblatex-apa此答案假設您使用的是實現第 7 版 APA 樣式的當前版本(至少是 2019 年 11 月 23 日的 v9.0)。

如果您使用的是biblatex-apa仍實作第 6 版 APA 樣式的舊版本,或者您使用的是biblatex-apa6( style=apa6,) 的目前版本,您可能需要

\DeclareDelimFormat[bib,biblist]{finalnamedelim}{%
  \ifthenelse{\value{listcount}>\maxprtauth}
    {}
    {\ifthenelse{\value{liststop}>2}
       {\finalandcomma\addspace\bibstring{and}\space}
       {\addspace\bibstring{and}\space}}}

\DeclareDelimFormat[bib,biblist]{finalnamedelim:apa:family-given}{%
  \ifthenelse{\value{listcount}>\maxprtauth}
    {}
    {\finalandcomma\addspace\bibstring{and}\space}}

一些引文指令也使用“&”,如果你也想去掉它們,你還需要

\DeclareDelimFormat[parencite,nptextcite,fullcite,fullcitebib]{finalnamedelim}
  {\ifnum\value{liststop}>2 \finalandcomma\fi\addspace\bibstring{and}\space}

這應該適用於舊版本和新版本biblatex-apabiblatex-apa6

相關內容