git.iko.soy/typeable/pandoc
on master help sign in
ConTeXt writer: now sensitive to 'unnumbered' class in headers.
83521c1John MacFarlane
src/Text/Pandoc/Writers/ConTeXt.hs+10−7
@@ -121,8 +121,8 @@ stringToConTeXt opts = concatMap (escapeCharForConTeXt opts)
121-- | Convert Elements to ConTeXt
121-- | Convert Elements to ConTeXt
122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
123elementToConTeXt _ (Blk block) = blockToConTeXt block
123elementToConTeXt _ (Blk block) = blockToConTeXt block
124−elementToConTeXt opts (Sec level _ (id',_,_) title' elements) = do
124+elementToConTeXt opts (Sec level _ attr title' elements) = do
125− header' <- sectionHeader id' level title'
125+ header' <- sectionHeader attr level title'
126 innerContents <- mapM (elementToConTeXt opts) elements
126 innerContents <- mapM (elementToConTeXt opts) elements
127 return $ vcat (header' : innerContents)
127 return $ vcat (header' : innerContents)
128
128
@@ -191,7 +191,7 @@ blockToConTeXt (DefinitionList lst) =
191 liftM vcat $ mapM defListItemToConTeXt lst
191 liftM vcat $ mapM defListItemToConTeXt lst
192blockToConTeXt HorizontalRule = return $ "\\thinrule" <> blankline
192blockToConTeXt HorizontalRule = return $ "\\thinrule" <> blankline
193-- If this is ever executed, provide a default for the reference identifier.
193-- If this is ever executed, provide a default for the reference identifier.
194−blockToConTeXt (Header level (ident,_,_) lst) = sectionHeader ident level lst
194+blockToConTeXt (Header level attr lst) = sectionHeader attr level lst
195blockToConTeXt (Table caption aligns widths heads rows) = do
195blockToConTeXt (Table caption aligns widths heads rows) = do
196 let colDescriptor colWidth alignment = (case alignment of
196 let colDescriptor colWidth alignment = (case alignment of
197 AlignLeft -> 'l'
197 AlignLeft -> 'l'
@@ -334,23 +334,26 @@ inlineToConTeXt (Note contents) = do
334 text "\\stopbuffer\\footnote{\\getbuffer}"
334 text "\\stopbuffer\\footnote{\\getbuffer}"
335
335
336-- | Craft the section header, inserting the secton reference, if supplied.
336-- | Craft the section header, inserting the secton reference, if supplied.
337−sectionHeader :: [Char]
337+sectionHeader :: Attr
338 -> Int
338 -> Int
339 -> [Inline]
339 -> [Inline]
340 -> State WriterState Doc
340 -> State WriterState Doc
341−sectionHeader ident hdrLevel lst = do
341+sectionHeader (ident,classes,_) hdrLevel lst = do
342 contents <- inlineListToConTeXt lst
342 contents <- inlineListToConTeXt lst
343 st <- get
343 st <- get
344 let opts = stOptions st
344 let opts = stOptions st
345 let level' = if writerChapters opts then hdrLevel - 1 else hdrLevel
345 let level' = if writerChapters opts then hdrLevel - 1 else hdrLevel
346+ let (section, chapter) = if "unnumbered" `elem` classes
347+ then (text "subject", text "title")
348+ else (text "section", text "chapter")
346 return $ if level' >= 1 && level' <= 5
349 return $ if level' >= 1 && level' <= 5
347 then char '\\'
350 then char '\\'
348 <> text (concat (replicate (level' - 1) "sub"))
351 <> text (concat (replicate (level' - 1) "sub"))
349− <> text "section"
352+ <> section
350 <> (if (not . null) ident then brackets (text ident) else empty)
353 <> (if (not . null) ident then brackets (text ident) else empty)
351 <> braces contents
354 <> braces contents
352 <> blankline
355 <> blankline
353 else if level' == 0
356 else if level' == 0
354− then "\\chapter{" <> contents <> "}"
357+ then char '\\' <> chapter <> braces contents
355 else contents <> blankline
358 else contents <> blankline
356
359