git.iko.soy/typeable/pandoc
on master help sign in
Automatically include URI-encoded jats.csl for jats output.

This way people can do pandoc -s -t jats --filter pandoc-citeproc and it will just work. If they want to specify a stylesheet, they still can.

commit6ad486c3c3922e4ac7dd5710f69c3ccf623e92b4 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 30 Mar 2017, 16:43 (10 years ago) parent2f19b5d
4 files changed+223−2
COPYRIGHT+5 data/jats.csl+208 pandoc.cabal+2 src/Text/Pandoc/App.hs+8−2
COPYRIGHT+5
@@ -110,3 +110,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
110110------------------------------------------------------------------------
111111The template pandoc.jats is Copyright 2013--15 Martin Fenner,
112112released under GPL version 2 or later.
113+
114+The file data/jats.csl is derived from a csl file by Martin Fenner,
115+revised by Martin Paul Eve and then John MacFarlane.
116+"This work is licensed under a Creative Commons Attribution-ShareAlike 3.0
117+License. Originally by Martin Fenner."
data/jats.cslnew file+208
@@ -0,0 +1,208 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" default-locale="en-US">
3+ <info>
4+ <title>Journal Article Tag Suite</title>
5+ <title-short>JATS</title-short>
6+ <id>http://www.zotero.org/styles/journal-article-tag-suite</id>
7+ <link href="https://github.com/MartinPaulEve/JATS-CSL/blob/master/jats.csl" rel="self"/>
8+ <link rel="documentation" href="http://jats.nlm.nih.gov/archiving/tag-library/1.0/index.html"/>
9+ <author>
10+ <name>Martin Paul Eve</name>
11+ <email>martin@martineve.com</email>
12+ </author>
13+ <category citation-format="numeric"/>
14+ <category field="medicine"/>
15+ <category field="biology"/>
16+ <summary>Use this style to generate bibliographic data in Journal Article Tagging Suite (JATS) 1.0 XML format</summary>
17+ <updated>2014-06-21T17:41:26+00:00</updated>
18+ <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Originally by Martin Fenner.</rights>
19+ </info>
20+ <locale xml:lang="en">
21+ <terms>
22+ <term name="et-al">{{jats}}&lt;etal/&gt;{{/jats}}</term>
23+ </terms>
24+ </locale>
25+ <macro name="citation-number">
26+ <text variable="citation-number" prefix="{{jats}}id=&quot;ref-{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}"/>
27+ </macro>
28+ <macro name="author">
29+ <names variable="author">
30+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
31+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
32+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;/given-names&gt;{{/jats}}"/>
33+ </name>
34+ <substitute>
35+ <names variable="editor"/>
36+ </substitute>
37+ </names>
38+ </macro>
39+
40+ <macro name="editor">
41+ <names variable="editor" prefix="{{jats}}&lt;person-group person-group-type=&quot;editor&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/person-group&gt;{{/jats}}">
42+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
43+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
44+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;/given-names&gt;{{/jats}}"/>
45+ </name>
46+ <substitute>
47+ <names variable="editor"/>
48+ </substitute>
49+ </names>
50+ </macro>
51+
52+ <macro name="editor">
53+ <group delimiter=": ">
54+ <names variable="editor">
55+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
56+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
57+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;given-names&gt;{{/jats}}"/>
58+ </name>
59+ </names>
60+ </group>
61+ </macro>
62+ <macro name="title">
63+ <choose>
64+ <if type="book" match="any">
65+ <group prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}">
66+ <text variable="title"/>
67+ </group>
68+ </if>
69+ <else>
70+ <group prefix="{{jats}}&lt;article-title&gt;{{/jats}}" suffix="{{jats}}&lt;/article-title&gt;{{/jats}}">
71+ <text variable="title"/>
72+ </group>
73+ </else>
74+ </choose>
75+ </macro>
76+ <macro name="container-title">
77+ <text variable="container-title" form="short" prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}"/>
78+ </macro>
79+ <macro name="publisher">
80+ <text variable="publisher" prefix="{{jats}}&lt;publisher-name&gt;{{/jats}}" suffix="{{jats}}&lt;/publisher-name&gt;{{/jats}}"/>
81+ <text variable="publisher-place" prefix="{{jats}}&lt;publisher-loc&gt;{{/jats}}" suffix="{{jats}}&lt;/publisher-loc&gt;{{/jats}}"/>
82+ </macro>
83+ <macro name="link">
84+ <choose>
85+ <if match="any" variable="DOI">
86+ <group prefix="{{jats}}&lt;pub-id pub-id-type=&quot;doi&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/pub-id&gt;{{/jats}}">
87+ <text variable="DOI"/>
88+ </group>
89+ </if>
90+ </choose>
91+ <choose>
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}}">
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"/>
96+ </group>
97+ </if>
98+ </choose>
99+ <choose>
100+ <if variable="URL" match="any">
101+ <group prefix="{{jats}}&lt;ext-link ext-link-type=&quot;uri&quot; {{/jats}}" suffix="{{jats}}&lt;/ext-link&gt;{{/jats}}">
102+ <text variable="URL" prefix="{{jats}}xlink:href=&quot;{{/jats}}" suffix="{{jats}}&quot; xlink:type=&quot;simple&quot;&gt;{{/jats}}"/>
103+ <text variable="URL"/>
104+ </group>
105+ </if>
106+ </choose>
107+ </macro>
108+ <macro name="date">
109+ <choose>
110+ <if type="article-journal article-magazine article-newspaper report patent book" match="any">
111+ <group prefix="{{jats}}&lt;date&gt;{{/jats}}" suffix="{{jats}}&lt;/date&gt;{{/jats}}">
112+ <date variable="issued">
113+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}&lt;day&gt;{{/jats}}" suffix="{{jats}}&lt;/day&gt;{{/jats}}"/>
114+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}&lt;month&gt;{{/jats}}" suffix="{{jats}}&lt;/month&gt;{{/jats}}"/>
115+ <date-part name="year" prefix="{{jats}}&lt;year&gt;{{/jats}}" suffix="{{jats}}&lt;/year&gt;{{/jats}}"/>
116+ </date>
117+ </group>
118+ </if>
119+ <else>
120+ <group prefix="{{jats}}&lt;date-in-citation content-type=&quot;access-date&quot;{{/jats}}" suffix="{{jats}}&lt;/date-in-citation&gt;{{/jats}}">
121+ <date variable="accessed" prefix="{{jats}} iso-8601-date=&quot;{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}">
122+ <date-part name="year"/>
123+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>
124+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>
125+ </date>
126+ <date variable="accessed">
127+ <date-part name="day" prefix="{{jats}}&lt;day&gt;{{/jats}}" suffix="{{jats}}&lt;/day&gt;{{/jats}}"/>
128+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}&lt;month&gt;{{/jats}}" suffix="{{jats}}&lt;/month&gt;{{/jats}}"/>
129+ <date-part name="year" prefix="{{jats}}&lt;year&gt;{{/jats}}" suffix="{{jats}}&lt;/year&gt;{{/jats}}"/>
130+ </date>
131+ </group>
132+ </else>
133+ </choose>
134+ </macro>
135+ <macro name="location">
136+ <choose>
137+ <if type="article-journal article-magazine" match="any">
138+ <text variable="volume" prefix="{{jats}}&lt;volume&gt;{{/jats}}" suffix="{{jats}}&lt;/volume&gt;{{/jats}}"/>
139+ <text variable="issue" prefix="{{jats}}&lt;issue&gt;{{/jats}}" suffix="{{jats}}&lt;/issue&gt;{{/jats}}"/>
140+ </if>
141+ </choose>
142+ <choose>
143+ <if type="article-journal article-magazine article-newspaper chapter" match="any">
144+ <text variable="page-first" prefix="{{jats}}&lt;fpage&gt;{{/jats}}" suffix="{{jats}}&lt;/fpage&gt;{{/jats}}"/>
145+ </if>
146+ </choose>
147+ </macro>
148+ <macro name="publication-type">
149+ <group prefix="{{jats}} publication-type=&quot;{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}">
150+ <choose>
151+ <if type="article-journal article-magazine article-newspaper" match="any">
152+ <text value="journal"/>
153+ </if>
154+ <else-if type="book" match="any">
155+ <text value="book"/>
156+ </else-if>
157+ <else-if type="chapter" match="any">
158+ <text value="bookchapter"/>
159+ </else-if>
160+ <else-if type="dataset" match="any">
161+ <text value="dataset"/>
162+ </else-if>
163+ <else-if type="patent" match="any">
164+ <text value="patent"/>
165+ </else-if>
166+ <else-if type="report" match="any">
167+ <text value="report"/>
168+ </else-if>
169+ <else-if type="review" match="any">
170+ <text value="review"/>
171+ </else-if>
172+ <else>
173+ <text value="standard"/>
174+ </else>
175+ </choose>
176+ </group>
177+ </macro>
178+ <citation collapse="citation-number">
179+ <sort>
180+ <key variable="citation-number"/>
181+ </sort>
182+ <layout delimiter=",">
183+ <group prefix="{{jats}}&lt;xref ref-type=&quot;bibr&quot; rid=&quot;{{/jats}}" suffix="{{jats}}&lt;/xref&gt;{{/jats}}">
184+ <text variable="citation-number" prefix="{{jats}}ref-{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}"/>
185+ <text variable="citation-number"/>
186+ </group>
187+ </layout>
188+ </citation>
189+ <bibliography sort-separator="">
190+ <layout>
191+ <group prefix="{{jats}}&lt;ref {{/jats}}" suffix="{{jats}}&lt;/ref&gt;{{/jats}}">
192+ <text macro="citation-number"/>
193+ <group prefix="{{jats}}&lt;element-citation{{/jats}}" suffix="{{jats}}&lt;/element-citation&gt;{{/jats}}">
194+ <text macro="publication-type"/>
195+ <text macro="author" prefix="{{jats}}&lt;person-group person-group-type=&quot;author&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/person-group&gt;{{/jats}}"/>
196+ <text macro="title" />
197+ <text macro="container-title"/>
198+ <text macro="editor"/>
199+ <text macro="publisher"/>
200+ <text macro="date"/>
201+ <text macro="location"/>
202+ <text macro="link"/>
203+ </group>
204+ </group>
205+ </layout>
206+ </bibliography>
207+</style>
208+
pandoc.cabal+2
@@ -111,6 +111,8 @@ Data-Files:
111111 data/pandoc.lua
112112 -- bash completion template
113113 data/bash_completion.tpl
114+ -- jats csl
115+ data/jats.csl
114116 -- documentation
115117 MANUAL.txt, COPYRIGHT
116118Extra-Source-Files:
src/Text/Pandoc/App.hs+8−2
@@ -73,7 +73,7 @@ import Text.Pandoc.Lua ( runLuaFilter )
7373import Text.Pandoc.MediaBag (MediaBag, extractMediaBag, mediaDirectory)
7474import Text.Pandoc.PDF (makePDF)
7575import Text.Pandoc.Process (pipeProcess)
76−import Text.Pandoc.SelfContained (makeSelfContained)
76+import Text.Pandoc.SelfContained (makeSelfContained, makeDataURI)
7777import Text.Pandoc.Shared (err, headerShift, openURL, readDataFile,
7878 readDataFileUTF8, safeRead, tabFilter)
7979import qualified Text.Pandoc.UTF8 as UTF8
@@ -386,10 +386,16 @@ convertWithOpts opts = do
386386 withMediaBag . r readerOpts) sources
387387 return (mconcat (map fst pairs), mconcat (map snd pairs))
388388
389+ jatsCSL <- readDataFile datadir "jats.csl"
390+ let jatsEncoded = makeDataURI ("application/xml", jatsCSL)
391+ let metadata = if format == "jats"
392+ then ("csl", jatsEncoded) : optMetadata opts
393+ else optMetadata opts
394+
389395 runIO' $ do
390396 (doc, media) <- sourceToDoc sources
391397 doc' <- (maybe return (extractMedia media) (optExtractMedia opts) >=>
392− return . flip (foldr addMetadata) (optMetadata opts) >=>
398+ return . flip (foldr addMetadata) metadata >=>
393399 applyTransforms transforms >=>
394400 applyLuaFilters datadir (optLuaFilters opts) [format] >=>
395401 applyFilters datadir filters' [format]) doc