4

I am struggling identifying which elements of a bibtex entry are missing, since when I compile the pdf output shows some entries with ???, for example:

enter image description here

This is the output for

@book{friedman2016introduction,
  title={Introduction to Apache Flink: Stream Processing for Real Time and Beyond},
  author={Friedman, E. and Ellen Friedman, M.D. and Tzoumas, K.},
  isbn={9781491977163},
  lccn={2017385514},
  year={2016},
  publisher={O'Reilly Media}
}

When facing this kind of problems, how could I identify which entry is missing?

Here is what I see on the .bbl file:

metafiles/bmc_article.bbl:\bpublisher{O'Reilly Media}, \blocation{???}
  • 3
    From blocation I'm guessing you are missing the address field. Your BibTeX log (.blg) should contain more warnings or error messages. – moewe Oct 08 '18 at 11:05
  • 3
    Odd-topic: you should check the author list - this book seems to have 2 authors only – samcarter_is_at_topanswers.xyz Oct 08 '18 at 11:08
  • The ISBN number is 978-1491976586 (checked to correspond to the book). The book has only two authors. The ISBN 9781491977163 is syntactically correct, but corresponds to nothing. – egreg Oct 08 '18 at 11:25
  • I found a few .bst files with \blocation on the web and it seems that they don't actually warn you with a message in the log (.blg) when they output \blocation. So this is probably something that should be mentioned in the documentation. Otherwise it is pretty hard to know what is going wrong without looking at the .bbl and the source of the .bst. Can you show us a link to the .bst file you use? – moewe Oct 08 '18 at 11:29
  • @egreg JabRef produce a similar reference introducing just 9781491977163 as ISBN. Maybe is the code of the ebook version (the url is https://www.ebook.de/de/product/27779735/ellen_friedman_kostas_tzoumas_introduction_to_apache_flink.html) – Fran Oct 08 '18 at 11:35
  • @Fran Yeah, seems so. – egreg Oct 08 '18 at 11:45
  • Hello all, thanks for your comments, it seems that the only entry missing is indeed \blocation, but is not present in most of the .bib files I download when citing. As for the book I downloaded the reference from https://books.google.es/books/about/Introduction_to_Apache_Flink.html?id=g0RMDQAAQBAJ&source=kp_book_description&redir_esc=y, here it seems there are three authors. – Alejandro Alcalde Oct 08 '18 at 14:47
  • 2
    If the style outputs \blocation when there is no address field, the obvious way to resolve that issue is by providing the address data. Published books should have that information on the cover page, you usually take the location of the publisher. The book behind the link definitely has only two authors as can be seen on the cover, the data exported to the .bib file is incorrect. Unfortunately that happens quite often, see https://tex.stackexchange.com/q/386053/35864 – moewe Oct 08 '18 at 15:04
  • 1
    Add the field: address={Sebastopol, CA, USA} – user94293 Oct 08 '18 at 17:40

1 Answers1

11

An internet search suggests that \blocation is used by several .bst files written by VTeX for various customers (see https://github.com/search?p=1&q=blocation+extension%3Abst+user%3Avtex-soft&type=Code). Going by the file name of your .bbl I guess you might be using bmc-mathphys.bst from https://www.biomedcentral.com/getpublished/writing-resources/additional-files which was also written by VTeX. The file contains

  address empty$
    { publisher empty$
        {howpublished} 
        {springer.publisher} 
      if$ 
       "publisher" make.tag
      #1 bother =
        {", \blocation{???}" *  }
        'skip$
       if$
       output   
    }
    {
      publisher empty$
        {howpublished } 
        {springer.publisher } 
       if$ 
      "publisher" make.tag output
      insert.comma
      address "location" make.tag output
    }
  if$

which shows that the file will output \blocation{???} to the .bbl if no address field is provided and the bother flag is set to one.

Note that the file does not issue a regular BibTeX warning as is customarily done by the standard styles in such cases. For example plain.bst has

number empty$
  'skip$
  { "(" number * ")" * *
    volume empty$
      { "there's a number but no volume in " cite$ * warning$ }
      'skip$
    if$
  }
if$

All that means that there is no real way of telling why you get question marks in your output other than going back to the .bbl and finding that they are produced by \blocation{???} and then going to the .bst and finding out that \blocation{???} is written to the .bbl if the address field is missing. Of course you might have guessed that already by the name of the command (incidentally location is the biblatex name of the address field).

So to solve the issue you should provide an address for the publisher, probably something like

address={Sebastopol, Calif.}

As discussed in the comments you will also want to check the author field of that work. The full entry should probably read

@book{friedman2016introduction,
  title     = {Introduction to Apache Flink: Stream Processing for Real Time and Beyond},
  author    = {Friedman, Ellen and Tzoumas, Kostas},
  isbn      = {9781491977163},
  year      = {2016},
  publisher = {O'Reilly Media}
  address   = {Sebastopol, Calif.}
}
moewe
  • 175,683