git.iko.soy/typeable/pandoc
on master help sign in
Biblio: Add comma to beginning of bare suffix, e.g. @item1 [50].
c06ed6eJohn MacFarlane
src/Text/Pandoc/Biblio.hs+10−2
@@ -31,7 +31,7 @@ module Text.Pandoc.Biblio ( processBiblio ) where
31
31
32import Data.List
32import Data.List
33import Data.Unique
33import Data.Unique
34−import Data.Char ( isDigit )
34+import Data.Char ( isDigit, isPunctuation )
35import qualified Data.Map as M
35import qualified Data.Map as M
36import Text.CSL hiding ( Cite(..), Citation(..) )
36import Text.CSL hiding ( Cite(..), Citation(..) )
37import qualified Text.CSL as CSL ( Cite(..) )
37import qualified Text.CSL as CSL ( Cite(..) )
@@ -124,13 +124,21 @@ toCslCite :: Citation -> CSL.Cite
124toCslCite c
124toCslCite c
125 = let (l, s) = locatorWords $ citationSuffix c
125 = let (l, s) = locatorWords $ citationSuffix c
126 (la,lo) = parseLocator l
126 (la,lo) = parseLocator l
127+ s' = case (l,s,citationMode c) of
128+ -- treat a bare locator as if it begins with comma
129+ -- so @item1 [blah] is like [@item1, blah]
130+ ("",(x:_),AuthorInText) | not (isPunct x)
131+ -> [Str ",",Space] ++ s
132+ _ -> s
133+ isPunct (Str (c:_)) = isPunctuation c
134+ isPunct _ = False
127 citMode = case citationMode c of
135 citMode = case citationMode c of
128 AuthorInText -> (True, False)
136 AuthorInText -> (True, False)
129 SuppressAuthor -> (False,True )
137 SuppressAuthor -> (False,True )
130 NormalCitation -> (False,False)
138 NormalCitation -> (False,False)
131 in emptyCite { CSL.citeId = citationId c
139 in emptyCite { CSL.citeId = citationId c
132 , CSL.citePrefix = PandocText $ citationPrefix c
140 , CSL.citePrefix = PandocText $ citationPrefix c
133− , CSL.citeSuffix = PandocText $ s
141+ , CSL.citeSuffix = PandocText s'
134 , CSL.citeLabel = la
142 , CSL.citeLabel = la
135 , CSL.citeLocator = lo
143 , CSL.citeLocator = lo
136 , CSL.citeNoteNumber = show $ citationNoteNum c
144 , CSL.citeNoteNumber = show $ citationNoteNum c