From a78fd5dbc01f2ead8bf5926e9dfead8a6014382e Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Tue, 6 Oct 2020 17:33:25 -0700
Subject: [PATCH] Fix URL for "short DOIs" in citations.  See #6723.

Short DOIs begin 10/abcd and should be links to
`https://doi.org/abcd` (omitting the `10/`).
---
 src/Text/Pandoc/Citeproc.hs | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs
index 740e39f5e..732c60f29 100644
--- a/src/Text/Pandoc/Citeproc.hs
+++ b/src/Text/Pandoc/Citeproc.hs
@@ -475,11 +475,16 @@ linkifyVariables ref =
   ref{ referenceVariables = M.mapWithKey go $ referenceVariables ref }
  where
   go "URL" x    = tolink "https://" x
-  go "DOI" x    = tolink "https://doi.org/" x
+  go "DOI" x    = tolink "https://doi.org/" (fixShortDOI x)
   go "ISBN" x   = tolink "https://worldcat.org/isbn/" x
   go "PMID" x   = tolink "https://www.ncbi.nlm.nih.gov/pubmed/" x
   go "PMCID" x  = tolink "https://www.ncbi.nlm.nih.gov/pmc/articles/" x
   go _ x        = x
+  fixShortDOI x = let x' = extractText x
+                  in  if "10/" `T.isPrefixOf` x'
+                         then TextVal $ T.drop 3 x'
+                              -- see http://shortdoi.org
+                         else TextVal x'
   tolink pref x = let x' = extractText x
                       x'' = if "://" `T.isInfixOf` x'
                                then x'