1

Yesterday I updated my biblatex from version >= 3.8 to the most recent version, 3.11. I've been experiencing problems with a command that I use in my .bib file ever since; in particular, the 'familyi' field is different from before and has a problem with parentheses. Let's make this precise.

I have the following piece of code:

\documentclass{article}
\usepackage[backend=biber,style=authoryear,natbib=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{feuerstein,
  title={Minimizing worst-case and average-case makespan over scenarios},
  author={Feuerstein, Esteban and 
    Marchetti-Spaccamela, Alberto and 
    Schalekamp, Frans and Sitters, Ren{\'e} and 
    {\NLprefix{Ster}{Van der}{van der} Ster}, Suzanne and 
    Stougie, Leen and 
    {\NLprefix{Zuylen}{Van}{van} Zuylen}, Anke},
  journal={Journal of Scheduling},
  volume={20},
  number={6},
  pages={545--555},
  year={2017},
  publisher={Springer}
}
\end{filecontents*}
\bibliography{\jobname.bib}

\DeclareRobustCommand{\NLprefix}[3]{#2}

\begin{document}
\citet*{feuerstein}

\DeclareRobustCommand{\NLprefix}[3]{#3}
\printbibliography
\end{document}

The NLprefix construction is copied from https://tex.stackexchange.com/a/40750, and is meant to produce upper-case prefixes in-text, lower-case prefixes in bibliography and sort the bibliography as if there were no prefixes.

Unfortunately, the .bbl file produces

\name{author}{7}{}{%
    {{uniquename=0,uniquepart=base,hash=4953fff041fab521558f23ee7cebc660}{%
       family={Feuerstein},
       familyi={F\bibinitperiod},
       given={Esteban},
       giveni={E\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=0a32a40115a59553203cbd569e19218d}{%
       family={Marchetti-Spaccamela},
       familyi={M\bibinithyphendelim S\bibinitperiod},
       given={Alberto},
       giveni={A\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=ebf8a33f26ae8d2e36a88d025f5bed8f}{%
       family={Schalekamp},
       familyi={S\bibinitperiod},
       given={Frans},
       giveni={F\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=9227ccf92c7d0a1e1a4407861c0aec33}{%
       family={Sitters},
       familyi={S\bibinitperiod},
       given={Ren{é}},
       giveni={R\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=a0f3d39e72c04ec9e4bdf2ba7c3bf780}{%
       family={{\NLprefix{Ster}{Van\bibnamedelimb der}{van\bibnamedelimb der}\bibnamedelimb Ster}},
       familyi={\NLprefix{Ster}{Van der}{van der} Ster}\bibinitperiod},
       given={Suzanne},
       giveni={S\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=b019a127d1d2c18d86097ec004f705c9}{%
       family={Stougie},
       familyi={S\bibinitperiod},
       given={Leen},
       giveni={L\bibinitperiod},
       givenun=0}}%
    {{uniquename=0,uniquepart=base,hash=b1a1f58dee7dc25f75d617c0f951e3ad}{%
       family={{\NLprefix{Zuylen}{Van}{van}\bibnamedelimb Zuylen}},
       familyi={\NLprefix{Zuylen}{Van}{van} Zuylen}\bibinitperiod},
       given={Anke},
       giveni={A\bibinitperiod},
       givenun=0}}%
  }
  \list{publisher}{1}{%
    {Springer}%
  }
  \strng{namehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{fullhash}{e7769ddba46ba7f649ff19ad8606ecca}
  \strng{bibnamehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{authorbibnamehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{authornamehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{authorfullhash}{e7769ddba46ba7f649ff19ad8606ecca}
  \field{sortinit}{F}
  \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72}
  \field{extradatescope}{labelyear}
  \field{labeldatesource}{year}
  \field{labelnamesource}{author}
  \field{labeltitlesource}{title}
  \field{journaltitle}{Journal of Scheduling}
  \field{number}{6}
  \field{title}{Minimizing worst-case and average-case makespan over scenarios}
  \field{volume}{20}
  \field{year}{2017}
  \field{pages}{545\bibrangedash 555}
  \range{pages}{11}
\endentry

Note here the mismatch of parentheses in the familyi-field whenever \NLprefix is used. Before updating my biblatex (and all other packages), a similar piece of code (I now isolated the problem) produced the following .bbl:

\entry{feuerstein2017minimizing}{article}{}
  \name{author}{7}{}{%
    {{hash=4953fff041fab521558f23ee7cebc660}{%
       family={Feuerstein},
       familyi={F\bibinitperiod},
       given={Esteban},
       giveni={E\bibinitperiod}}}%
    {{hash=0a32a40115a59553203cbd569e19218d}{%
       family={Marchetti-Spaccamela},
       familyi={M\bibinithyphendelim S\bibinitperiod},
       given={Alberto},
       giveni={A\bibinitperiod}}}%
    {{hash=ebf8a33f26ae8d2e36a88d025f5bed8f}{%
       family={Schalekamp},
       familyi={S\bibinitperiod},
       given={Frans},
       giveni={F\bibinitperiod}}}%
    {{hash=9227ccf92c7d0a1e1a4407861c0aec33}{%
       family={Sitters},
       familyi={S\bibinitperiod},
       given={Ren{é}},
       giveni={R\bibinitperiod}}}%
    {{hash=a0f3d39e72c04ec9e4bdf2ba7c3bf780}{%
       family={{\NLprefix{Ster}{Van\bibnamedelimb der}{van\bibnamedelimb der}\bibnamedelimb Ster}},
       familyi={{\NLprefix{Ster}{Van der}{van der} Ster}\bibinitperiod},
       given={Suzanne},
       giveni={S\bibinitperiod}}}%
    {{hash=b019a127d1d2c18d86097ec004f705c9}{%
       family={Stougie},
       familyi={S\bibinitperiod},
       given={Leen},
       giveni={L\bibinitperiod}}}%
    {{hash=b1a1f58dee7dc25f75d617c0f951e3ad}{%
       family={{\NLprefix{Zuylen}{Van}{van}\bibnamedelimb Zuylen}},
       familyi={{\NLprefix{Zuylen}{Van}{van} Zuylen}\bibinitperiod},
       given={Anke},
       giveni={A\bibinitperiod}}}%
  }
  \list{publisher}{1}{%
    {Springer}%
  }
  \strng{namehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{fullhash}{e7769ddba46ba7f649ff19ad8606ecca}
  \strng{bibnamehash}{e7769ddba46ba7f649ff19ad8606ecca}
  \strng{authorbibnamehash}{e7769ddba46ba7f649ff19ad8606ecca}
  \strng{authornamehash}{693edd208f8c731c7a02d4978b474a99}
  \strng{authorfullhash}{e7769ddba46ba7f649ff19ad8606ecca}
  \field{sortinit}{F}
  \field{sortinithash}{669c706c6f1fbf3b5a83d26f1d9e9e72}
  \field{extradatescope}{labelyear}
  \field{labeldatesource}{year}
  \field{labelprefix}{S}
  \true{uniqueprimaryauthor}
  \field{labelnamesource}{author}
  \field{labeltitlesource}{title}
  \field{journaltitle}{Journal of Scheduling}
  \field{number}{6}
  \field{title}{Minimizing worst-case and average-case makespan over scenarios}
  \field{volume}{20}
  \field{year}{2017}
  \field{pages}{545\bibrangedash 555}
  \range{pages}{11}
\endentry

I'd be really happy to know why I get the mismatch in parentheses, and even happier if you can help me with a fix :)

  • 1
    maybe have a look at tex.stackexchange.com/a/425950/36296 – samcarter_is_at_topanswers.xyz Apr 13 '18 at 9:00
  • 1
    You shouldn't use such tricks. For a better solution see e.g. tex.stackexchange.com/a/228215/2388 – Ulrike Fischer Apr 13 '18 at 9:08
  • Just checked: This should work again with Biber 2.12 (future changes permitting). But as Ulrike says, with biblatex there are more elegant ways to achieve this. – moewe Apr 13 '18 at 9:13
  • samcarter: Thank you for the quick reply, that definitely explains the error. @UlrikeFischer: My "solution" originated from when I still used bibtex, and I hadn't figured out how to fix the upper case / lower case prefixes from the solution that you refer to. Especially the \renewbibmacro*{begentry}{\midsentence} part gave me a headache. Somehow I never got to tex.stackexchange.com/a/23397/160671, which solves my problem. I appreciate all the quick replies! – Bart Apr 13 '18 at 11:10

Browse other questions tagged or ask your own question.