[Tex/LaTex] replace dot “.” by comma “,” after title in biblatex

biblatex

I've just turned to biblatex from bibtex. Below is my option for biblatex

\usepackage[style=authoryear, giveninits=true,backend=biber, maxcitenames=3,%
            maxbibnames=9, sortcites, url=false, backref=false,]{biblatex} 
\addbibresource{proposal.bib}
\usepackage{babel} % Switch to English style quotation mark, remember to add british to document option
\renewcommand{\labelnamepunct}{\addspace} % Remove dot in the bibliography after Author(year)

\renewbibmacro{in:}{} % Suppress In: in the reference list

%use ":" after year in the in-text citation
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}

%format pages in the article entry of bibliography 
\renewcommand{\bibpagespunct}{\ifentrytype{article}{\addcolon\addspace} {\addcomma\addspace}}
\DeclareFieldFormat[article,incollection]{pages}{#1}

%format volume và issue

\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
%  \setunit*{\adddot}% DELETED
  \setunit*{\addnbspace}% NEW (optional); there's also \addnbthinspace
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}
  \DeclareFieldFormat[article]{number}{\mkbibparens{#1}}

Here is the example of @article entry:

@Article{Vanschoenwinkel2016,
  author  = {Vanschoenwinkel, Janka and Mendelsohn, Robert and Van Passel, Steven},
  title   = {Do Western and Eastern Europe have the same agricultural climate response? Taking adaptive capacity into account},
  journal = {Global Environmental Change},
  year    = {2016},
  volume  = {41},
  number  = {7},
  pages   = {74-87},
  issn    = {0959-3780},
  type    = {Journal Article},
}

if follow above setup, the format of an article entry in the Bibliography would be:

Vanschoenwinkel, J., R. Mendelsohn and S. Van Passel (2016) ‘Do
Western and Eastern Europe
have the same agricultural climate response? Taking adaptive capacity into account’.
Global Environmental Change 41 (7): 74-87.

How can I replace the dot "." after the title by comma ","?

Best Answer

Assuming that this is the only punctuation change in the bibliography, there isn't a built in way of doing this.

But you can use the xpatch package to patch each bibliography driver to change the punctuation of the title from a period to a comma. e.g., to change it for article entry types, you'd add this to your preamble:

\usepackage{xpatch}
\xpatchbibdriver{article}
  {\usebibmacro{title}%
   \newunit}
  {\usebibmacro{title}%
   \printunit{\addcomma\space}}
  {}
  {}

I use \printunit rather than \setunit to ensure that a comma persists in the punctuation buffer, rather than being overwritten by subsequent \newunit commands.

You could do something similar for other entry types. Have a look at the file standard.bbx to see how titles are printed for other entry types as it varies slightly.

Aside, your question was down voted (probably) because your code does not compile. There's a missing brace and it doesn't start with \documentclass and end with \end{document}. In the future, include a MWE like mine below.

MWE

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{Vanschoenwinkel2016,
  author  = {Vanschoenwinkel, Janka and Mendelsohn, Robert and Van Passel,
             Steven},
  title   = {Do Western and Eastern Europe have the same agricultural climate
             response? Taking adaptive capacity into account},
  journal = {Global Environmental Change},
  year    = {2016},
  volume  = {41},
  number  = {7},
  pages   = {74-87}
}
\end{filecontents}
\usepackage[style=authoryear, giveninits=true, maxcitenames=3,
            maxbibnames=9, sortcites, url=false, backref=false,]{biblatex} 
\addbibresource{\jobname.bib}
\usepackage[british]{babel}
\usepackage{csquotes}
\renewcommand{\labelnamepunct}{\addspace}
\renewbibmacro{in:}{}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}
\DeclareFieldFormat{multipostnote}{#1}
\renewcommand{\bibpagespunct}{\ifentrytype{article}{\addcolon\addspace
  {\addcomma\addspace}}}
\DeclareFieldFormat[article,incollection]{pages}{#1}
\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit*{\addnbspace}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}
\usepackage{xpatch}
\xpatchbibdriver{article}
  {\usebibmacro{title}%
   \newunit}
  {\usebibmacro{title}%
   \printunit{\addcomma\space}}
  {}
  {}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

enter image description here

Related Question