Add param to tocToList for numberSections.

Otherwise sections are always numbered in the TOC,
even if `--number-sections` is not used.
This commit is contained in:
John MacFarlane
2023-01-18 11:15:57 -08:00
parent 27d2dc6821
commit 8a1f4ad513
4 changed files with 14 additions and 11 deletions
@@ -29,7 +29,8 @@ import Text.Pandoc.Lua.Marshal.AST ( peekBlocksFuzzy, peekPandoc
, pushBlock, pushBlocks )
import Text.Pandoc.Lua.Marshal.Chunks
import Text.Pandoc.Lua.Marshal.WriterOptions ( peekWriterOptions )
import Text.Pandoc.Options (WriterOptions (writerTOCDepth))
import Text.Pandoc.Options (WriterOptions (writerTOCDepth,
writerNumberSections))
import Text.Pandoc.Slides (getSlideLevel, prepSlides)
import Text.Pandoc.Writers.Shared (toTableOfContents)
import qualified Data.Text as T
@@ -168,7 +169,8 @@ table_of_contents = defun "table_of_contents"
let writerOpts = fromMaybe def mwriterOpts
in case tocSource of
Left blks -> toTableOfContents writerOpts blks
Right tree -> tocToList (writerTOCDepth writerOpts) tree
Right tree -> tocToList (writerNumberSections writerOpts)
(writerTOCDepth writerOpts) tree
)
<#> parameter peekTocSource "Blocks|Pandoc|ChunkedDoc" "toc_source"
"list of command line arguments"
+8 -7
View File
@@ -374,13 +374,14 @@ fixTOCTreePaths chunks = go ""
(map (go fp') subtrees)
-- | Creates a TOC link to the respective document section.
tocEntryToLink :: SecInfo -> [Inline]
tocEntryToLink secinfo = headerLink
tocEntryToLink :: Bool -> SecInfo -> [Inline]
tocEntryToLink includeNumbers secinfo = headerLink
where
addNumber = case secNumber secinfo of
Just num -> (Span ("",["toc-section-number"],[])
Just num | includeNumbers
-> (Span ("",["toc-section-number"],[])
[Str num] :) . (Space :)
Nothing -> id
_ -> id
clean (Link _ xs _) = xs
clean (Note _) = []
clean x = [x]
@@ -398,13 +399,13 @@ tocEntryToLink secinfo = headerLink
headerText (anchor, "")]
-- | Generate a table of contents of the given depth.
tocToList :: Int -> Tree SecInfo -> Block
tocToList tocDepth (Node _ subtrees) = BulletList (toItems subtrees)
tocToList :: Bool -> Int -> Tree SecInfo -> Block
tocToList includeNumbers tocDepth (Node _ subtrees) = BulletList (toItems subtrees)
where
toItems = map go . filter isBelowTocDepth
isBelowTocDepth (Node sec _) = secLevel sec <= tocDepth
go (Node secinfo xs) =
Plain (tocEntryToLink secinfo) :
Plain (tocEntryToLink includeNumbers secinfo) :
case toItems xs of
[] -> []
ys -> [BulletList ys]
+1 -1
View File
@@ -110,7 +110,7 @@ addMedia il@(Image _ _ (src,_))
addMedia il = return il
buildTOC :: WriterOptions -> Tree SecInfo -> Block
buildTOC opts = tocToList (writerTOCDepth opts)
buildTOC opts = tocToList (writerNumberSections opts) (writerTOCDepth opts)
chunkToEntry :: PandocMonad m
=> WriterOptions -> Meta -> Chunk -> Chunk -> m Entry
+1 -1
View File
@@ -465,7 +465,7 @@ toTableOfContents :: WriterOptions
-> [Block]
-> Block
toTableOfContents opts =
tocToList (writerTOCDepth opts)
tocToList (writerNumberSections opts) (writerTOCDepth opts)
. toTOCTree
. makeSections (writerNumberSections opts) Nothing