summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnMacFarlane <>2018-01-18 16:50:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2018-01-18 16:50:00 (GMT)
commit93e7168ba280b3338f3715d67c516b16c15ebce5 (patch)
tree018a85f2be47add7bbdd3af5c12d529bd32ab9af
parentff459754c3c5b91fa888f7a9c745e6ca45b8da51 (diff)
version 0.13.0.10.13.0.1
-rw-r--r--changelog6
-rw-r--r--pandoc-citeproc.cabal10
-rw-r--r--src/Text/CSL/Input/Bibtex.hs6
-rw-r--r--src/Text/CSL/Pandoc.hs36
-rw-r--r--src/Text/CSL/Proc.hs1
-rw-r--r--src/Text/CSL/Style.hs5
-rw-r--r--stack.yaml2
-rw-r--r--tests/jats.csl208
-rw-r--r--tests/modern-language-association-7th-edition.csl460
9 files changed, 247 insertions, 487 deletions
diff --git a/changelog b/changelog
index 6489a39..b634545 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,9 @@
+pandoc-citeproc (0.13.0.1)
+
+ * Suppress empty footnotes.
+ * Use walk instead of bottomUp. This requires pandoc-types 1.17.3
+ but gives a speed boost.
+
pandoc-citeproc (0.13)
* Made bibliography parsing more efficient. (API change)
diff --git a/pandoc-citeproc.cabal b/pandoc-citeproc.cabal
index e3cd873..9635e81 100644
--- a/pandoc-citeproc.cabal
+++ b/pandoc-citeproc.cabal
@@ -1,5 +1,5 @@
name: pandoc-citeproc
-version: 0.13
+version: 0.13.0.1
cabal-version: >= 1.12
synopsis: Supports using pandoc with citeproc
@@ -108,7 +108,7 @@ library
ghc-prof-options: -fprof-auto-exported
build-depends: containers, directory, mtl,
bytestring, filepath,
- pandoc-types >= 1.16 && < 1.18,
+ pandoc-types >= 1.17.3 && < 1.18,
pandoc >= 1.16 && < 2.2,
tagsoup,
aeson >= 0.7 && < 1.3,
@@ -155,7 +155,7 @@ executable pandoc-citeproc
ghc-options: -funbox-strict-fields -Wall
ghc-prof-options: -fprof-auto-exported -rtsopts
build-depends: base >= 4, pandoc-citeproc,
- pandoc-types >= 1.16 && < 1.18,
+ pandoc-types >= 1.17.3 && < 1.18,
pandoc >= 1.16 && < 2.2,
aeson,
aeson-pretty >= 0.8, yaml, bytestring, syb, attoparsec, text,
@@ -180,7 +180,7 @@ executable test-citeproc
else
Buildable: False
build-depends: base >= 4, aeson, directory, text, mtl,
- pandoc-types >= 1.16 && < 1.18,
+ pandoc-types >= 1.17.3 && < 1.18,
pandoc >= 1.16 && < 2.2,
filepath, containers,
bytestring, pandoc-citeproc, process, temporary >= 1.1,
@@ -196,7 +196,7 @@ test-suite test-pandoc-citeproc
Prelude
Hs-Source-Dirs: tests, prelude, compat
build-depends: base >= 4, aeson, directory, text,
- pandoc-types >= 1.16 && < 1.18, mtl,
+ pandoc-types >= 1.17.3 && < 1.18, mtl,
pandoc >= 1.16 && < 2.2, filepath, containers,
bytestring, pandoc-citeproc, process, temporary >= 1.1,
yaml >= 0.8.8.7
diff --git a/src/Text/CSL/Input/Bibtex.hs b/src/Text/CSL/Input/Bibtex.hs
index e421af1..7744ec9 100644
--- a/src/Text/CSL/Input/Bibtex.hs
+++ b/src/Text/CSL/Input/Bibtex.hs
@@ -41,7 +41,6 @@ import Text.CSL.Style (Agent (..), CslTerm (..),
import Text.CSL.Util (onBlocks, protectCase, safeRead,
splitStrWhen, trim, unTitlecase)
import Text.Pandoc.Definition
-import Text.Pandoc.Generic (bottomUp)
import qualified Text.Pandoc.UTF8 as UTF8
import qualified Text.Pandoc.Walk as Walk
import Text.Parsec hiding (State, many, (<|>))
@@ -57,7 +56,8 @@ adjustSpans :: Lang -> Inline -> [Inline]
adjustSpans _ (Span ("",[],[]) xs) = xs
adjustSpans lang (RawInline (Format "latex") s)
| s == "\\hyphen" || s == "\\hyphen " = [Str "-"]
- | otherwise = bottomUp (concatMap (adjustSpans lang)) $ parseRawLaTeX lang s
+ | otherwise = Walk.walk (concatMap (adjustSpans lang))
+ $ parseRawLaTeX lang s
adjustSpans _ x = [x]
parseRawLaTeX :: Lang -> String -> [Inline]
@@ -85,7 +85,7 @@ parseRawLaTeX _ _ = []
inlinesToFormatted :: [Inline] -> Bib Formatted
inlinesToFormatted ils = do
lang <- gets localeLanguage
- return $ Formatted $ bottomUp (concatMap (adjustSpans lang)) ils
+ return $ Formatted $ Walk.walk (concatMap (adjustSpans lang)) ils
data Item = Item{ identifier :: String
, entryType :: String
diff --git a/src/Text/CSL/Pandoc.hs b/src/Text/CSL/Pandoc.hs
index 01ca1d7..5c1293b 100644
--- a/src/Text/CSL/Pandoc.hs
+++ b/src/Text/CSL/Pandoc.hs
@@ -60,12 +60,12 @@ processCites style refs (Pandoc m1 b1) =
moveNotes = case lookupMeta "notes-after-punctuation" m1 of
Just (MetaBool False) -> False
_ -> True
- Pandoc m3 bs = bottomUp (mvPunct moveNotes style) . deNote .
- topDown (processCite style cits_map) $ Pandoc m2 b2
+ Pandoc m3 bs = walk (mvPunct moveNotes style) . deNote .
+ walk (processCite style cits_map) $ Pandoc m2 b2
m = case metanocites of
Nothing -> m3
Just x -> setMeta "nocite" x m3
- in Pandoc m $ bottomUp (concatMap removeNocaseSpans)
+ in Pandoc m $ walk (concatMap removeNocaseSpans)
$ insertRefs m biblioList bs
-- if document contains a Div with id="refs", insert
@@ -272,34 +272,38 @@ isSpacy SoftBreak = True
isSpacy _ = False
mvPunct :: Bool -> Style -> [Inline] -> [Inline]
-mvPunct _ _ (x : Space : xs)
- | isSpacy x = x : xs
-mvPunct moveNotes _ (s : x : ys)
+mvPunct moveNotes sty (x : Space : xs)
+ | isSpacy x = x : mvPunct moveNotes sty xs
+mvPunct moveNotes sty (s : x : ys)
| isSpacy s
, isNote x
, startWithPunct ys
= if moveNotes
- then Str (headInline ys) : x : tailInline ys
- else x : ys
-mvPunct moveNotes _ (Cite cs ils : ys)
+ then Str (headInline ys) : x :
+ mvPunct moveNotes sty (tailInline ys)
+ else x : mvPunct moveNotes sty ys
+mvPunct moveNotes sty (Cite cs ils : ys)
| length ils > 1
, isNote (last ils)
, startWithPunct ys
, moveNotes
= Cite cs (init ils
++ [Str (headInline ys) | not (endWithPunct False (init ils))]
- ++ [last ils]) : tailInline ys
+ ++ [last ils]) : mvPunct moveNotes sty (tailInline ys)
mvPunct moveNotes sty (q@(Quoted _ _) : w@(Str _) : x : ys)
| isNote x
, isPunctuationInQuote sty
, moveNotes
- = mvPunctInsideQuote q w ++ (x : ys)
-mvPunct _ _ (s : x : ys) | isSpacy s, isNote x = x : ys
-mvPunct _ _ (s : x@(Cite _ (Superscript _ : _)) : ys) | isSpacy s = x : ys
-mvPunct _ _ (Cite cs ils : Str "." : ys)
+ = mvPunctInsideQuote q w ++ (x : mvPunct moveNotes sty ys)
+mvPunct moveNotes sty (s : x : ys) | isSpacy s, isNote x =
+ x : mvPunct moveNotes sty ys
+mvPunct moveNotes sty (s : x@(Cite _ (Superscript _ : _)) : ys)
+ | isSpacy s = x : mvPunct moveNotes sty ys
+mvPunct moveNotes sty (Cite cs ils : Str "." : ys)
| lastInline ils == "."
- = Cite cs ils : ys
-mvPunct _ _ xs = xs
+ = Cite cs ils : mvPunct moveNotes sty ys
+mvPunct moveNotes sty (x:xs) = x : mvPunct moveNotes sty xs
+mvPunct _ _ [] = []
endWithPunct :: Bool -> [Inline] -> Bool
endWithPunct _ [] = True
diff --git a/src/Text/CSL/Proc.hs b/src/Text/CSL/Proc.hs
index cdcaf31..e23521e 100644
--- a/src/Text/CSL/Proc.hs
+++ b/src/Text/CSL/Proc.hs
@@ -317,6 +317,7 @@ formatCitLayout s (CG co f d cs)
| otherwise = formatCits cs
where
isNote = styleClass s == "note"
+ toNote (Formatted []) = mempty
toNote (Formatted xs) = Formatted [Note [Para xs]]
combine (Formatted []) ys = ys
combine xs ys =
diff --git a/src/Text/CSL/Style.hs b/src/Text/CSL/Style.hs
index 43fc846..f7d6d78 100644
--- a/src/Text/CSL/Style.hs
+++ b/src/Text/CSL/Style.hs
@@ -116,7 +116,6 @@ import Text.CSL.Util (betterThan, headInline, initInline,
parseString, query, splitStrWhen,
tailInline, trimr, (.#:), (.#?),
AddYaml(..))
-import Text.Pandoc (bottomUp)
import qualified Text.Pandoc.Builder as B
import Text.Pandoc.Definition hiding (Citation, Cite)
import qualified Text.Pandoc.Walk as Walk
@@ -165,13 +164,13 @@ writeYAMLString :: [Inline] -> String
writeYAMLString ils =
trimr $ writeMarkdown
$ Pandoc nullMeta
- [Plain $ bottomUp (concatMap (adjustCSL False)) ils]
+ [Plain $ Walk.walk (concatMap (adjustCSL False)) ils]
writeCSLString :: [Inline] -> String
writeCSLString ils =
trimr $ writeMarkdown
$ Pandoc nullMeta
- [Plain $ bottomUp (concatMap (adjustCSL True)) ils]
+ [Plain $ Walk.walk (concatMap (adjustCSL True)) ils]
-- If the first param is True, we use special rich text conventions
-- for CSL JSON, described here:
diff --git a/stack.yaml b/stack.yaml
index 489b9d5..8e2f6bd 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -13,4 +13,6 @@ extra-deps:
- pandoc-2.1
- hslua-0.9.5
- skylighting-0.5.1
+ghc-options:
+ "$locals": -fhide-source-paths
resolver: lts-10.2
diff --git a/tests/jats.csl b/tests/jats.csl
new file mode 100644
index 0000000..6487286
--- /dev/null
+++ b/tests/jats.csl
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" default-locale="en-US">
+ <info>
+ <title>Journal Article Tag Suite</title>
+ <title-short>JATS</title-short>
+ <id>http://www.zotero.org/styles/journal-article-tag-suite</id>
+ <link href="https://github.com/MartinPaulEve/JATS-CSL/blob/master/jats.csl" rel="self"/>
+ <link rel="documentation" href="http://jats.nlm.nih.gov/archiving/tag-library/1.0/index.html"/>
+ <author>
+ <name>Martin Paul Eve</name>
+ <email>martin@martineve.com</email>
+ </author>
+ <category citation-format="numeric"/>
+ <category field="medicine"/>
+ <category field="biology"/>
+ <summary>Use this style to generate bibliographic data in Journal Article Tagging Suite (JATS) 1.0 XML format</summary>
+ <updated>2014-06-21T17:41:26+00:00</updated>
+ <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>
+ </info>
+ <locale xml:lang="en">
+ <terms>
+ <term name="et-al">{{jats}}&lt;etal/&gt;{{/jats}}</term>
+ </terms>
+ </locale>
+ <macro name="citation-number">
+ <text variable="citation-number" prefix="{{jats}}id=&quot;ref-{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}"/>
+ </macro>
+ <macro name="author">
+ <names variable="author">
+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;/given-names&gt;{{/jats}}"/>
+ </name>
+ <substitute>
+ <names variable="editor"/>
+ </substitute>
+ </names>
+ </macro>
+
+ <macro name="editor">
+ <names variable="editor" prefix="{{jats}}&lt;person-group person-group-type=&quot;editor&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/person-group&gt;{{/jats}}">
+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;/given-names&gt;{{/jats}}"/>
+ </name>
+ <substitute>
+ <names variable="editor"/>
+ </substitute>
+ </names>
+ </macro>
+
+ <macro name="editor">
+ <group delimiter=": ">
+ <names variable="editor">
+ <name prefix="{{jats}}&lt;name&gt;{{/jats}}" suffix="{{jats}}&lt;/name&gt;{{/jats}}" name-as-sort-order="all" sort-separator="">
+ <name-part name="family" text-case="capitalize-first" prefix="{{jats}}&lt;surname&gt;{{/jats}}" suffix="{{jats}}&lt;/surname&gt;{{/jats}}"/>
+ <name-part name="given" text-case="capitalize-first" prefix="{{jats}}&lt;given-names&gt;{{/jats}}" suffix="{{jats}}&lt;given-names&gt;{{/jats}}"/>
+ </name>
+ </names>
+ </group>
+ </macro>
+ <macro name="title">
+ <choose>
+ <if type="book" match="any">
+ <group prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}">
+ <text variable="title"/>
+ </group>
+ </if>
+ <else>
+ <group prefix="{{jats}}&lt;article-title&gt;{{/jats}}" suffix="{{jats}}&lt;/article-title&gt;{{/jats}}">
+ <text variable="title"/>
+ </group>
+ </else>
+ </choose>
+ </macro>
+ <macro name="container-title">
+ <text variable="container-title" form="short" prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}"/>
+ </macro>
+ <macro name="publisher">
+ <text variable="publisher" prefix="{{jats}}&lt;publisher-name&gt;{{/jats}}" suffix="{{jats}}&lt;/publisher-name&gt;{{/jats}}"/>
+ <text variable="publisher-place" prefix="{{jats}}&lt;publisher-loc&gt;{{/jats}}" suffix="{{jats}}&lt;/publisher-loc&gt;{{/jats}}"/>
+ </macro>
+ <macro name="link">
+ <choose>
+ <if match="any" variable="DOI">
+ <group prefix="{{jats}}&lt;pub-id pub-id-type=&quot;doi&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/pub-id&gt;{{/jats}}">
+ <text variable="DOI"/>
+ </group>
+ </if>
+ </choose>
+ <choose>
+ <if match="any" variable="PMID">
+ <group prefix="{{jats}}&lt;ext-link ext-link-type=&quot;pmid&quot; {{/jats}}" suffix="{{jats}}&lt;/ext-link&gt;{{/jats}}">
+ <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}}"/>
+ <text variable="PMID"/>
+ </group>
+ </if>
+ </choose>
+ <choose>
+ <if variable="URL" match="any">
+ <group prefix="{{jats}}&lt;ext-link ext-link-type=&quot;uri&quot; {{/jats}}" suffix="{{jats}}&lt;/ext-link&gt;{{/jats}}">
+ <text variable="URL" prefix="{{jats}}xlink:href=&quot;{{/jats}}" suffix="{{jats}}&quot; xlink:type=&quot;simple&quot;&gt;{{/jats}}"/>
+ <text variable="URL"/>
+ </group>
+ </if>
+ </choose>
+ </macro>
+ <macro name="date">
+ <choose>
+ <if type="article-journal article-magazine article-newspaper report patent book" match="any">
+ <group prefix="{{jats}}&lt;date&gt;{{/jats}}" suffix="{{jats}}&lt;/date&gt;{{/jats}}">
+ <date variable="issued">
+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}&lt;day&gt;{{/jats}}" suffix="{{jats}}&lt;/day&gt;{{/jats}}"/>
+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}&lt;month&gt;{{/jats}}" suffix="{{jats}}&lt;/month&gt;{{/jats}}"/>
+ <date-part name="year" prefix="{{jats}}&lt;year&gt;{{/jats}}" suffix="{{jats}}&lt;/year&gt;{{/jats}}"/>
+ </date>
+ </group>
+ </if>
+ <else>
+ <group prefix="{{jats}}&lt;date-in-citation content-type=&quot;access-date&quot;{{/jats}}" suffix="{{jats}}&lt;/date-in-citation&gt;{{/jats}}">
+ <date variable="accessed" prefix="{{jats}} iso-8601-date=&quot;{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}">
+ <date-part name="year"/>
+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>
+ <date-part name="day" form="numeric-leading-zeros" prefix="{{jats}}-{{/jats}}"/>
+ </date>
+ <date variable="accessed">
+ <date-part name="day" prefix="{{jats}}&lt;day&gt;{{/jats}}" suffix="{{jats}}&lt;/day&gt;{{/jats}}"/>
+ <date-part name="month" form="numeric-leading-zeros" prefix="{{jats}}&lt;month&gt;{{/jats}}" suffix="{{jats}}&lt;/month&gt;{{/jats}}"/>
+ <date-part name="year" prefix="{{jats}}&lt;year&gt;{{/jats}}" suffix="{{jats}}&lt;/year&gt;{{/jats}}"/>
+ </date>
+ </group>
+ </else>
+ </choose>
+ </macro>
+ <macro name="location">
+ <choose>
+ <if type="article-journal article-magazine" match="any">
+ <text variable="volume" prefix="{{jats}}&lt;volume&gt;{{/jats}}" suffix="{{jats}}&lt;/volume&gt;{{/jats}}"/>
+ <text variable="issue" prefix="{{jats}}&lt;issue&gt;{{/jats}}" suffix="{{jats}}&lt;/issue&gt;{{/jats}}"/>
+ </if>
+ </choose>
+ <choose>
+ <if type="article-journal article-magazine article-newspaper chapter" match="any">
+ <text variable="page-first" prefix="{{jats}}&lt;fpage&gt;{{/jats}}" suffix="{{jats}}&lt;/fpage&gt;{{/jats}}"/>
+ </if>
+ </choose>
+ </macro>
+ <macro name="publication-type">
+ <group prefix="{{jats}} publication-type=&quot;{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}">
+ <choose>
+ <if type="article-journal article-magazine article-newspaper" match="any">
+ <text value="journal"/>
+ </if>
+ <else-if type="book" match="any">
+ <text value="book"/>
+ </else-if>
+ <else-if type="chapter" match="any">
+ <text value="bookchapter"/>
+ </else-if>
+ <else-if type="dataset" match="any">
+ <text value="dataset"/>
+ </else-if>
+ <else-if type="patent" match="any">
+ <text value="patent"/>
+ </else-if>
+ <else-if type="report" match="any">
+ <text value="report"/>
+ </else-if>
+ <else-if type="review" match="any">
+ <text value="review"/>
+ </else-if>
+ <else>
+ <text value="standard"/>
+ </else>
+ </choose>
+ </group>
+ </macro>
+ <citation collapse="citation-number">
+ <sort>
+ <key variable="citation-number"/>
+ </sort>
+ <layout delimiter=",">
+ <group prefix="{{jats}}&lt;xref ref-type=&quot;bibr&quot; rid=&quot;{{/jats}}" suffix="{{jats}}&lt;/xref&gt;{{/jats}}">
+ <text variable="citation-number" prefix="{{jats}}ref-{{/jats}}" suffix="{{jats}}&quot;&gt;{{/jats}}"/>
+ <text variable="citation-number"/>
+ </group>
+ </layout>
+ </citation>
+ <bibliography sort-separator="">
+ <layout>
+ <group prefix="{{jats}}&lt;ref {{/jats}}" suffix="{{jats}}&lt;/ref&gt;{{/jats}}">
+ <text macro="citation-number"/>
+ <group prefix="{{jats}}&lt;element-citation{{/jats}}" suffix="{{jats}}&lt;/element-citation&gt;{{/jats}}">
+ <text macro="publication-type"/>
+ <text macro="author" prefix="{{jats}}&lt;person-group person-group-type=&quot;author&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/person-group&gt;{{/jats}}"/>
+ <text macro="title" />
+ <text macro="container-title"/>
+ <text macro="editor"/>
+ <text macro="publisher"/>
+ <text macro="date"/>
+ <text macro="location"/>
+ <text macro="link"/>
+ </group>
+ </group>
+ </layout>
+ </bibliography>
+</style>
+
diff --git a/tests/modern-language-association-7th-edition.csl b/tests/modern-language-association-7th-edition.csl
deleted file mode 100644
index c2fc292..0000000
--- a/tests/modern-language-association-7th-edition.csl
+++ /dev/null
@@ -1,460 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never">
- <info>
- <title>Modern Language Association 7th edition</title>
- <title-short>MLA</title-short>
- <id>http://www.zotero.org/styles/modern-language-association-7th-edition</id>
- <link href="http://www.zotero.org/styles/modern-language-association-7th-edition" rel="self"/>
- <link href="http://owl.english.purdue.edu/owl/section/2/11/" rel="documentation"/>
- <author>
- <name>Ilouise S. Bradford</name>
- <email>isbradford@gmail.com</email>
- </author>
- <contributor>
- <name>Sarah Ficke</name>
- <email>sficke@email.unc.edu</email>
- </contributor>
- <contributor>
- <name>Sebastian Karcher</name>
- <email>karcher@u.northwestern.edu</email>
- </contributor>
- <contributor>
- <name>Christian Werthschulte</name>
- <email>Christian.Werthschulte@rub.de</email>
- </contributor>
- <contributor>
- <name>Simon Kornblith</name>
- <email>simon@simonster.com</email>
- </contributor>
- <contributor>
- <name>James Johnston</name>
- <email>thejamesjohnston@gmail.com</email>
- </contributor>
- <category citation-format="author"/>
- <category field="generic-base"/>
- <summary>This style adheres to the MLA 7th edition handbook and contains modifications to these types of sources: e-mail, forum posts, interviews, manuscripts, maps, presentations, TV broadcasts, and web pages.</summary>
- <updated>2017-04-27T18:03:35+00:00</updated>
- <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
- </info>
- <locale xml:lang="en">
- <terms>
- <term name="month-01" form="short">Jan.</term>
- <term name="month-02" form="short">Feb.</term>
- <term name="month-03" form="short">Mar.</term>
- <term name="month-04" form="short">Apr.</term>
- <term name="month-05" form="short">May</term>
- <term name="month-06" form="short">June</term>
- <term name="month-07" form="short">July</term>
- <term name="month-08" form="short">Aug.</term>
- <term name="month-09" form="short">Sept.</term>
- <term name="month-10" form="short">Oct.</term>
- <term name="month-11" form="short">Nov.</term>
- <term name="month-12" form="short">Dec.</term>
- <term name="volume" form="short">
- <single>Vol.</single>
- <multiple>vols</multiple>
- </term>
- <term name="edition" form="short">ed</term>
- <term name="editor" form="verb-short">ed.</term>
- <term name="translator" form="verb-short">trans.</term>
- <term name="translator" form="short">trans.</term>
- </terms>
- </locale>
- <macro name="editor-translator">
- <names variable="editor translator" delimiter=". ">
- <label form="verb-short" text-case="capitalize-first" suffix=" "/>
- <name and="text" delimiter=", "/>
- </names>
- </macro>
- <macro name="author">
- <names variable="author">
- <name name-as-sort-order="first" and="text" sort-separator=", " delimiter=", " delimiter-precedes-last="always"/>
- <label form="short" prefix=", "/>
- <substitute>
- <names variable="editor"/>
- <names variable="translator"/>
- <text macro="title"/>
- </substitute>
- </names>
- </macro>
- <macro name="author-short">
- <names variable="author">
- <name form="short" and="text" delimiter=", " initialize-with=". "/>
- <substitute>
- <names variable="editor"/>
- <names variable="translator"/>
- <text macro="title-short"/>
- </substitute>
- </names>
- </macro>
- <macro name="access">
- <group delimiter=" ">
- <date variable="accessed">
- <date-part name="day" suffix=" "/>
- <date-part name="month" form="short" suffix=" "/>
- <date-part name="year"/>
- </date>
- </group>
- </macro>
- <macro name="issued-full-date">
- <choose>
- <if variable="issued">
- <date variable="issued">
- <date-part name="day" suffix=" "/>
- <date-part name="month" form="short" suffix=" " strip-periods="false"/>
- <date-part name="year"/>
- </date>
- </if>
- <else>
- <text term="no date" form="short"/>
- </else>
- </choose>
- </macro>
- <macro name="medium">
- <choose>
- <if type="motion_picture">
- <choose>
- <if variable="medium">
- <text variable="medium" prefix=" "/>
- </if>
- <else>
- <text value="Film" prefix=" "/>
- </else>
- </choose>
- </if>
- <else-if type="broadcast">
- <choose>
- <if variable="medium">
- <text variable="medium" prefix=" "/>
- </if>
- <else>
- <text value="Television" prefix=" "/>
- </else>
- </choose>
- </else-if>
- <else-if type="manuscript">
- <text value=""/>
- </else-if>
- <else-if type="personal_communication" match="any">
- <text value="" prefix=" "/>
- </else-if>
- <else-if type="speech" match="any">
- <text value=""/>
- </else-if>
- <else-if type="interview">
- <text variable="medium" prefix=" "/>
- </else-if>
- <else-if type="song">
- <choose>
- <if variable="medium">
- <text variable="medium" prefix=" "/>
- </if>
- <else>
- <text value="Audio Recording" prefix=" "/>
- </else>
- </choose>
- </else-if>
- <else-if type="graphic" variable="medium" match="all">
- <text variable="medium" prefix=" "/>
- </else-if>
- <else>
- <choose>
- <if variable="URL DOI" match="any">
- <text variable="source" prefix=" " suffix="." font-style="italic"/>
- <group>
- <text value="Web." prefix=" "/>
- </group>
- <text prefix=" " suffix="." macro="access"/>
- </if>
- <else>
- <text value="Print" prefix=" "/>
- </else>
- </choose>
- </else>
- </choose>
- </macro>
- <macro name="title">
- <choose>
- <if type="bill book graphic legal_case legislation manuscript motion_picture report song" match="any">
- <text variable="title" font-style="italic" text-case="title"/>
- </if>
- <else-if type="interview personal_communication" match="any">
- <text variable="title" text-case="title" quotes="false"/>
- </else-if>
- <else>
- <text variable="title" text-case="title" quotes="true"/>
- </else>
- </choose>
- </macro>
- <macro name="title-short">
- <choose>
- <if type="bill book graphic legal_case legislation manuscript motion_picture report song" match="any">
- <text variable="title" text-case="title" form="short" font-style="italic"/>
- </if>
- <else>
- <text variable="title" text-case="title" form="short" quotes="true"/>
- </else>
- </choose>
- </macro>
- <macro name="pages">
- <choose>
- <if variable="page">
- <text variable="page"/>
- </if>
- <else-if type="personal_communication interview" match="any">
- <text value=""/>
- </else-if>
- <else>
- <text value="n. pag"/>
- </else>
- </choose>
- </macro>
- <macro name="edition">
- <choose>
- <if is-numeric="edition">
- <group delimiter=" ">
- <number variable="edition" form="ordinal"/>
- <text term="edition" form="short"/>
- </group>
- </if>
- <else>
- <text variable="edition"/>
- </else>
- </choose>
- </macro>
- <macro name="volume">
- <choose>
- <if is-numeric="volume">
- <group delimiter=" ">
- <text term="volume" form="short" strip-periods="false"/>
- <number variable="volume"/>
- </group>
- </if>
- <else>
- <text variable="volume"/>
- </else>
- </choose>
- </macro>
- <macro name="number-of-volumes-only">
- <choose>
- <if variable="volume" match="none">
- <choose>
- <if is-numeric="number-of-volumes">
- <group delimiter=" ">
- <number variable="number-of-volumes"/>
- <text term="volume" form="short" plural="true" strip-periods="true"/>
- </group>
- </if>
- <else>
- <text variable="number-of-volumes"/>
- </else>
- </choose>
- </if>
- </choose>
- </macro>
- <macro name="number-of-volumes-optional">
- <choose>
- <if variable="volume">
- <choose>
- <if is-numeric="number-of-volumes">
- <group delimiter=" ">
- <number variable="number-of-volumes"/>
- <text term="volume" form="short" plural="true" strip-periods="true"/>
- </group>
- </if>
- <else>
- <text variable="number-of-volumes"/>
- </else>
- </choose>
- </if>
- </choose>
- </macro>
- <macro name="collection-title">
- <text variable="collection-title" text-case="title" prefix=" "/>
- </macro>
- <macro name="collection-number">
- <text variable="collection-number" prefix=" " suffix="."/>
- </macro>
- <macro name="publisher">
- <choose>
- <if variable="publisher">
- <text variable="publisher"/>
- </if>
- <else>
- <text value="N.p."/>
- </else>
- </choose>
- </macro>
- <macro name="publisher-year">
- <group delimiter=", ">
- <group delimiter=": ">
- <text variable="publisher-place"/>
- <text macro="publisher"/>
- </group>
- <date variable="issued">
- <date-part name="year"/>
- </date>
- </group>
- </macro>
- <citation et-al-min="2" et-al-use-first="1" disambiguate-add-names="true" disambiguate-add-givenname="true">
- <layout prefix="(" suffix=")" delimiter="; ">
- <group delimiter=" ">
- <choose>
- <if variable="author editor translator" match="any">
- <group delimiter=", ">
- <text macro="author-short"/>
- <choose>
- <if disambiguate="true">
- <text macro="title-short"/>
- </if>
- </choose>
- </group>
- </if>
- <else>
- <text macro="title-short"/>
- </else>
- </choose>
- <text variable="locator"/>
- </group>
- </layout>
- </citation>
- <bibliography hanging-indent="true" et-al-min="4" et-al-use-first="1" line-spacing="2" entry-spacing="0" subsequent-author-substitute="---">
- <sort>
- <key macro="author"/>
- <key variable="title"/>
- </sort>
- <layout suffix=".">
- <text macro="author" suffix="."/>
- <text macro="title" prefix=" " suffix="."/>
- <choose>
- <if type="bill book graphic legal_case legislation motion_picture report song" match="any">
- <text macro="editor-translator" prefix=" " suffix="."/>
- <text macro="edition" prefix=" " suffix="."/>
- <text macro="volume" prefix=" " suffix="."/>
- <text macro="number-of-volumes-only" prefix=" " suffix="."/>
- <text macro="publisher-year" prefix=" " suffix="."/>
- </if>
- <else-if type="chapter paper-conference" match="any">
- <group>
- <text variable="container-title" text-case="title" font-style="italic" prefix=" " suffix="."/>
- <text macro="editor-translator" prefix=" " suffix="."/>
- <text macro="edition" prefix=" " suffix="."/>
- <text macro="volume" prefix=" " suffix="."/>
- <text macro="number-of-volumes-only" prefix=" " suffix="."/>
- <text macro="publisher-year" prefix=" " suffix="."/>
- </group>
- <text variable="page" prefix=" " suffix="."/>
- </else-if>
- <else-if type="thesis">
- <text variable="genre" prefix=" " suffix="."/>
- <group delimiter=", ">
- <text macro="publisher" prefix=" "/>
- <date variable="issued" prefix=" " suffix=".">
- <date-part name="year"/>
- </date>
- </group>
- <text variable="archive_location" prefix=" " suffix="."/>
- </else-if>
- <else-if type="manuscript">
- <date variable="issued" prefix=" " suffix=".">
- <date-part name="year"/>
- </date>
- <text variable="genre" prefix=" " suffix="."/>
- <text variable="archive_location" prefix=" " suffix="."/>
- <text variable="publisher-place" prefix=" "/>
- </else-if>
- <else-if type="personal_communication">
- <date variable="issued" prefix=" " suffix=".">
- <date-part name="day" suffix=" "/>
- <date-part name="month" form="short" suffix=" "/>
- <date-part name="year"/>
- </date>
- <choose>
- <if variable="genre">
- <text prefix=" " suffix="." variable="genre"/>
- </if>
- <else>
- <text prefix=" " suffix="." value="E-mail"/>
- </else>
- </choose>
- </else-if>
- <else-if type="map">
- <text variable="genre" prefix=" " suffix="."/>
- <text variable="publisher-place" prefix=" " suffix=":"/>
- <text macro="publisher" prefix=" "/>
- <date variable="issued" prefix=" " suffix=",">
- <date-part name="year"/>
- </date>
- </else-if>
- <else-if type="speech">
- <text variable="event" prefix=" " suffix="."/>
- <text variable="publisher-place" prefix=" " suffix="."/>
- <date variable="issued" prefix=" " suffix=".">
- <date-part name="year"/>
- </date>
- <text variable="genre" prefix=" " suffix="."/>
- </else-if>
- <else-if type="webpage post-weblog" match="any">
- <text variable="genre" prefix=" " suffix="."/>
- <text variable="container-title" font-style="italic" prefix=" " suffix="."/>
- <group delimiter=", " prefix=" ">
- <text macro="publisher"/>
- <text macro="issued-full-date" suffix="."/>
- </group>
- </else-if>
- <else-if type="broadcast">
- <text variable="container-title" font-style="italic" prefix=" " suffix="."/>
- <text macro="publisher" prefix=" " suffix=","/>
- <date variable="issued" prefix=" " suffix=".">
- <date-part name="day" suffix=" "/>
- <date-part name="month" form="short" suffix=" " strip-periods="false"/>
- <date-part name="year"/>
- </date>
- </else-if>
- <else>
- <group prefix=" " suffix="." delimiter=": ">
- <group delimiter=" ">
- <text macro="editor-translator" suffix="."/>
- <text variable="container-title" font-style="italic"/>
- <choose>
- <if type="article-journal">
- <group delimiter=" ">
- <group delimiter=".">
- <text variable="volume"/>
- <text variable="issue"/>
- </group>
- <date variable="issued" prefix="(" suffix="):">
- <date-part name="year"/>
- </date>
- </group>
- <text macro="pages" prefix=" "/>
- </if>
- <else>
- <group>
- <date variable="issued">
- <date-part name="day" suffix=" "/>
- <date-part name="month" form="short" suffix=" " strip-periods="false"/>
- <date-part name="year"/>
- </date>
- <choose>
- <if variable="URL DOI" match="any">
- <text variable="page" prefix=": "/>
- </if>
- <else>
- <text macro="pages" prefix=": "/>
- </else>
- </choose>
- </group>
- </else>
- </choose>
- </group>
- </group>
- </else>
- </choose>
- <text macro="medium" suffix="."/>
- <text macro="number-of-volumes-optional" suffix="." prefix=" "/>
- <text macro="collection-title"/>
- <text macro="collection-number"/>
- </layout>
- </bibliography>
-</style>