Wie kann ich bei Verwendung von elsarticle.cls jedes Bibliografieelement in einen anklickbaren Hyperlink umwandeln?

Wie kann ich bei Verwendung von elsarticle.cls jedes Bibliografieelement in einen anklickbaren Hyperlink umwandeln?

Ich beabsichtige, ein Manuskript einzureichen bei derZeitschrift für Computerphysikvon Elsevier. Obwohl vom Verlag für die erste Einreichung keine expliziten Formatierungsanforderungen für Bibliografien festgelegt wurden, bin ich daran interessiert, den tatsächlichen Bibliografiestil der endgültigen PDF-Datei der in dieser Zeitschrift veröffentlichten Artikel nachzubilden.

Voraussetzung ist, dass jedes Bibliografieelement (also der gesamte Zeileneintrag) zu einem anklickbaren Hyperlink wird (unter Verwendung des doiFelds, falls verfügbar, andernfalls unter Verwendung des urlFelds des entsprechenden Schlüssels in der bibDatei).

Da ich verwende elsarticle.cls, kann ich nicht verwenden biblatex. Daher ist eine natbib/bibtexbasierte Lösung erforderlich.

Hier ist ein MWE zum Einstieg:

\documentclass[number]{elsarticle}
\begin{document}

\begin{frontmatter}

    \title{Dummy document \tnoteref{t1,t2}}

    \tnotetext[t1]{Title footnote 1}
    \tnotetext[t2]{Title footnote 2}
    \author[a]{First Author\fnref{fn1}}
    \ead{firstemail_id@insti_1.edu}
    \author[b]{Second Author\fnref{fn2}}
    \ead{secondemail_id@insti_2.edu}
    \address[a]{Address of author with affiliation `a'}
    \address[b]{Address of author with affiliation `b'}
    \fntext[fn1]{This is a footnote.}
    \fntext[fn2]{Another author footnote}

    \begin{abstract}
        Dummy abstract.
    \end{abstract}

    % Research highlights
    \begin{highlights}
    \item Research highlight 1
    \item Research highlight 2
    \end{highlights}

    \begin{keyword}
        Some \sep keywords
    \end{keyword}

\end{frontmatter}

\section{Introduction}{\label{sec:intro}}
Intro

\section{Next}{\label{sec:blah}}
More blah

\nocite{*}   % Temporary placeholder. Comment out after bib file is populated and \cite commands issued
\bibliographystyle{elsarticle-num} 
\bibliography{manuscript_references.bib}

\end{document}

Antwort1

Wie ich in meinem Kommentar unter der Frage geschrieben habe, halte ich dies nicht unbedingt für die beste Idee für die Einreichung bei Elsevier-Zeitschriften, aber es ist möglich, wenn Sie die .bstDatei ein wenig ändern.

Ich bin sicher, dass es auch andere Möglichkeiten gibt, dies zu erreichen, aber ich habe es so gemacht.

elsarticle-num-names.bstverfügt bereits über eine Möglichkeit, einige Teile der Referenz als Link zur URL zu setzen (die Titel der @miscEinträge mit einem urlFeld sind bereits direkt mit der URL verknüpft). Wir können diese Maschinerie also nutzen und erweitern, um den Linkbereich auf den gesamten Artikel auszudehnen und auch DOIs zu berücksichtigen.

Die Erweiterungen für DOIs sind mehr oder weniger unkompliziert. Die Erweiterung des Linkbereichs erforderte einige Änderungen an Makros und Funktionen.

Der Unterschied zu elsarticle-num-names.bst(v2.1 [2019-04-15], der aktuellen Version auf CTAN) ist

--- elsarticle-num.bst  2019-04-05 15:29:24.000000000 +0200
+++ link-elsarticle-num.bst 2020-03-26 21:55:15.423852900 +0100
@@ -114,32 +114,51 @@
 }

 FUNCTION {setup.inlinelink}
