我是 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
由兩個分隔符號控制:標準finalnamedelim
和apa
特定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}
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-apa
等biblatex-apa6
。