git.iko.soy/typeable/pandoc
on master help sign in
JATS writer: fix citations with PMID so they validate.
9dd2eefJohn MacFarlane
data/jats.csl+2−4
@@ -64,7 +64,7 @@
64 <if type="book" match="any">
64 <if type="book" match="any">
65 <group prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}">
65 <group prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}">
66 <text variable="title"/>
66 <text variable="title"/>
67− </group>
67+ </group>
68 </if>
68 </if>
69 <else>
69 <else>
70 <group prefix="{{jats}}&lt;article-title&gt;{{/jats}}" suffix="{{jats}}&lt;/article-title&gt;{{/jats}}">
70 <group prefix="{{jats}}&lt;article-title&gt;{{/jats}}" suffix="{{jats}}&lt;/article-title&gt;{{/jats}}">
@@ -90,8 +90,7 @@
90 </choose>
90 </choose>
91 <choose>
91 <choose>
92 <if match="any" variable="PMID">
92 <if match="any" variable="PMID">
93− <group prefix="{{jats}}&lt;ext-link ext-link-type=&quot;pmid&quot; {{/jats}}" suffix="{{jats}}&lt;/ext-link&gt;{{/jats}}">
93+ <group prefix="{{jats}}&lt;pub-id pub-id-type=&quot;pmid&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/pub-id&gt;{{/jats}}">
94− <text variable="PMID" prefix="{{jats}}xlink:href=&quot;http://www.ncbi.nlm.nih.gov/pubmed/{{/jats}}" suffix="{{jats}}&quot; xlink:type=&quot;simple&quot;&gt;{{/jats}}"/>
95 <text variable="PMID"/>
94 <text variable="PMID"/>
96 </group>
95 </group>
97 </if>
96 </if>
@@ -202,4 +201,3 @@
202 </layout>
201 </layout>
203 </bibliography>
202 </bibliography>
204</style>
203</style>
205−
src/Text/Pandoc/Writers/JATS.hs+10−6
@@ -18,7 +18,7 @@ import Prelude
18import Control.Monad.Reader
18import Control.Monad.Reader
19import Data.Char (toLower)
19import Data.Char (toLower)
20import Data.Generics (everywhere, mkT)
20import Data.Generics (everywhere, mkT)
21−import Data.List (isSuffixOf, partition)
21+import Data.List (isSuffixOf, partition, isPrefixOf)
22import Data.Maybe (fromMaybe)
22import Data.Maybe (fromMaybe)
23import Data.Text (Text)
23import Data.Text (Text)
24import Text.Pandoc.Class (PandocMonad, report)
24import Text.Pandoc.Class (PandocMonad, report)
@@ -322,11 +322,15 @@ inlinesToJATS :: PandocMonad m => WriterOptions -> [Inline] -> JATS m Doc
322inlinesToJATS opts lst = hcat <$> mapM (inlineToJATS opts) (fixCitations lst)
322inlinesToJATS opts lst = hcat <$> mapM (inlineToJATS opts) (fixCitations lst)
323 where
323 where
324 fixCitations [] = []
324 fixCitations [] = []
325+ fixCitations (x:xs) | needsFixing x =
326+ x : Str (stringify ys) : fixCitations zs
327+ where
325− fixCitations (x@(RawInline (Format "jats") "<pub-id pub-id-type=\"doi\">") : xs) =
328+ needsFixing (RawInline (Format "jats") z) =
329+ "<pub-id pub-id-type=" `isPrefixOf` z
330+ needsFixing _ = False
326− let isRawInline (RawInline{}) = True
331+ isRawInline (RawInline{}) = True
327− isRawInline _ = False
332+ isRawInline _ = False
328− (ys,zs) = break isRawInline xs
333+ (ys,zs) = break isRawInline xs
329− in x : Str (stringify ys) : fixCitations zs
330 fixCitations (x:xs) = x : fixCitations xs
334 fixCitations (x:xs) = x : fixCitations xs
331
335
332-- | Convert an inline element to JATS.
336-- | Convert an inline element to JATS.