2

I have two questions regarding biblatex.

  1. I have bibliography entries from MathSciNet, and this has several fields. For instance one such looks like:

    @article {Gratzer2013,
        AUTHOR = {Gr\"{a}tzer, G.},
         TITLE = {The order of principal congruences of a bounded lattice},
       JOURNAL = {Algebra Universalis},
      FJOURNAL = {Algebra Universalis},
        VOLUME = {70},
          YEAR = {2013},
        NUMBER = {1},
         PAGES = {95--105},
          ISSN = {0002-5240},
       MRCLASS = {06B10 (06A06)},
      MRNUMBER = {3073941},
    MRREVIEWER = {S. Parameshwara Bhatta},
           DOI = {10.1007/s00012-013-0242-3},
           URL = {https://doi.org/10.1007/s00012-013-0242-3},
    }
    

    While using the following command:

    {    
    %%%% biblatex usage
    
    \usepackage[style=numeric, backend=biber, backref, bibencoding=utf8, sorting=nyt]{biblatex} 
    
    \addbibresource{ref.bib}
    
    }
    

    and then compiling with biber I do not get the data from "MRNUMBER" or "MRCLASS" or "MRREVIEWER".

    My question is: what should I do to get these or any other relevant data for my bibliography. Is there any standard class which does this?

  2. My old .bib files were compiled manually and do not have the information that I have presently using the MathSciNet facility. Is it possible to automatically add these information to hundreds of the bibliography entries over several .bib files?

4
  • 2
    biblatex does not know mrnumber and friends, but you can tell it to recognise those fields, see tex.stackexchange.com/q/306908/35864.
    – moewe
    Mar 4, 2019 at 21:33
  • 1
    2. Is not a biblatex question and I encourage you to ask it in a separate question. I suspect this might be possible if you somehow query MathSciNet with your old .bib files and retrieve the relevant information. But there is a risk of false matches and incorrect information there, so I would go for a manual approach when needed so I can double check stuff.
    – moewe
    Mar 4, 2019 at 21:35
  • I doubt you really have the { ... } around your \usepackage{biblatex} and \addbibresource statements in your document, but let me just warn future visitors that that would most likely not work. Loading packages in a group is quite likely to go wrong, because packages normally assume that all definitions they make are global in scope.
    – moewe
    Mar 5, 2019 at 7:10
  • In the author field, you can use the ä in Grätzer directly, without using Gr\"{a}.
    – Max R
    Mar 5, 2019 at 7:15

1 Answer 1

3

Switching from amsrefs to biblatex already shows how you can make the mrnumber show in the bibliography, so here we show mrclass and mrreviewer as well.

The idea is the same. First we define a new datamodel file (.dbx) with the new fields and load that with the datamodel option. Then we need formats for those fields and finally we need to print the fields in a bibmacro (mrinfo) that is called in one of the standard macros (doi+eprint+url).

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{filecontents}

\begin{filecontents*}{mrnumber.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{mrnumber,mrclass}
\DeclareDatamodelFields[type=list, datatype=name]{mrreviewer}
\DeclareDatamodelEntryfields{mrnumber,mrclass,mrreviewer}
\end{filecontents*}

\usepackage[style=numeric, backend=biber, sorting=nyt, datamodel=mrnumber]{biblatex}
\usepackage{hyperref}


\DeclareFieldFormat{mrnumber}{%
  \ifhyperref
    {\href{http://www.ams.org/mathscinet-getitem?mr=1#1}{MR#1}}
    {MR#1}}

\DeclareFieldFormat{mrclass}{#1}

\DeclareNameAlias{bymrreviewer}{byeditor}

\newbibmacro*{mrinfo}{%
  \printfield{mrnumber}%
  \iffieldundef{mrclass}
    {\setunit*{\addcomma\space}}
    {\setunit*{\addspace}}%
  \printfield{mrclass}%
  \setunit*{\addcomma\space}%
  \ifnameundef{mrreviewer}
    {}
    {\bibstring{byreviewer}%
     \setunit{\addspace}%
     \printnames[bymrreviewer]{mrreviewer}}}

\newtoggle{bbx:mrinfo}
\DeclareBibliographyOption[boolean]{mrinfo}[true]{\settoggle{bbx:mrinfo}{#1}}
\ExecuteBibliographyOptions{mrinfo}

\renewbibmacro*{doi+eprint+url}{%
  \iftoggle{bbx:doi}
    {\printfield{doi}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:mrinfo}
    {\usebibmacro{mrinfo}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:url}
    {\usebibmacro{url+urldate}}
    {}}


\begin{filecontents*}{\jobname.bib}
@article{gratzer,
  author     = {Grätzer, G.},
  title      = {The order of principal congruences of a bounded lattice},
  journal    = {Algebra Universalis},
  volume     = {70},
  year       = {2013},
  number     = {1},
  pages      = {95--105},
  mrclass    = {06B10 (06A06)},
  mrnumber   = {3073941},
  mrreviewer = {S. Parameshwara Bhatta},
  doi        = {10.1007/s00012-013-0242-3},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{gratzer,sigfridsson}

\printbibliography
\end{document}

G. Grätzer. ‘The order of principal congruences of a bounded lattice’. In: Algebra Universalis 70.1 (2013), pp. 95–105. doi: 10.1007/s00012-013-0242-3. MR3073941 06B10 (06A06), rev. by S. Parameshwara Bhatta.


For the second issue I suggest you ask a new question since that is not related to biblatex at all. You could query https://mathscinet.ams.org/mrlookup with your .bib entries and get the result. As long as your author and title fields are accurate (and coincide with the info on MathSciNet) that should give you the correct entry. The Python tool https://pypi.org/project/bibupdate/ seems to do just that.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .