Pretendo submeter um manuscrito aoRevista de Física Computacionalda Elsevier. Embora nenhum requisito de formatação bibliográfica tenha sido explicitamente especificado pelo editor para a submissão inicial, estou interessado em replicar o estilo bibliográfico real do PDF final dos artigos publicados nessa revista.
O requisito é que cada item da bibliografia (ou seja, a entrada de linha inteira) se torne um hiperlink clicável (usando o doi
campo, se disponível, ou usando o url
campo da chave relevante no bib
arquivo).
Como estou usando elsarticle.cls
, não consigo usar biblatex
. Portanto, uma natbib/bibtex
solução baseada é necessária.
Aqui está um MWE para começar:
\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}
Responder1
Como escrevi em meu comentário sob a pergunta, não acho necessariamente que essa seja a melhor ideia para envio aos periódicos da Elsevier, mas isso pode ser feito se você modificar .bst
um pouco o arquivo.
Tenho certeza de que existem outras maneiras de conseguir isso, mas aqui está o que fiz.
elsarticle-num-names.bst
já existe uma maneira de compor algumas partes da referência como um link para a URL (os títulos das @misc
entradas com um url
campo já estão vinculados diretamente à URL), então podemos usar esse mecanismo e estendê-lo para estender a área do link para o artigo completo e considerar DOIs também.
As extensões para DOIs são mais ou menos diretas. Estender a área de link exigiu alguma confusão de macros e funções.
A diferença para elsarticle-num-names.bst
(v2.1 [15/04/2019], a versão atual no CTAN) é
--- 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}
O arquivo modificado link-elsarticle-num.bst
pode ser baixado emhttps://gist.github.com/moewew/1519006f9de5500db470bcc4701edeb5(essa página também tem uma boa diferença com o original).
Com isso link-elsarticle-num.bst
o seguinte 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}
produz
Se você deseja suprimir a saída explícita de URLs e DOIs, remova
output.web.refs % urlbst
e a
type$ "webpage" =
'skip$
'write.url
if$
bloquear de FUNCTION {fin.entry}
in link-elsarticle-num.bst
para que ele leia
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$
}
Responder2
Para converter a bibliografia citada em links clicáveis com elsarticle
classe (que usa implicitamente bibtex
o gerenciador de referências), você pode usar \usepackage{hyperref}
. A segunda página da saída seria como:
O arquivo tex de entrada é
\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}
O arquivo de referência usado aqui é 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},
}
O \usepackage{hyperref}
pode ser usado com muitas opções para ajustar os links do seu link. por exemplo, alterar a cor dos links, colocar sublinhado ou caixa, etc. Você pode verificar isso em seumanual. Isso serve para vincular as citações às referências na seção bibliográfica.
Para vincular as referências da seção de bibliografia ao site de publicação, você deve usar os campos url
ou doi
, ou ambos, em seu reference.bib
arquivo. O siteReferência cruzadaajuda muito com isso, pois você pode copiar todas as informações de referência diretamente de lá, Actions>Cite
incluindo url
e doi
, para o seu reference.bib
arquivo.
Observe que o uso do \bibliography
comando deve ser seguido pelo nome do arquivo bibsemextensão como esta \bibliography{reference}
.