9

In the following MWE

\documentclass{article}
\usepackage{filecontents}
\usepackage[%
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\addbibresource{\jobname.bib}

\begin{filecontents}[force]{\jobname.bib}
@article{key,
  author = {Author, A.},
  title = {Title?},
  year = {2021},
  journal = {Journal}
}

@article{key2,
  author = {Author, B.},
  title = {Title},
  year = {2021},
  journal = {Journal}
}
 
\end{filecontents}

\begin{document}

\cite{key}, \cite{key2}

\printbibliography

\end{document}

enter image description here

It can be seen that the title ending with question mark doesn't have a period after the quote symbols, while the one without question mark has a period. Is it possible to add a period in titles ending with quotation mark?

9

This is biblatex's punctuation tracker, which is supposed to avoid undesirable double punctuation, at work. Normally that feature avoids punctuation clashes caused by field values and biblatex-generated punctuation doubling up.

Here it could be argued that the feature goes to far, especially because the quotation marks provide a visual barrier that separates the double punctuation.

Solution one would be to 'hide' the question mark from biblatex's punctuation tracker. Either directly in the .bib entry with \@ after the ?

\documentclass{article}
\usepackage[
  backend=biber,
  style=numeric,
  giveninits=true,
  sorting=nyt,
]{biblatex}

\begin{filecontents}{\jobname.bib}
@article{key1,
  author  = {Author, A.},
  title   = {Title?\@},
  year    = {2021},
  journal = {Journal},
}
@article{key2,
  author  = {Author, B.},
  title   = {Title},
  year    = {2022},
  journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{key1,key2}

\printbibliography
\end{document}

A. Author. “Title?”. In: Journal (2021).

or globally in all title fields that are wrapped in quotation marks with suitable redefinitions of the field format that add the \@

\documentclass{article}
\usepackage[
  backend=biber,
  style=numeric,
  giveninits=true,
  sorting=nyt,
]{biblatex}

%\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibquote{#1\@}}
%\DeclareFieldFormat
%  [suppbook,suppcollection,suppperiodical]
%  {title}{#1\@}

\begin{filecontents}{\jobname.bib}
@article{key1,
  author  = {Author, A.},
  title   = {Title?},
  year    = {2021},
  journal = {Journal},
}
@article{key2,
  author  = {Author, B.},
  title   = {Title},
  year    = {2022},
  journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{key1,key2}

\printbibliography
\end{document}

A. Author. “Title?”. In: Journal (2021).

Another solution would be to generally allow question marks and exclamation marks to be followed by a period. But this may lead to undesirable punctuation clashes in situations where there are no quotation marks or where they are not desired for other reasons. (For more on \DeclarePunctuationPairs see Biblatex punctuation recognition)

\documentclass{article}
\usepackage[
  backend=biber,
  style=numeric,
  giveninits=true,
  sorting=nyt,
]{biblatex}

\DeclarePunctuationPairs{period}{.?!}

\begin{filecontents}{\jobname.bib}
@article{key1,
  author  = {Author, A.},
  title   = {Title?},
  year    = {2021},
  journal = {Journal},
}
@article{key2,
  author  = {Author, B.},
  title   = {Title},
  year    = {2022},
  journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Lorem \autocite{key1,key2}

\printbibliography
\end{document}

See also the recent Capital letter after title of incollection item ending in question mark using biblatex' ieee-style.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.