mirror of
https://github.com/jgm/pandoc.git
synced 2026-08-29 01:41:20 +08:00
Shared: Improve makeSections.
Previously it would sometimes create doubled section divs. By leaving the inner heading's id on the heading itself, and then consolidating the inner and outer section divs, we can avoid this undesirable result. Closes #11745.
This commit is contained in:
@@ -569,16 +569,25 @@ makeSectionsWithOffsets numoffsets numbering mbBaseLevel bs =
|
||||
| all (\case
|
||||
Header level' _ _ -> level' > level
|
||||
_ -> True) ys
|
||||
, "column" `notElem` dclasses
|
||||
, "columns" `notElem` dclasses
|
||||
, "fragment" `notElem` dclasses = do
|
||||
, "section" `elem` dclasses
|
||||
|| ("column" `notElem` dclasses &&
|
||||
"columns" `notElem` dclasses &&
|
||||
"fragment" `notElem` dclasses &&
|
||||
"cell" `notElem` dclasses) = do
|
||||
inner <- go (Header level hattr title':ys)
|
||||
rest <- go xs
|
||||
return $
|
||||
case inner of
|
||||
[Div divattr'@(dident',_,_) zs]
|
||||
| T.null dident || T.null dident' || dident == dident'
|
||||
-> Div (combineAttr divattr' divattr) zs : rest
|
||||
[Div divattr'@(dident',_,_) zs@(Header level' hattr' title'' : zs')]
|
||||
| dident == dident'
|
||||
-> Div (combineAttr divattr' divattr) zs : rest
|
||||
| (_,dclasses',dkvs) <- combineAttr divattr' divattr
|
||||
, ("",hclasses,hkvs) <- hattr'
|
||||
-> if T.null dident
|
||||
then Div (dident',dclasses',dkvs) zs : rest
|
||||
else Div (dident,dclasses',dkvs)
|
||||
(Header level' (dident',hclasses,hkvs) title''
|
||||
: zs') : rest
|
||||
_ -> Div divattr inner : rest
|
||||
go (Div attr xs : rest) = do
|
||||
xs' <- go xs
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
```
|
||||
% pandoc --section-divs
|
||||
# Book Title
|
||||
|
||||
::: {#ch1 .section}
|
||||
## Chapter 1
|
||||
Hello world.
|
||||
:::
|
||||
|
||||
::: {#ch2 .section}
|
||||
## Chapter 2
|
||||
Goodbye world.
|
||||
:::
|
||||
^D
|
||||
<section id="book-title" class="level1">
|
||||
<h1>Book Title</h1>
|
||||
<section id="ch1" class="level2">
|
||||
<h2 id="chapter-1">Chapter 1</h2>
|
||||
<p>Hello world.</p>
|
||||
</section>
|
||||
<section id="ch2" class="level2">
|
||||
<h2 id="chapter-2">Chapter 2</h2>
|
||||
<p>Goodbye world.</p>
|
||||
</section>
|
||||
</section>
|
||||
```
|
||||
Reference in New Issue
Block a user