1

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,
        address = {Place},
        title = {abc},
        booktitle = {Development of xyz (18--20th cent.\isdot)},
        publisher = {Publisher},
        year = {2020}, 
        author = {A. U. Thor},
        editor = {E. di Tor},
    }
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

That comes out as enter image description here 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)

4
  • 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
1

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,
  address   = {Place},
  title     = {abc},
  booktitle = {Development of xyz (18--20th cent.\isdot)\@},
  publisher = {Publisher},
  year      = {2020}, 
  author    = {A. U. Thor},
  editor    = {E. di Tor},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\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,
  address   = {Place},
  title     = {abc},
  booktitle = {Development of xyz (18--20th cent.\isdot)},
  publisher = {Publisher},
  year      = {2020}, 
  author    = {A. U. Thor},
  editor    = {E. di Tor},
}
\end{filecontents}
\addbibresource{\jobname.bib}

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

The output in both cases is the desired

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

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.

2
  • 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
1

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,
        address = {Place},
        title = {abc},
        booktitle = {Development of xyz (18--20th cent.).},
        publisher = {Publisher},
        year = {2020}, 
        author = {A. U. Thor},
        editor = {E. di Tor},
    }
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

produces this:

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.