diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2018-05-07 17:44:05 -0700 | 
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2018-05-07 17:44:05 -0700 | 
| commit | 0d83ce3bc4c68efa9d19f065a056d27d9b8ec56d (patch) | |
| tree | 4f0f914adc058ff3d9590d2abadd8b6f646c5f3e | |
| parent | 58799234227200b480b21a8f6611bdf3b6e2528a (diff) | |
| download | pandoc-0d83ce3bc4c68efa9d19f065a056d27d9b8ec56d.tar.gz | |
HTML writer: Strip links from headers when creating TOC.
Otherwise the TOC entries will not link to the sections.
Closes #4340.
| -rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 16 | 
1 files changed, 12 insertions, 4 deletions
| diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 762bbd0e5..646168c72 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -354,7 +354,8 @@ defList :: PandocMonad m  defList opts items = toList H.dl opts (items ++ [nl opts])  -- | Construct table of contents from list of elements. -tableOfContents :: PandocMonad m => WriterOptions -> [Element] -> StateT WriterState m (Maybe Html) +tableOfContents :: PandocMonad m => WriterOptions -> [Element] +                -> StateT WriterState m (Maybe Html)  tableOfContents _ [] = return Nothing  tableOfContents opts sects = do    contents  <- mapM (elementToListItem opts) sects @@ -369,7 +370,8 @@ showSecNum = intercalate "." . map show  -- | Converts an Element to a list item for a table of contents,  -- retrieving the appropriate identifier from state. -elementToListItem :: PandocMonad m => WriterOptions -> Element -> StateT WriterState m (Maybe Html) +elementToListItem :: PandocMonad m => WriterOptions -> Element +                  -> StateT WriterState m (Maybe Html)  -- Don't include the empty headers created in slide shows  -- shows when an hrule is used to separate slides without a new title:  elementToListItem _ (Sec _ _ _ [Str "\0"] _) = return Nothing @@ -381,7 +383,8 @@ elementToListItem opts (Sec lev num (id',classes,_) headerText subsecs)                     then (H.span ! A.class_ "toc-section-number"                          $ toHtml $ showSecNum num') >> preEscapedString " "                     else mempty -  txt <- liftM (sectnum >>) $ inlineListToHtml opts $ walk deNote headerText +  txt <- liftM (sectnum >>) $ +         inlineListToHtml opts $ walk (deLink . deNote) headerText    subHeads <- mapM (elementToListItem opts) subsecs >>= return . catMaybes    subList <- if null subHeads                  then return mempty @@ -397,8 +400,13 @@ elementToListItem opts (Sec lev num (id',classes,_) headerText subsecs)                         $ toHtml txt) >> subList  elementToListItem _ _ = return Nothing +deLink :: Inline -> Inline +deLink (Link _ ils _) = Span nullAttr ils +deLink x              = x +  -- | Convert an Element to Html. -elementToHtml :: PandocMonad m => Int -> WriterOptions -> Element -> StateT WriterState m Html +elementToHtml :: PandocMonad m => Int -> WriterOptions -> Element +              -> StateT WriterState m Html  elementToHtml _slideLevel opts (Blk block) = blockToHtml opts block  elementToHtml slideLevel opts (Sec level num (id',classes,keyvals) title' elements) = do    slideVariant <- gets stSlideVariant | 
