aboutsummaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Citeproc.hs16
-rw-r--r--src/Text/Pandoc/Readers/EndNote.hs1
2 files changed, 15 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs
index f10761136..43cd34571 100644
--- a/src/Text/Pandoc/Citeproc.hs
+++ b/src/Text/Pandoc/Citeproc.hs
@@ -30,7 +30,7 @@ import Text.Pandoc.Error (PandocError(..))
import Text.Pandoc.Extensions (pandocExtensions)
import Text.Pandoc.Logging (LogMessage(..))
import Text.Pandoc.Options (ReaderOptions(..))
-import Text.Pandoc.Shared (stringify, tshow)
+import Text.Pandoc.Shared (stringify, tshow, makeSections)
import Data.Containers.ListUtils (nubOrd)
import Text.Pandoc.Walk (query, walk, walkM)
import Control.Applicative ((<|>))
@@ -295,10 +295,22 @@ getCitations :: Locale
-> M.Map Text ItemId
-> Pandoc
-> [Citeproc.Citation Inlines]
-getCitations locale otherIdsMap = Foldable.toList . query getCitation
+getCitations locale otherIdsMap (Pandoc meta blocks) =
+ Foldable.toList (query getCitation meta <>
+ foldMap handleBlock (makeSections False Nothing blocks))
where
+ handleBlock :: Block -> Seq.Seq (Citeproc.Citation Inlines)
+ handleBlock b@(Div (_,cls,_) _)
+ | "section" `elem` cls
+ , "reset-citation-positions" `elem` cls =
+ case Seq.viewl (query getCitation b) of
+ x Seq.:< xs -> addResetTo x Seq.<| xs
+ Seq.EmptyL -> mempty
+ handleBlock b = query getCitation b
+ addResetTo citation = citation{ Citeproc.citationResetPosition = True }
getCitation (Cite cs _fallback) = Seq.singleton $
Citeproc.Citation { Citeproc.citationId = Nothing
+ , Citeproc.citationResetPosition = False
, Citeproc.citationPrefix = Nothing
, Citeproc.citationSuffix = Nothing
, Citeproc.citationNoteNumber =
diff --git a/src/Text/Pandoc/Readers/EndNote.hs b/src/Text/Pandoc/Readers/EndNote.hs
index f0f22338d..f595c7684 100644
--- a/src/Text/Pandoc/Readers/EndNote.hs
+++ b/src/Text/Pandoc/Readers/EndNote.hs
@@ -81,6 +81,7 @@ readEndNoteXMLCitation xml = do
let items = map toCitationItem $ filterElementsName (name "Cite") tree
return $ Citeproc.Citation{
Citeproc.citationId = Nothing
+ , Citeproc.citationResetPosition = False
, Citeproc.citationPrefix = Nothing
, Citeproc.citationSuffix = Nothing
, Citeproc.citationNoteNumber = Nothing