@@ -38,7 +38,7 @@ import Text.Pandoc.Shared
3838import Text.Pandoc.URI (isURI )
3939import Text.Pandoc.Templates (renderTemplate )
4040import Text.Pandoc.Walk (query )
41- import Text.Pandoc.Writers.Shared
41+ import Text.Pandoc.Writers.Shared ( unwrapWrapperDiv , defField , getField , resetField , lookupMetaString , metaToContext , getLang )
4242import Text.Printf (printf )
4343
4444import qualified Data.List.NonEmpty as NonEmpty
@@ -187,37 +187,40 @@ toLabel z = T.concatMap go z
187187
188188-- | Convert Pandoc block element to ConTeXt.
189189blockToConTeXt :: PandocMonad m => Block -> WM m (Doc Text )
190- blockToConTeXt (Div attr@ (_," section" : _,_)
190+ blockToConTeXt block = blockToConTeXt' (unwrapWrapperDiv block)
191+
192+ blockToConTeXt' :: PandocMonad m => Block -> WM m (Doc Text )
193+ blockToConTeXt' (Div attr@ (_," section" : _,_)
191194 (Header level _ title' : xs)) = do
192195 header' <- sectionHeader attr level title' SectionHeading
193196 footer' <- sectionFooter attr level
194197 innerContents <- blockListToConTeXt xs
195198 return $ header' $$ innerContents $$ footer'
196- blockToConTeXt (Plain lst) = do
199+ blockToConTeXt' (Plain lst) = do
197200 opts <- gets stOptions
198201 contents <- inlineListToConTeXt lst
199202 return $
200203 if isEnabled Ext_tagging opts
201204 then " \\ bpar{}" <> contents <> " \\ epar{}"
202205 else contents
203- blockToConTeXt (Para lst) = do
206+ blockToConTeXt' (Para lst) = do
204207 opts <- gets stOptions
205208 contents <- inlineListToConTeXt lst
206209 return $
207210 if isEnabled Ext_tagging opts
208211 then " \\ bpar" $$ contents $$ " \\ epar" <> blankline
209212 else contents <> blankline
210- blockToConTeXt (LineBlock lns) = do
213+ blockToConTeXt' (LineBlock lns) = do
211214 let emptyToBlankline doc = if isEmpty doc
212215 then blankline
213216 else doc
214217 doclines <- mapM inlineListToConTeXt lns
215218 let contextLines = vcat . map emptyToBlankline $ doclines
216219 return $ " \\ startlines" $$ contextLines $$ " \\ stoplines" <> blankline
217- blockToConTeXt (BlockQuote lst) = do
220+ blockToConTeXt' (BlockQuote lst) = do
218221 contents <- blockListToConTeXt lst
219222 return $ " \\ startblockquote" $$ nest 0 contents $$ " \\ stopblockquote" <> blankline
220- blockToConTeXt (CodeBlock (_ident, classes, kv) str) = do
223+ blockToConTeXt' (CodeBlock (_ident, classes, kv) str) = do
221224 opts <- gets stOptions
222225 let syntaxMap = writerSyntaxMap opts
223226 let attr' = (" " , classes, kv)
@@ -236,15 +239,15 @@ blockToConTeXt (CodeBlock (_ident, classes, kv) str) = do
236239 if null classes || isNothing (writerHighlightStyle opts)
237240 then pure unhighlighted
238241 else highlighted
239- blockToConTeXt b@ (RawBlock f str)
242+ blockToConTeXt' b@ (RawBlock f str)
240243 | f == Format " context" || f == Format " tex" = return $ literal str <> blankline
241244 | otherwise = empty <$ report (BlockNotRendered b)
242- blockToConTeXt (Div (" refs" ,classes,_) bs) = do
245+ blockToConTeXt' (Div (" refs" ,classes,_) bs) = do
243246 modify $ \ st -> st{ stHasCslRefs = True
244247 , stCslHangingIndent = " hanging-indent" `elem` classes }
245248 inner <- blockListToConTeXt bs
246249 return $ " \\ startcslreferences" $$ inner $$ " \\ stopcslreferences"
247- blockToConTeXt (Div (ident,_,kvs) bs) = do
250+ blockToConTeXt' (Div (ident,_,kvs) bs) = do
248251 let align dir txt = " \\ startalignment[" <> dir <> " ]" $$ txt $$ " \\ stopalignment"
249252 mblang <- fromBCP47 (lookup " lang" kvs)
250253 let wrapRef txt = if T. null ident
@@ -261,13 +264,13 @@ blockToConTeXt (Div (ident,_,kvs) bs) = do
261264 Nothing -> txt
262265 wrapBlank txt = blankline <> txt <> blankline
263266 wrapBlank . wrapLang . wrapDir . wrapRef <$> blockListToConTeXt bs
264- blockToConTeXt (BulletList lst) = do
267+ blockToConTeXt' (BulletList lst) = do
265268 contents <- mapM listItemToConTeXt lst
266269 return $ (" \\ startitemize" <> if isTightList lst
267270 then brackets " packed"
268271 else empty) $$
269272 vcat contents $$ literal " \\ stopitemize" <> blankline
270- blockToConTeXt (OrderedList (start, style', delim) lst) = do
273+ blockToConTeXt' (OrderedList (start, style', delim) lst) = do
271274 st <- get
272275 let level = stOrderedListLevel st
273276 put st {stOrderedListLevel = level + 1 }
@@ -295,15 +298,15 @@ blockToConTeXt (OrderedList (start, style', delim) lst) = do
295298 let specs = T. pack style'' <> specs2
296299 return $ " \\ startenumerate" <> literal specs $$ vcat contents $$
297300 " \\ stopenumerate" <> blankline
298- blockToConTeXt (DefinitionList lst) =
301+ blockToConTeXt' (DefinitionList lst) =
299302 liftM vcat $ mapM defListItemToConTeXt lst
300- blockToConTeXt HorizontalRule = return $ " \\ thinrule" <> blankline
303+ blockToConTeXt' HorizontalRule = return $ " \\ thinrule" <> blankline
301304-- If this is ever executed, provide a default for the reference identifier.
302- blockToConTeXt (Header level attr lst) =
305+ blockToConTeXt' (Header level attr lst) =
303306 sectionHeader attr level lst NonSectionHeading
304- blockToConTeXt (Table attr caption colspecs thead tbody tfoot) =
307+ blockToConTeXt' (Table attr caption colspecs thead tbody tfoot) =
305308 tableToConTeXt (Ann. toTable attr caption colspecs thead tbody tfoot)
306- blockToConTeXt (Figure (ident, _, _) (Caption cshort clong) body) = do
309+ blockToConTeXt' (Figure (ident, _, _) (Caption cshort clong) body) = do
307310 title <- inlineListToConTeXt (blocksToInlines clong)
308311 list <- maybe (pure empty) inlineListToConTeXt cshort
309312 content <- blockListToConTeXt body
0 commit comments