-{ makeinlinelink
-    { hrefform #1 = % hypertex
-        { "\special {html:<a href=" quote$ * url * quote$ * "> }{" * 'openinlinelink :=
+{
+  doi empty$
+    {
+      url empty$
+        { "" }
+        { url }
+      if$
+    }
+    { doiurl doi * }
+  if$
+  duplicate$ empty$
+    'pop$
+    { 
+      hrefform #1 = % hypertex
+        { "\special {html:<a href=" quote$ * swap$ * quote$ * "> }" * 'openinlinelink :=
           "\special {html:</a>}" 'closeinlinelink :=
           }
         { hrefform #2 = % hyperref
-            { "\href{" url * "}{" * 'openinlinelink :=
+            { "\href{" swap$ * "}{" * 'openinlinelink :=
               "}" 'closeinlinelink :=
               }
-            'skip$
+            'pop$
           if$ % hrefform #2 =
         }
       if$ % hrefform #1 =
       #0 'makeinlinelink :=
     }
-    'skip$
- if$ % makeinlinelink
+  if$
 }
-FUNCTION {add.inlinelink}
+FUNCTION {add.openinlinelink}
 { openinlinelink empty$
     'skip$
-    { openinlinelink swap$ * closeinlinelink *
+    { openinlinelink write$
       "" 'openinlinelink :=
       }
   if$
 }
+FUNCTION {add.closeinlinelink}
+{ closeinlinelink empty$
+    'skip$
+    { closeinlinelink write$
+      "" 'closeinlinelink :=
+      }
+  if$
+}
 FUNCTION {output.nonnull}
 { % Save the thing we've been asked to output
   's :=
@@ -157,7 +176,6 @@
       % Write out what's currently at the top of the stack, using the
       % original output.nonnull function.
       s
-      add.inlinelink
       output.nonnull.original % invoke the original output.nonnull
     }
     { % Still in brackets.  Add open-bracket or (continuation) comma, add the
@@ -203,12 +221,6 @@
   if$
 }

-FUNCTION {fin.entry.original}
-{ add.period$
-  write$
-  newline$
-}
-
 FUNCTION {new.block}
 { output.state before.all =
     'skip$
@@ -472,7 +484,7 @@
 FUNCTION {write.url}
 { url empty$
     { skip$ }
-    { "\newline\urlprefix\url{" url * "}" * write$ newline$ }
+    { "\newline\urlprefix\nolinkurl{" url * "}" * write$ newline$ }
   if$
 }

@@ -1032,13 +1044,11 @@
 }
 FUNCTION {make.href.hypertex}
 {
-  "\special {html:<a href=" quote$ *
-  swap$ * quote$ * "> }" * swap$ *
-  "\special {html:</a>}" *
+  pop$
 }
 FUNCTION {make.href.hyperref}
 {
-  "\href {" swap$ * "} {\path{" * swap$ * "}}" *
+  pop$ "\path{" swap$ * "}" *
 }
 FUNCTION {make.href}
 { hrefform #2 =
@@ -1054,12 +1064,7 @@
 FUNCTION {format.url}
 { inlinelinks #1 = url empty$ or
    { "" }
-   { hrefform #1 =
-       { % special case -- add HyperTeX specials
-         urlintro "\url{" url * "}" * url make.href.hypertex * }
-       { urlintro "\url{" * url * "}" * }
-     if$
-   }
+   {  urlintro "\nolinkurl{" * url * "}" * }
   if$
 }

@@ -1104,14 +1109,13 @@
 FUNCTION {output.bibitem}
 { outside.brackets 'bracket.state :=
   output.bibitem.original
-  inlinelinks url empty$ not and
-    { #1 'makeinlinelink := }
-    { #0 'makeinlinelink := }
-  if$
+  setup.inlinelink
+  add.openinlinelink
 }

 FUNCTION {fin.entry}
-{ output.web.refs  % urlbst
+{ 
+  output.web.refs  % urlbst
   makeinlinelink       % ooops, it appears we didn't have a title for inlinelink
     { setup.inlinelink % add some artificial link text here, as a fallback
       "[link]" output.nonnull }
@@ -1121,7 +1125,14 @@
     { "]" * }
     'skip$
   if$
-  fin.entry.original
+  add.period$
+  write$
+  type$ "webpage" =
+    'skip$
+    'write.url
+  if$
+  add.closeinlinelink
+  newline$
 }

 FUNCTION {webpage}
@@ -1139,7 +1150,6 @@
     }
   if$
   new.block
-  title empty$ 'skip$ 'setup.inlinelink if$
   format.title "title" output.check
   inbrackets "online" output
   new.block
@@ -1159,7 +1169,6 @@
 FUNCTION {article}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   crossref missing$
     { journal
@@ -1179,7 +1188,6 @@
     'skip$ 
   if$
   fin.entry
-  write.url
 }

 FUNCTION {book}
@@ -1194,7 +1202,6 @@
       if$
     }
   if$
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.btitle "title" output.check
   crossref missing$
     { format.edition output
@@ -1208,20 +1215,17 @@
   if$
   format.note output
   fin.entry
-  write.url
 }

 FUNCTION {booklet}
 { output.bibitem
   format.authors output
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   howpublished output
   address output
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {inbook}
@@ -1236,7 +1240,6 @@
       if$
     }
   if$
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.btitle "title" output.check
   crossref missing$
     {
@@ -1254,13 +1257,11 @@
   format.pages "pages" output.check
   format.note output
   fin.entry
-  write.url
 }

 FUNCTION {incollection}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   crossref missing$
     { format.in.ed.booktitle "booktitle" output.check
@@ -1277,13 +1278,11 @@
   format.pages "pages" output.check
   format.note output
   fin.entry
-  write.url
 }

 FUNCTION {inproceedings}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   crossref missing$
     { format.in.ed.booktitle "booktitle" output.check
@@ -1303,7 +1302,6 @@
   format.pages "pages" output.check
   format.note output
   fin.entry
-  write.url
 }

 FUNCTION {conference} { inproceedings }
@@ -1320,7 +1318,6 @@
     }
     { format.authors output.nonnull }
   if$
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.btitle "title" output.check
   author empty$
     { organization empty$
@@ -1339,13 +1336,11 @@
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {mastersthesis}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   bbl.mthesis format.thesis.type output.nonnull
   school "school" output.check
@@ -1353,26 +1348,22 @@
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {misc}
 { output.bibitem
   format.authors output
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title output
   howpublished output
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
   empty.misc.check
 }

 FUNCTION {phdthesis}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   school "school" output.check
@@ -1380,7 +1371,6 @@
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {proceedings}
@@ -1389,7 +1379,6 @@
     { organization output }
     { format.editors output.nonnull }
   if$
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.btitle "title" output.check
   format.bvolume output
   format.number.series output
@@ -1413,13 +1402,11 @@
   if$
   format.note output
   fin.entry
-  write.url
 }

 FUNCTION {techreport}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   format.tr.number output.nonnull
   institution "institution" output.check
@@ -1427,18 +1414,15 @@
   format.note output
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {unpublished}
 { output.bibitem
   format.authors "author" output.check
-  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst
   format.title "title" output.check
   format.note "note" output.check
   format.date "year" output.check
   fin.entry
-  write.url
 }

 FUNCTION {default.type} { misc }
@@ -1487,6 +1471,8 @@
   write$ newline$
   "  \def\href#1#2{#2} \def\path#1{#1}\fi"
   write$ newline$
+  "\providecommand*{\nolinkurl}{\url}"
+  write$ newline$
 }

 EXECUTE {begin.bib}

Die geänderte Datei link-elsarticle-num.bstkann heruntergeladen werden vonhttps://gist.github.com/moewew/1519006f9de5500db470bcc4701edeb5(diese Seite weist auch einen schönen Unterschied zum Original auf).

Damit ist link-elsarticle-num.bstfolgendes MWE

\documentclass[number]{elsarticle}
\usepackage[T1]{fontenc}
\usepackage[colorlinks]{hyperref}

\begin{filecontents}{\jobname.bib}
@article{sigfridsson,
  author       = {Sigfridsson, Emma and Ryde, Ulf},
  title        = {Comparison of Methods for Deriving Atomic Charges from the
                  Electrostatic Potential and Moments},
  journal      = {Journal of Computational Chemistry},
  year         = 1998,
  volume       = 19,
  number       = 4,
  pages        = {377-395},
  doi          = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P},
}
@misc{elk,
  author  = {Anne Elk},
  title   = {A Theory on {Brontosauruses}},
  year    = {1971},
  url     = {https://example.edu/~elk/bronto.pdf},
}
@book{nussbaum,
  author       = {Nussbaum, Martha},
  title        = {{Aristotle's} {`De Motu Animalium'}},
  year         = 1978,
  publisher    = {Princeton University Press},
  address      = {Princeton},
}
\end{filecontents}

\begin{document}
\nocite{*}
\bibliographystyle{link-elsarticle-num}
\bibliography{\jobname}
\end{document}

produziert

Vollständig verknüpfte Bib-Einträge


Wenn Sie die explizite Ausgabe von URLs und DOIs unterdrücken möchten, entfernen Sie

  output.web.refs  % urlbst

und das

  type$ "webpage" =
    'skip$
    'write.url
  if$

Block von FUNCTION {fin.entry}in, link-elsarticle-num.bstso dass es heißt

FUNCTION {fin.entry}
{ 
  makeinlinelink       % ooops, it appears we didn't have a title for inlinelink
    { setup.inlinelink % add some artificial link text here, as a fallback
      "[link]" output.nonnull }
    'skip$
  if$
  bracket.state close.brackets = % urlbst
    { "]" * }
    'skip$
  if$
  add.period$
  write$
  add.closeinlinelink
  newline$
}

Antwort2

elsarticleUm zitierte Bibliographien mit der Klasse (die implizit den Ref-Manager verwendet ) in anklickbare Links umzuwandeln bibtex, können Sie verwenden \usepackage{hyperref}. Die zweite Seite der Ausgabe würde wie folgt aussehen:

Bildbeschreibung hier eingeben

Die Eingabe-Tex-Datei ist

\documentclass[number]{elsarticle}
\usepackage[hidelinks, colorlinks=true]{hyperref} %% ADDS LINKS TO REFERENCES, YOU CAN IGNORE THE OPTIONS [hidelinks, colorlinks=true] IF YOU LIKE.

\begin{document}

\begin{frontmatter}

\title{Dummy document \tnoteref{t1,t2}}

\tnotetext[t1]{Title footnote 1}
\tnotetext[t2]{Title footnote 2}
\author[a]{First Author\fnref{fn1}}
\ead{firstemail_id@insti_1.edu}
\author[b]{Second Author\fnref{fn2}}
\ead{secondemail_id@insti_2.edu}
\address[a]{Address of author with affiliation `a'}
\address[b]{Address of author with affiliation `b'}
\fntext[fn1]{This is a footnote.}
\fntext[fn2]{Another author footnote}

\begin{abstract}
    Dummy abstract.
\end{abstract}

% Research highlights
\begin{highlights}
    \item Research highlight 1
    \item Research highlight 2
\end{highlights}

\begin{keyword}
    Some \sep keywords
\end{keyword}

\end{frontmatter}

\section{Introduction}{\label{sec:intro}}
Intro

\section{Next}{\label{sec:blah}}
More blah in example of citation here \cite{Tenis_2000}. Another example of citation \cite{kilde}. Here is a third citation for a real article with doi and url \cite{Aalbersberg_2014}.

\nocite{*}   % Temporary placeholder. Comment out after bib file is populated and \cite commands issued
\bibliographystyle{elsarticle-num}
\bibliography{reference} %%% DON’T ADD EXTENSION OF FILE

\end{document}

Die hier verwendete Referenzdatei ist reference.bib

@Book{kilde,
  author    = {John Doe},
  publisher = {John Wiley},
  title     = {Differential equations : an introduction to modern methods and applications},
  year      = {2020},
  address   = {New Jersey},
  isbn      = {9780471651413},
  keywords  = {Differential equations},
  language  = {In English},
}

@Article{Tenis_2000,
  author  = {Michael Tenis},
  journal = {Jounal of Energy},
  title   = {New article about something},
  year    = {2000},
  month   = aug,
  number  = {7},
  pages   = {66--88},
  volume  = {2},
}

@Article{Aalbersberg_2014,
  author    = {IJsbrand Jan Aalbersberg and Sophia Atzeni and Hylke Koers and Beate Specker and Elena Zudilova-Seinstra},
  journal   = {{LIBER} Quarterly},
  title     = {Bringing Digital Science Deep Inside the Scientific Article: the Elsevier Article of the Future Project},
  year      = {2014},
  month     = {apr},
  number    = {4},
  pages     = {274},
  volume    = {23},
  doi       = {10.18352/lq.8446},
  publisher = {Uopen Journals},
  url       = {https://doi.org/10.18352/lq.8446},
}

Die \usepackage{hyperref}kann mit vielen Optionen verwendet werden, um die Links zu Ihrer Verlinkung zu optimieren. z.B. ändern Sie die Farbe der Links, platzieren Sie Unterstreichungen oder Kästchen usw. Sie können dies in seinemHandbuch. Dies dient dazu, die Zitate mit den Referenzen im Abschnitt „Bibliografie“ zu verknüpfen.

Um die Referenzen im Abschnitt „Bibliographie“ mit der Website des Herausgebers zu verknüpfen, sollten Sie in Ihrer Datei die Felder urloder doioder beide verwenden reference.bib. Die WebsiteCrossrefhilft dabei sehr, da Sie alle Referenzinformationen, Actions>Citeeinschließlich urlund doi, direkt von dort in Ihre reference.bibDatei kopieren können.

Beachten Sie, dass nach der Verwendung des \bibliographyBefehls der Name der Bib-Datei folgen muss.ohneErweiterung wie diese \bibliography{reference}.

verwandte Informationen