]> gitweb.michael.orlitzky.com - mjotex.git/commitdiff
Add hyperref DOI support to mjo.bst (based on the urlbst tool).
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 12 Jan 2017 18:17:48 +0000 (13:17 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 12 Jan 2017 18:17:48 +0000 (13:17 -0500)
mjo.bst

diff --git a/mjo.bst b/mjo.bst
index e35241dcea13cbf150fe8a9bee1e6e8bff75d844..105ec77b607b891ec7c03c90044da1a72b726971 100644 (file)
--- a/mjo.bst
+++ b/mjo.bst
@@ -66,6 +66,15 @@ ENTRY
   }
   {}
   { label }
+
+STRINGS { doiprefix doiurl }
+INTEGERS { hrefform }
+FUNCTION {init.doi.variables}
+{
+  "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
+  "doi:" 'doiprefix :=      % text prefix printed before DOI ref
+  #2 'hrefform :=           % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
+}
 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
 FUNCTION {init.state.consts}
 { #0 'before.all :=
@@ -482,13 +491,38 @@ FUNCTION {format.issn}
   if$
 }
 
+FUNCTION {make.href.null}
+{
+  pop$
+}
+
+FUNCTION {make.href.hypertex}
+{
+  "\special {html:<a href=" quote$ *
+  swap$ * quote$ * "> }" * swap$ *
+  "\special {html:</a>}" *
+}
+
+FUNCTION {make.href.hyperref}
+{
+  "\href {" swap$ * "} {\path{" * swap$ * "}}" *
+}
+
+FUNCTION {make.href}
+{ hrefform #2 =
+    'make.href.hyperref      % hrefform = 2
+    { hrefform #1 =
+        'make.href.hypertex  % hrefform = 1
+        'make.href.null      % hrefform = 0 (or anything else)
+      if$
+    }
+  if$
+}
+
 FUNCTION {format.doi}
 { doi empty$
     { "" }
-    {
-      new.block
-      "\doi{" doi * "}" *
-    }
+    { doiprefix doi * doiurl doi * make.href }
   if$
 }
 FUNCTION {format.note}
@@ -1451,6 +1485,7 @@ FUNCTION {begin.bib}
   write$ newline$
 }
 EXECUTE {begin.bib}
+EXECUTE {init.doi.variables}
 EXECUTE {init.state.consts}
 ITERATE {call.type$}
 FUNCTION {end.bib}