3

I'm using biblatex 3.16 (latest), biber (behind the scenes) and the biblatex-iso690 package (0.4.0, latest) that implements the iso-authoryear biblatex style.

I've noticed that various fields, notably references to related entries in the bibliography (related=) do not get printed, and I don't know why. Take the following example, which is using the default style:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@Book{Keynes1936,
  author      = {John Maynard Keynes},
  date        = {1936},
  title       = {The General Theory of Employment, Interest and Money},
  location    = {London},
  pagetotal   = {403},
  publisher   = {MacMillan},
  related     = {Keynes2018},
  relatedstring = {Repr. as},
}
@Book{Keynes2018,
  author      = {John Maynard Keynes},
  date        = {2018},
  title       = {The General Theory of Employment, Interest and Money},
  isbn        = {978-3-319-70343-5},
  publisher   = {Springer},
  related     = {Keynes1936},
  relatedtype = {reprintof},
}
\end{filecontents*}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

This produces

enter image description here

When changing the style, i.e. using

\usepackage[style=iso-authoryear]{biblatex}

instead, I obtain

enter image description here

I've taken a look at the documentation for both biblatex and biblatex-iso690, but haven't found anything that would explain this behavior to me. There is nothing in the .log or .blg files that would indicate any problem.

FWIW, I'm using MikTeX and xelatex.

EDIT: this also affects other fields, such as volume= for an entry referring to one volume of a multi-volume book, language=, and likely others.

1 Answer 1

2

A look at the code of biblatex-iso690 shows that the bibliography drivers don't support the related feature.

The drivers in the biblatex standard styles end like this

  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

but those in iso.bbx end like

  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}

I'm not sure why that is the case. I know that biblatex-iso690 has been around for a long time, so it might have been based on a version of the biblatex standard styles that did not have the related function. But it could also be that the related function was consciously removed, because ISO 690 has nothing to say about something like this.

You can try to get the related feature back by copying the relevant code from standard.bbx and authoryear.bbx and injecting the related-block missing from the drivers into finentry.

\documentclass{article}

\usepackage[style=iso-authoryear]{biblatex}

\providetoggle{bbx:related}
\toggletrue{bbx:related}

\makeatletter
\newbibmacro*{bbx:ifmergeddate}{\@secondoftwo}
\renewbibmacro*{date}{%
  \usebibmacro{bbx:ifmergeddate}
    {}
    {\printdate}}%

\newcounter{bbx:relatedcount}
\newcounter{bbx:relatedtotal}

\newbibmacro*{related:init}{%
  \csundef{bbx:relatedloop}}

\newbibmacro*{begrelated}{}
\newbibmacro*{endrelated}{}
\newbibmacro*{begrelatedloop}{}
\newbibmacro*{endrelatedloop}{}


\def\ifrelatedloop{%
  \ifboolexpr{ test {\xifinlistcs{\strfield{entrykey}}{bbx:relatedloop}}
    or test {\xifinlistcs{\strfield{clonesourcekey}}{bbx:relatedloop}} }}

