diff options
| author | Albert Krewinkel <albert@zeitkraut.de> | 2022-12-16 13:46:47 +0100 |
|---|---|---|
| committer | Albert Krewinkel <albert@zeitkraut.de> | 2022-12-16 13:48:57 +0100 |
| commit | da2d7ce6f5729bbd0fb34f28065882c98a5bcd1c (patch) | |
| tree | 6314969fe203222ffda3911ecd0a597d6c93c33c /src/Text | |
| parent | 1698af8885d1d8a4e4ed9cdd03274c0e7446acd0 (diff) | |
ConTeXt writer: add support for unlisted, unnumbered headings
Closes: #8486
Diffstat (limited to 'src/Text')
| -rw-r--r-- | src/Text/Pandoc/Writers/ConTeXt.hs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/Text/Pandoc/Writers/ConTeXt.hs b/src/Text/Pandoc/Writers/ConTeXt.hs index fc8ff12c9..652c4471d 100644 --- a/src/Text/Pandoc/Writers/ConTeXt.hs +++ b/src/Text/Pandoc/Writers/ConTeXt.hs @@ -664,20 +664,18 @@ sectionHeader (ident,classes,kvs) hdrLevel lst secenv = do opts <- gets stOptions contents <- inlineListToConTeXt lst levelText <- sectionLevelToText opts (ident,classes,kvs) hdrLevel secenv - let ident' = if T.null ident - then empty - else "reference=" <> braces (literal (toLabel ident)) - let contents' = if isEmpty contents - then empty - else "title=" <> braces contents - let options = if isEmpty keys || isEmpty levelText - then empty - else brackets keys - where keys = hcat $ intersperse "," $ - filter (not . isEmpty) [contents', ident'] + let optsList = mconcat . filter (not . null) $ + [ ["title=" <> braces contents | not (isEmpty contents)] + , ["reference=" <> braces (literal (toLabel ident)) | not (T.null ident)] + , ["number=no" | "unnumbered" `elem` classes] + , ["incrementnumber=no" | "unnumbered" `elem` classes] + ] let starter = case secenv of SectionHeading -> "\\start" NonSectionHeading -> "\\" + let options = if null optsList || isEmpty levelText + then empty + else brackets $ hcat (intersperse "," optsList) return $ starter <> levelText <> options <> blankline -- | Craft the section footer @@ -693,7 +691,7 @@ sectionLevelToText :: PandocMonad m -> WM m (Doc Text) sectionLevelToText opts (_,classes,_) hdrLevel headingType = do let semanticSection shift = do - let (section, chapter) = if "unnumbered" `elem` classes + let (section, chapter) = if "unlisted" `elem` classes then (literal "subject", literal "title") else (literal "section", literal "chapter") return $ case hdrLevel + shift of |
