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предполагается, что он будет использоваться как style=apa,так, чтобы и стиль библиографии, и стиль цитирования были оба apa. Это довольно сложный стиль, который выполняет большую работу по реализации требований руководства APA, что означает, что некоторые варианты в коде приносят в жертву настраиваемость в пользу точной реализации сложных правил APA. Существуют также некоторые (неявные) зависимости между стилем библиографии и цитирования. Если вам нужен стиль автор-год, который не является стилем APA, обычно лучше начать с одного из стандартных стилей.

"&" в apaбиблиографии в стиле - контролируется двумя разделителями: стандартным finalnamedelimи apa-specific 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., and 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(как минимум v9.0 от 23.11.2019), которая реализует стиль APA 7-го издания.

Если вы используете более старую версию, biblatex-apaкоторая все еще реализует стиль APA 6-го издания, или вы используете текущую версию 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.

Связанный контент