The IEEE Citation Reference specifies that a DOI should be provided for electronic articles without page numbers. However, IEEEtran.bst appears to provide no such functionality. What is the best way to get DOI numbers in the bibliography?

Bonus if the solution also

  • optionally makes display of DOI conditional on a lack of page numbers for conference proceedings only; and/or
  • hyperlinks the DOI (e.g. through the doi or uri packages).

I'll accept a solution that involves editing IEEEtran.bst—this is the approach I'm working on now—but would prefer one that doesn't, if possible.

  • Have you asked Michael Shell (author of IEEEtran) about this?
    – Joseph Wright
    Aug 16 '12 at 17:40
  • @JosephWright I sent him an email concurrently with this question, and I'll report what I hear back.
    – ezod
    Aug 16 '12 at 17:53
  • And so you heard nothing back?
    – Clément
    Jan 13 '15 at 17:44
  • 4
    He reported in August 2012 that DOI functionality is on the to-do list, and that there is more than just DOI to consider (e.g. ArXiv), so it is more involved than just a quick patch.
    – ezod
    Jan 14 '15 at 19:57

I've created a patch to IEEEtranN.bst that does the trick, including the "bonus" features.

  • 4
    I think the better way would be to create a new bst file like IEEEtranNDoi.bst and provide a MWE which shows how to use it ...
    – Mensch
    Aug 17 '12 at 1:47
  • 1
    Applying the patch generates the new bst file. I could provide that, although for the moment I am more interested in comments on the changes. The usage should be (and in this case, is) transparent to the user as compared to the current version of IEEEtranN.bst.
    – ezod
    Aug 17 '12 at 3:18
  • Works like a charm. Note the Q&A to enhance the DOI with a hyperlink: tex.stackexchange.com/questions/394811/…
    – fuesika
    Oct 6 '17 at 8:58

I use this approach to hyperlink the article title:

First, copy IEEEtran.bst to IEEEtranDOI.bst.

In the ENTRY field around line 250, add a line like this:

+ doi

In the FUNCTION {format.article.title} field around line 1400, add a line like this:

  "title" bibinfo.check
+ doi empty$ {} { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } if$
  duplicate$ empty$ 'skip$

Then use \usepackage{hyperref} and \bibliographystyle{IEEEtranDOI} and it should work. Use \usepackage[hidelinks]{hyperref} if you like hyperlinks invisible.

This is a patch I created for today's IEEEtran.bst using diff -c IEEEtran.bst IEEEtranDOI.bst:

*** IEEEtran.bst        2015-08-26 16:56:09.000000000 -0400
--- IEEEtranDOI.bst     2016-01-20 14:17:48.216975400 -0500
*** 262,267 ****
--- 262,268 ----
+     doi
*** 1419,1424 ****
--- 1420,1426 ----
    "title" bibinfo.check
+   doi empty$ {} { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } if$
    duplicate$ empty$ 'skip$
      { quote.close 'this.status.quote :=

And here's an MWE to test your IEEEtranDOI.bst:

        author = {Author, The},
        doi = {10.1000/182},
        journal = {Awesome Journal},
        title = {{This is the title, click to go to doi}},
        year = {2016},
  • 1
    I never assume anything about academicians.
    – percusse
    Jan 21 '16 at 16:39
  • I didn't say you told to do so. It's a generic comment.
    – percusse
    Jan 21 '16 at 16:42
  • 2
    Some comments are completely unnecessary and/or out of place. (This is a generic comment.)
    – bers
    Jan 21 '16 at 16:50
  • and you are the winner of this argument. Have a badge.
    – percusse
    Jan 21 '16 at 17:08

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.