[Tex/LaTex] Fixing punctuation after a field in biblatex

biblatexpunctuation

Customising a biblatex style, I want to ensure that after the title of books only a space is used. If you take a look at one of the standard drivers:

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle+title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

changing the part about the book title to read

  \usebibmacro{maintitle+title}%
  \setunit{\addspace}%

does not work as the various \newunit instructions seem to over-ride it even if no additional fields are printed. What's the correct way to say 'the next punctuation must always be just a space'?

Best Answer

According to section 4.7.3 of the manual, the \nopunct macro "[a]dds an internal marker which will cause the next punctuation command to print nothing." The following seems to work:

  \usebibmacro{maintitle+title}%
  \nopunct
Related Question