Update for biblatex-apa
v9.0+
Please keep in mind that the period is mandated by APA style, cf. https://apastyle.apa.org/style-grammar-guidelines/references/examples/report-government-agency-references.
For biblatex-apa
v9 and above, which implement 7th edition APA style, we can redefine the author/editor
bibmacro to use nameyeardelim
, which we can then customise as in the standard styles.
\documentclass[american]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa]{biblatex}
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addspace}
\DeclareDelimAlias*[bib,biblist]{nonameyeardelim}{nameyeardelim}
\renewbibmacro*{author/editor}{%
\ifthenelse{\ifnameundef{author}\AND\ifnameundef{groupauthor}}
{\ifnameundef{editor}
{\usebibmacro{title}%
% need to clear all title fields so we don't get them again later
\clearfield{title}%
\clearfield{subtitle}%
\clearfield{titleaddon}%
\setunit{\printdelim{nonameyeardelim}}\newblock}
{\usebibmacro{editorinauthpos}%
\setunit{\printdelim{nameyeardelim}}\newblock}}
{\usebibmacro{author}%
\setunit{\printdelim{nameyeardelim}}\newblock}%
%
\usebibmacro{labelyear+extradate}}
\begin{filecontents}{\jobname.bib}
@report{nci,
author = {{National Cancer Institute}},
year = {2019},
title = {Taking Time},
subtitle = {Support for People With Cancer},
type = {NIH Publication},
number = {18-2059},
institution = {U.S. Department of Health and Human Services,
National Institutes of Health},
url = {https://www.cancer.gov/publications/patient-education/takingtime.pdf},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
Lorem \autocite{sigfridsson,nci}
\printbibliography
\end{document}
See also Adjustments to bibliography / no comma between author and year / no italic font and https://github.com/plk/biblatex-apa/pull/117.
Old answer
You will need to slightly alter two biblatex-apa
macros.
\renewbibmacro*{author}{%
\ifnameundef{author}
{\usebibmacro{labeltitle}}
{\printnames[apaauthor][-\value{listtotal}]{author}%
\setunit*{\addspace}%
\printfield{nameaddon}%
\ifnameundef{with}
{}
{\setunit{}\addspace\mkbibparens{\printtext{\bibstring{with}\addspace}%
\printnames[apaauthor][-\value{listtotal}]{with}}
\setunit*{\addspace}}}%
\setunit{\addspace}\newblock%
\usebibmacro{labelyear+extradate}}
\renewbibmacro*{editorinauthpos}{%
\global\booltrue{bbx:editorinauthpos}%
\printnames[apaauthor][-\value{listtotal}]{editor}%
\setunit{\addspace}%
\ifnameundef{editor}
{}
{\printtext[parens]{\usebibmacro{apaeditorstrg}{editor}}%
% need to clear editor so we don't get an "In" clause later
% But we also need to set a flag to say we did this so we
% don't lose sight of the fact we once had an editor for
% various year placement tests
\clearname{editor}%
\setunit{\addspace}%
\usebibmacro{labelyear+extradate}%
\setunit{\adddot\addspace}}}
The only change is before the calls to \usebibmacro{labelyear+extradate}
. In the author
macro a \newunit
was replaced by \setunit{\addspace}
; in the editorinauthpos
macro it was \setunit{\adddot\addspace}
.
This solution assumes the current biblatex-apa
version 7.5. If you are running an older version, please consider updating (remember to update biblatex
to 3.8a and Biber to 2.8 with it). If that is not at all possible, replace labelyear+extradate
with labelyear+extrayear
inn the above macros, that should make the code run also with less recent versions of the package.
biblatex-apa
in any way, your document is likely not APA compliant any more. If you didn't want to write an APA-compliant document in the first place, you should consider not usingbiblatex-apa
, but one of the standard styles instead. If you are writing a document in neuer deutscher Rechtschreibung (post-1995, say) you should be usingngerman
instead ofgerman
. Your MWE causes errors because you are missing\NewBibliographyString{from} \NewBibliographyString{retrieved}
before the\DefineBibliographyStrings
.