4

Biblatex has a mechanism that prevents spurious punctuation. Generally, it works fine but fails with xetex and some languages. The MWE below compiles fine with pdflatex but with xelatex yields double points after capital (!) letters in Greek and Russian. What could be the problem?

\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@PUNCT{pat1,
  location = {W.},
  publisher = {U.},
  usere={w.},
  userf={u.},
  language = {english},
  hyphenation = {english},
}
@PUNCT{pat2,
  location = {Ψ.},
  publisher = {Ω.},
  usere={ψ.},
  userf={ω.},
  language = {greek},
  hyphenation = {greek},
}
@PUNCT{pat3,
  location = {Ш.},
  publisher = {Ж.},
  usere={ш.},
  userf={ж.},
  language = {russian},
  hyphenation = {russian},
}
\end{filecontents}
\documentclass{article}
\usepackage{ifxetex}
\ifxetex
%------------ XeTeX -------------------------------------
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\newfontfamily\greekfont{CMU Serif}
\newfontfamily\cyrillicfont{CMU Serif}
\usepackage{polyglossia}
\setdefaultlanguage{greek}
\setotherlanguages{english,russian}
\else
%------------ pdftex ---------------------------------
\usepackage[T1,T2A,LGR]{fontenc}
\usepackage[utf8]{inputenx}
\usepackage[english,russian,greek]{babel}
\fi
\usepackage[autolang=other]{biblatex}
\addbibresource{\jobname.bib}

\DeclareBibliographyDriver{punct}{%
  \printfield{usere}\addperiod
  \printfield{userf}\addperiod
  \printlist{location}\addperiod
  \printlist{publisher}\finentry}

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

xelatex punctuation

2
  • 1
    There has just been added a bug report about this at the biblatex bug tracker: #368
    – moewe
    Feb 23, 2016 at 7:31
  • 5
    I'm voting to close this question as off-topic because it is a bug report
    – egreg
    Apr 13, 2016 at 10:38

1 Answer 1

0

The issue was fixed in the current DEV versions of biblatex 3.4 and biber 2.5. See https://github.com/plk/biblatex/issues/368 .

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