# How to enter an abbreviation dot in parenthesis for a particular database entry with biblatex?

I want to cite an item that appeared in an edited volume the title of which ended with an abbreviation. How can I tell biblatex to treat that dot at the end of booktitle as an abbreviation dot?

The manual points out \isdot, but I seem to be using it wrong. MWE:

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{bib.bib}
@incollection{VanRooyFca,
title = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
\begin{document}
\nocite{*}
\printbibliography
\end{document}


That comes out as but I wanted to get the separating dot between the volume's title and the editors.

(Yes, it is weird that the original publication had an abbreviation in its title)

• Could you mabye show what you want it to look like? Also: tex.stackexchange.com/questions/340478/… – nhck Feb 21 '20 at 9:49
• @nhck The output should be "... (18-20th cent.). Ed. by ...". As far as I can see, the question you link treats a general solution, but I think I'd need a case-by-case solution – Felix Emanuel Feb 21 '20 at 9:59
• There should also be an elipses after by? Otherwise why not use utf8 dots? or booktitle = {Development of xyz \dots (18--20th cent.)}, ? – nhck Feb 21 '20 at 10:13
• Ah sorry, the dots only mark what I left out (i.e. name of editor after "by", rest of bootktitle before "(18-20th)" – Felix Emanuel Feb 21 '20 at 10:15

This is a very interesting issue. biblatex's punctuation tracker is set up in a way that means that it ignores all kinds of parentheses. That means that for the punctuation tracker the title might as well have been

booktitle = {Development of xyz 18--20th cent.\isdot},


In that case it is clear that the punctuation tracker should do its thing and suppress double punctuation (namely, the abbreviation dot and the sentence-ending period afterwards):

*Thor, A. U. (2020). “abc”. In: Development of xyz 18–20th cent.. Ed. by E. di Tor. Place: Publisher.

would look wrong. You'd want

Thor, A. U. (2020). “abc”. In: Development of xyz 18–20th cent. Ed. by E. di Tor. Place: Publisher.

There are two ways to get around this.

The first method is to manually reset the punctuation tracker after the parentheses with \@.

\documentclass{article}

\usepackage[style=authoryear]{biblatex}

\begin{filecontents}{\jobname.bib}
@incollection{VanRooyFca,
title     = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)\@},
publisher = {Publisher},
year      = {2020},
author    = {A. U. Thor},
editor    = {E. di Tor},
}
\end{filecontents}

\begin{document}
\nocite{*}
\printbibliography
\end{document}


The second methods makes sure parentheses are no longer invisible to biblatex's punctuation tracker.

\documentclass{article}

\usepackage[style=authoryear]{biblatex}

\makeatletter
\def\blx@setsfcodes{%
\let\blx@setsfcodes\relax
\let\frenchspacing\blx@setfrcodes
\let\nonfrenchspacing\blx@setencodes
\ifnum\sfcode\.>2000
\blx@setencodes
\else
\blx@setfrcodes
\fi
\@setquotesfcodes
\sfcode$$=\@m \sfcode$$=\@m
\sfcode$=\@m \sfcode$=\@m
\sfcode\<=\@m
\sfcode\>=\@m}
\makeatother

\begin{filecontents}{\jobname.bib}
@incollection{VanRooyFca,
title     = {abc},
booktitle = {Development of xyz (18--20th cent.\isdot)},
publisher = {Publisher},
year      = {2020},
author    = {A. U. Thor},
editor    = {E. di Tor},
}
\end{filecontents}

\begin{document}
\nocite{*}
\printbibliography
\end{document}


The output in both cases is the desired

A very similar issue was discussed in BibLaTeX Punctuation after parentheses, but there \isdot was enough, because ., i.e. abbreviaton-dot & comma is a valid combination.

• It's very convenient that the user is able to reset the tracker with \@, much obliged – Felix Emanuel Feb 22 '20 at 14:11
• @FelixEmanuel \@ is actually a standard LaTeX command that was intended to be used for something else: tex.stackexchange.com/q/22561/35864. biblatex builds on space factors for its punctuation tracker and conveniently \@ does the right thing here. – moewe Feb 22 '20 at 14:28

One solution is to add another period to the title. Then biblatex will use that as final punctuation.

So this:

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{bib.bib}
@incollection{VanRooyFca,
title = {abc},
booktitle = {Development of xyz (18--20th cent.).},
publisher = {Publisher},
year = {2020},
author = {A. U. Thor},
editor = {E. di Tor},
}
\end{filecontents}
`