git.iko.soy/typeable/pandoc
on master help sign in
ConTeXt writer: now sensitive to 'unnumbered' class in headers.

In this case \title, \subject are used instead of \chapter, \section.

commit83521c18e91ca7e27dc6edd7d4e612e8782d598c authorJohn MacFarlane <fiddlosopher@gmail.com> dateMon 18 Feb 2013, 10:55 (14 years ago) parentf9e6433
1 file changed+10−7
src/Text/Pandoc/Writers/ConTeXt.hs+10−7
src/Text/Pandoc/Writers/ConTeXt.hs+10−7
@@ -121,8 +121,8 @@ stringToConTeXt opts = concatMap (escapeCharForConTeXt opts)
121121-- | Convert Elements to ConTeXt
122122elementToConTeXt :: WriterOptions -> Element -> State WriterState Doc
123123elementToConTeXt _ (Blk block) = blockToConTeXt block
124−elementToConTeXt opts (Sec level _ (id',_,_) title' elements) = do
125− header' <- sectionHeader id' level title'
124+elementToConTeXt opts (Sec level _ attr title' elements) = do
125+ header' <- sectionHeader attr level title'
126126 innerContents <- mapM (elementToConTeXt opts) elements
127127 return $ vcat (header' : innerContents)
128128
@@ -191,7 +191,7 @@ blockToConTeXt (DefinitionList lst) =
191191 liftM vcat $ mapM defListItemToConTeXt lst
192192blockToConTeXt HorizontalRule = return $ "\\thinrule" <> blankline
193193-- 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
195195blockToConTeXt (Table caption aligns widths heads rows) = do
196196 let colDescriptor colWidth alignment = (case alignment of
197197 AlignLeft -> 'l'
@@ -334,23 +334,26 @@ inlineToConTeXt (Note contents) = do
334334 text "\\stopbuffer\\footnote{\\getbuffer}"
335335
336336-- | Craft the section header, inserting the secton reference, if supplied.
337−sectionHeader :: [Char]
337+sectionHeader :: Attr
338338 -> Int
339339 -> [Inline]
340340 -> State WriterState Doc
341−sectionHeader ident hdrLevel lst = do
341+sectionHeader (ident,classes,_) hdrLevel lst = do
342342 contents <- inlineListToConTeXt lst
343343 st <- get
344344 let opts = stOptions st
345345 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")
346349 return $ if level' >= 1 && level' <= 5
347350 then char '\\'
348351 <> text (concat (replicate (level' - 1) "sub"))
349− <> text "section"
352+ <> section
350353 <> (if (not . null) ident then brackets (text ident) else empty)
351354 <> braces contents
352355 <> blankline
353356 else if level' == 0
354− then "\\chapter{" <> contents <> "}"
357+ then char '\\' <> chapter <> braces contents
355358 else contents <> blankline
356359