DOI в библиографии IEEEtran

DOI в библиографии IEEEtran

TheСсылка на цитирование IEEEуказывает, что DOI должен быть предоставлен для электронных статей без номеров страниц. Однако, IEEEtran.bstпохоже, не предоставляет такой функциональности. Каков наилучший способ получить номера DOI в библиографии?

Бонус, если решение также

  • опционально делает отображение DOI обусловленным отсутствием номеров страниц только для материалов конференции; и/или
  • гиперссылки на DOI (например, через пакеты doiили uri).

Я приму решение, которое подразумевает редактирование IEEEtran.bst(именно над этим подходом я сейчас работаю), но предпочел бы решение, которое этого не требует, если это возможно.

решение1

Я создалпластырьк IEEEtranN.bstэтому все идет, включая «бонусные» функции.

решение2

Я использую следующий подход для гиперссылки заголовка статьи:

Сначала скопируйте IEEEtran.bstв IEEEtranDOI.bst.

В ENTRYполе около строки 250 добавьте строку следующего вида:

  dayfiled
+ doi
  edition

В FUNCTION {format.article.title}поле около строки 1400 добавьте строку следующего вида:

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

Затем используйте \usepackage{hyperref}и \bibliographystyle{IEEEtranDOI}и это должно сработать. Используйте, \usepackage[hidelinks]{hyperref}если вам нравятся невидимые гиперссылки.

Это патч, который я создал для сегодняшнего IEEEtran.bst, используя 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 ----
      chapter
      day
      dayfiled
+     doi
      edition
      editor
      howpublished
***************
*** 1419,1424 ****
--- 1420,1426 ----
      }
    if$
    "title" bibinfo.check
+   doi empty$ {} { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * } if$
    duplicate$ empty$ 'skip$
      { quote.close 'this.status.quote :=
        is.last.char.not.punct

А вот MWE для проверки вашего IEEEtranDOI.bst:

\documentclass{IEEEtran}
\usepackage{hyperref}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
    @article{Example,
        author = {Author, The},
        doi = {10.1000/182},
        journal = {Awesome Journal},
        title = {{This is the title, click to go to doi}},
        year = {2016},
    }
\end{filecontents}
\begin{document}
    \nocite{*}
    \bibliographystyle{IEEEtranDOI}
    \bibliography{\jobname}
\end{document}

Связанный контент