\newbibmacro*{related}{%
  \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} }
    {}
    {\ifcsundef{begrelateddelim\strfield{relatedtype}}
       {\printunit{\begrelateddelim}}
       {\printunit{\csuse{begrelateddelim\strfield{relatedtype}}}}%
     \usebibmacro{begrelated}%
     \def\bbx@tempa{}%
     \setcounter{bbx:relatedtotal}{0}%
     \def\do##1{%
       \entrydata{##1}{%
         \ifrelatedloop
           {}
           {\stepcounter{bbx:relatedtotal}%
            \gappto{\bbx@tempa}{##1,}}}}%
     \docsvfield{related}%
     \restorefield{related}{\bbx@tempa}%
     \ifnumgreater{\value{bbx:relatedtotal}}{0}
       {\listcsxadd{bbx:relatedloop}{\strfield{entrykey}}%
        \iffieldundef{clonesourcekey}
          {}
          {\listcsxadd{bbx:relatedloop}{\strfield{clonesourcekey}}}%
        \setcounter{bbx:relatedcount}{0}%
        \def\do{%
          \stepcounter{bbx:relatedcount}%
          \ifnumgreater{\value{bbx:relatedcount}}{1}
            {\ifcsundef{relateddelim\strfield{relatedtype}}
              {\printunit{\relateddelim}}
              {\expandafter\expandafter\expandafter\expandafter\expandafter
               \expandafter\expandafter\printunit
               \expandafter\expandafter\expandafter\expandafter\expandafter
               \expandafter\expandafter{%
                 \csuse{relateddelim\strfield{relatedtype}}}}}
            {}}%
        \ifbibmacroundef{related:\strfield{relatedtype}}
          {\appto{\do}{\usebibmacro{related:default}}}
          {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}%
        \iffieldformatundef{related:\strfield{relatedtype}}
          {\def\bbx@tempa{related}}
          {\def\bbx@tempa{related:\strfield{relatedtype}}}%
        \iffieldformatundef{relatedstring:\strfield{relatedtype}}
          {\def\bbx@tempb{relatedstring:default}}
          {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}%
        \printtext[\bbx@tempa]{%
          \usebibmacro{begrelatedloop}%
          \iffieldundef{relatedstring}
            {\ifboolexpr{
               test {\ifnumgreater{\value{bbx:relatedtotal}}{1}}
               and
               test {\ifbibxstring{\thefield{relatedtype}s}}
             }
               {\printtext[\bbx@tempb]{%
                  \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}s}}}
               {\iffieldbibstring{relatedtype}
                  {\printtext[\bbx@tempb]{%
                     \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}}}}
                  {}}}
            {\iffieldbibstring{relatedstring}
               {\printtext[\bbx@tempb]{%
                  \bibstring[\mkrelatedstringtext]{\thefield{relatedstring}}}}
               {\printfield[\bbx@tempb]{relatedstring}}}%
          \docsvfield{related}%
          \usebibmacro{endrelatedloop}}}%
       {}%
     \usebibmacro{endrelated}}}
\makeatother

\renewbibmacro{finentry}{%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \finentry
}

\begin{filecontents*}{\jobname.bib}
@Book{Keynes1936,
  author      = {John Maynard Keynes},
  date        = {1936},
  title       = {The General Theory of Employment, Interest and Money},
  location    = {London},
  pagetotal   = {403},
  publisher   = {MacMillan},
  related     = {Keynes2018},
  relatedstring = {Repr. as},
}
@Book{Keynes2018,
  author      = {John Maynard Keynes},
  date        = {2018},
  title       = {The General Theory of Employment, Interest and Money},
  isbn        = {978-3-319-70343-5},
  publisher   = {Springer},
  related     = {Keynes1936},
  relatedtype = {reprintof},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}

KEYNES, John Maynard, 1936. The General Theory of Employment, Interest and Money. London: MacMillan, 1936. Repr. as The General Theory of Employment, Interest and Money. Springer, 2018. isbn 978-3-319-70343-5.
KEYNES, John Maynard, 2018. The General Theory of Employment, Interest and Money. Springer, 2018. isbn 978-3-319-70343-5. Repr. of The General Theory of Employment, Interest and Money. London: MacMillan, 1936.

3
  • 1
    I did not address the other fields mentioned in the question, since there was no accompanying MWE and the answer would be quite different: It could be that ISO 690 does not want these fields. It could be an oversight.
    – moewe
    Sep 30, 2021 at 15:58
  • I think they are oversight in most cases, or rather that these features didn't exist when we created the style.
    – michal.h21
    Sep 30, 2021 at 17:39
  • Thanks and +1 for the answer and the comment (I'll wait for a while to see if anything else'll answer before accepting). The other fields aren't that important, those are cosmetic issues really, but the lack of support for related entries really bugged me.
    – chsk
    Sep 30, 2021 at 18:48

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.