summaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2022-12-16 13:46:47 +0100
committerAlbert Krewinkel <albert@zeitkraut.de>2022-12-16 13:48:57 +0100
commitda2d7ce6f5729bbd0fb34f28065882c98a5bcd1c (patch)
tree6314969fe203222ffda3911ecd0a597d6c93c33c /src/Text
parent1698af8885d1d8a4e4ed9cdd03274c0e7446acd0 (diff)
ConTeXt writer: add support for unlisted, unnumbered headings
Closes: #8486
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Writers/ConTeXt.hs22
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