Biblatex: как получить полные имена в библиографии?

Biblatex: как получить полные имена в библиографии?

Я бы хотел, чтобы BibLaTeX не отображал никаких имен или инициалов при цитировании в тексте. Но я бы хотел иметь полные имена в Библиографии. Из того, что я читал, этого можно добиться с помощью giveninits=false. Но эта команда вообще не влияет на стиль цитирования.

Я настроил BibLaTeX следующим образом:

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[
backend=biber,
style=apa,
maxcitenames = 2,
mincitenames = 1,
uniquename = false,
uniquelist = false,
maxbibnames = 99,
apamaxprtauth=99,
giveninits=false
]{biblatex}
\DeclareLanguageMapping{english}{english-apa}
\usepackage{filecontents}

\begin{filecontents*}{test.bib}
@article{marquard1975,
    author = {Donald W.   Marquardt  and  Ronald D.   Snee},
    title = {Ridge Regression in Practice},
    journal = {American Statistician},
    volume = {29},
    number = {1},
    pages = {3-20},
    year  = {1975},
    publisher = {Taylor & Francis},
}
}
\end{filecontents*}

\addbibresource{test.bib}

\begin{document}
\title{asdf}
\author{myself}
\date{\today}
\maketitle

TEST \cite{marquard1975}


\printbibliography
\end{document}

Что я получаю (цитирование в тексте допустимо, библиография — нет)

ТЕСТ Марквардт и Сни, 1975

Рекомендации

Марквардт, Д. В. и Сни, Р. Д. (1975). Регрессия гребня на практике. American Statistician, 29(1), 3–20.

Что я хотел бы получить:

ТЕСТ Марквардт и Сни, 1975

Рекомендации

Марквардт, Дональд В. и Сни, Рональд Д. (1975). Регрессия гребня на практике. American Statistician, 29(1), 3–20.

решение1

Как упоминалось в комментариях, стиль APA требует, чтобы имена сокращались до инициалов, а полное имя добавлялось только в (квадратных скобках) в случае, если инициалы будут неоднозначными. biblatex-apaреализует это требование, насколько это возможно. Поскольку это довольно сложно, нормальный вариант giveninitsне работает так, как ожидалось, с biblatex-apa. Это похоже на то, как (max|min)(bib|cite)?namesне работают так, как ожидалось, параметры.

Вам нужно переопределить два имени bibmacros, чтобы получить полные имена, один для имен по given-familyпорядку и один для family-given. Исходные определения можно найти в apa.bbx, мы только удалили \ifthenelse{\value{uniquename}>1}тест и убедились, что печатаем полное заданное имя с помощью \mkbibnamegiven{#2}вместо \mkbibnamegiven{#3}.

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[
  backend=biber,
  style=apa,
  uniquename = false,
  uniquelist = false,
  apamaxprtauth=99,
  giveninits=false,
]{biblatex}


% argument meanings from apa.bbx
% #1 = family name
% #2 = given name
% #3 = given name (initials)
% #4 = name prefix
% #5 = name suffix

\renewbibmacro*{name:apa:family-given}[5]{%
  \ifuseprefix
    {\usebibmacro{name:delim:apa:family-given}{#4#1}%
     \usebibmacro{name:hook}{#4#1}%
     \ifdefvoid{#4}{}{%
       \mkbibnameprefix{#4}\isdot%
       \ifprefchar{}{\bibnamedelimc}}%
     \mkbibnamefamily{#1}\isdot%
     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
     \ifdefvoid{#5}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}
    {\usebibmacro{name:delim:apa:family-given}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibnamefamily{#1}\isdot
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#4}}}
       {}
       {\revsdnamepunct}%
     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
     \ifdefvoid{#4}{}{%
       \bibnamedelimc\mkbibnameprefix{#4}%
       \ifprefchar{}{\bibnamedelimc}}%
\ifdefvoid{#5}{}{\addcomma\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}}

\renewbibmacro*{name:apa:given-family}[5]{%
  \usebibmacro{name:delim}{#2#4#1#5}%
  \usebibmacro{name:hook}{#2#4#1#5}%
  \ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot%
                   \bibnamedelimd}%
  \ifdefvoid{#4}{}{%
    \mkbibnameprefix{#4}\isdot
    \ifprefchar{}{\bibnamedelimc}}%
  \mkbibnamefamily{#1}\isdot%
  \ifdefvoid{#5}{}{\bibnamedelimd\mkbibnamesuffix{#5}\isdot}}


\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{marquard1975,
  author  = {Donald W. Marquardt and Ronald D. Snee},
  title   = {Ridge Regression in Practice},
  journal = {American Statistician},
  volume  = {29},
  number  = {1},
  pages   = {3-20},
  year    = {1975},
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
TEST \cite{marquard1975}

\printbibliography
\end{document}

Марквардт, Дональд В. и Сни, Рональд Д. (1975). Регрессия гребня на практике. American Statistician, 29(1), 3–20.

Обратите внимание, что &in publisher = {Taylor & Francis},следует экранировать в \&. Здесь нет ошибки, поскольку biblatexне печатает publisherполе для @articles, но хорошо бы помнить, что нужно &правильно обрабатывать.

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