@@ -36,6 +36,7 @@ import qualified Data.Map as M
3636import Text.CSL hiding ( Cite(..), Citation(..) )
3737import qualified Text.CSL as CSL ( Cite(..) )
3838import Text.Pandoc.Definition
39+import Text.Pandoc.Generic
3940import Text.Pandoc.Shared (stringify)
4041import Text.ParserCombinators.Parsec
4142import Control.Monad
@@ -47,7 +48,7 @@ processBiblio cslfile r p
4748 = if null r then return p
4849 else do
4950 csl <- readCSLFile cslfile
50− p' <- processWithM setHash p
51+ p' <- bottomUpM setHash p
5152 let (nts,grps) = if styleClass csl == "note"
5253 then let cits = queryWith getCite p'
5354 ncits = map (queryWith getCite) $ queryWith getNote p'
@@ -58,7 +59,7 @@ processBiblio cslfile r p
5859 map (map toCslCite) grps)
5960 cits_map = M.fromList $ zip grps (citations result)
6061 biblioList = map (renderPandoc' csl) (bibliography result)
61− Pandoc m b = processWith (procInlines $ processCite csl cits_map) p'
62+ Pandoc m b = bottomUp (procInlines $ processCite csl cits_map) p'
6263 return . generateNotes nts . Pandoc m $ b ++ biblioList
6364
6465-- | Substitute 'Cite' elements with formatted citations.
@@ -99,7 +100,7 @@ getCite i | Cite _ _ <- i = [i]
99100getNoteCitations :: [Inline] -> Pandoc -> [[Citation]]
100101getNoteCitations needNote
101102 = let mvCite i = if i `elem` needNote then Note [Para [i]] else i
102− setNote = processWith mvCite
103+ setNote = bottomUp mvCite
103104 getCits = concat . flip (zipWith $ setCiteNoteNum) [1..] .
104105 map (queryWith getCite) . queryWith getNote . setNote
105106 in queryWith getCitation . getCits
@@ -109,7 +110,7 @@ setHash (Citation i p s cm nn _)
109110 = hashUnique `fmap` newUnique >>= return . Citation i p s cm nn
110111
111112generateNotes :: [Inline] -> Pandoc -> Pandoc
112−generateNotes needNote = processWith (mvCiteInNote needNote)
113+generateNotes needNote = bottomUp (mvCiteInNote needNote)
113114
114115procInlines :: ([Inline] -> [Inline]) -> Block -> Block
115116procInlines f b
@@ -147,7 +148,7 @@ mvCiteInNote is = procInlines mvCite
147148 , endWithPunct o = Cite c (initInline o) : checkPt xs
148149 | x:xs <- i = x : checkPt xs
149150 | otherwise = []
150− checkNt = processWith $ procInlines checkPt
151+ checkNt = bottomUp $ procInlines checkPt
151152
152153setCiteNoteNum :: [Inline] -> Int -> [Inline]
153154setCiteNoteNum ((Cite cs o):xs) n = Cite (setCitationNoteNum n cs) o : setCiteNoteNum xs n