Improved behavior of auto_identifiers
when there are explicit ids.
Previously only autogenerated ids were added to the list of header identifiers in state, so explicit ids weren't taken into account when generating unique identifiers. Duplicated identifiers could result. This simple fix ensures that explicitly given identifiers are also taken into account. Fixes #1745. Note some limitations, however. An autogenerated identifier may still coincide with an explicit identifier that is given for a header later in the document, or with an identifier on a div, span, link, or image. Fixing this would be much more difficult, because we need to run `registerHeader` before we have the complete parse tree (so we can't get a complete list of identifiers from the document by walking the tree). However, it might be worth issuing warnings for duplicate header identifiers; I think we can do that. It is not common for headers to have the same text, and the issue can always be worked around by adding explicit identifiers, if the user is aware of it.
This commit is contained in:
parent
3765f08304
commit
c8b906256d
2 changed files with 15 additions and 1 deletions
|
@ -1130,7 +1130,8 @@ registerHeader (ident,classes,kvs) header' = do
|
|||
updateState $ updateHeaderMap $ insert' header' id'
|
||||
return (id'',classes,kvs)
|
||||
else do
|
||||
unless (null ident) $
|
||||
unless (null ident) $ do
|
||||
updateState $ updateIdentifierList $ Set.insert ident
|
||||
updateState $ updateHeaderMap $ insert' header' ident
|
||||
return (ident,classes,kvs)
|
||||
|
||||
|
|
13
test/command/1745.md
Normal file
13
test/command/1745.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
```
|
||||
% pandoc -f latex+auto_identifiers -t html
|
||||
\section{Six favourite beers}
|
||||
\subsection{Jovaru Alus}\label{jovaru-alus}
|
||||
\section{Farmhouse brewers}
|
||||
\subsection{Jovaru Alus}
|
||||
^D
|
||||
<h1 id="six-favourite-beers">Six favourite beers</h1>
|
||||
<h2 id="jovaru-alus">Jovaru Alus</h2>
|
||||
<h1 id="farmhouse-brewers">Farmhouse brewers</h1>
|
||||
<h2 id="jovaru-alus-1">Jovaru Alus</h2>
|
||||
```
|
||||
|
Loading…
Reference in a new issue