Sign up ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a large set of references and I in most cases do have either

  • ISBN
  • DOI
  • DOI and ISBN

I'd like to setup a filter that prints the ISBN only when the DOI does not exist.

How can I set up a filter that performs this conditional printing (I read this thread but didn't find a command to check whether an entry exists)

If necessary I could also define empty DOI entries but this would be plenty of work.

share|improve this question

1 Answer 1

up vote 11 down vote accepted

You can use biblatex source remapping features. The code checks whether the doi field is non-null and if it is it clears the isbn field so that it is not printed.



with t.bib

  author =   {Author, First},
  title =    {Title One},
  publisher =    {Publisher},
  year =     2000,
  doi =      {doi:field},
  note =     {doi only}

  author =   {Author, Gareth},
  title =    {Title Two},
  publisher =    {Publisher},
  year =     2005,
  isbn =     {isbn number},
  note =     {isbn only}

  author =   {Author, Last},
  title =    {Title Three},
  publisher =    {Publisher},
  year =     2007,
  isbn =     {isbn number},
  doi =      {doi:field},
  note =     {isbn and doi}


Sample output

share|improve this answer
Works like a charm and is much more elegant than the solution suggested in the other thread (which I didn't find; sorry). Thanks a lot. –  louis cypher Oct 14 '12 at 14:37
Andrew, do you know the same feature in BibTeX? Have my own .bst file. BR Tobias. –  TobiasDK Jun 4 at 17:43
@TobiasDK In bibtex it would involve writing appropriate functions in the .bst file to do this. It is most certainly possible,cf., but depends on the rest of that file. Post a new question if you can't make it work. I would in fact be tempted to use something like bibtool to preprocess the bib file instead. –  Andrew Swann Jun 5 at 8:44
@AndrewSwann, thank you for the answer. I have posted a new question to deal with my problem. Maybe you have time to look at it: […. Thanks in advance. –  TobiasDK Jun 5 at 9:37

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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