
Я бы хотел, чтобы 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}
Обратите внимание, что &
in publisher = {Taylor & Francis},
следует экранировать в \&
. Здесь нет ошибки, поскольку biblatex
не печатает publisher
поле для @article
s, но хорошо бы помнить, что нужно &
правильно обрабатывать.