LaTeX reader: improved support for \hyperlink, \hypertarget.
Closes #2549.
This commit is contained in:
parent
c9be2de5c1
commit
1b3431a165
2 changed files with 61 additions and 6 deletions
|
@ -1391,11 +1391,8 @@ inlineCommands = M.fromList $
|
|||
<|> citation "citeauthor" AuthorInText False)
|
||||
, ("nocite", mempty <$ (citation "nocite" NormalCitation False >>=
|
||||
addMeta "nocite"))
|
||||
-- hyperlink: for now, we just preserve contents.
|
||||
-- we might add the actual links, but we need to avoid clashes
|
||||
-- with ids produced by label.
|
||||
, ("hypertarget", braced >> tok)
|
||||
, ("hyperlink", braced >> tok)
|
||||
, ("hyperlink", hyperlink)
|
||||
, ("hypertarget", hypertargetInline)
|
||||
-- glossaries package
|
||||
, ("gls", doAcronym "short")
|
||||
, ("Gls", doAcronym "short")
|
||||
|
@ -1450,6 +1447,26 @@ inlineCommands = M.fromList $
|
|||
, ("Rn", romanNumeralLower)
|
||||
]
|
||||
|
||||
hyperlink :: PandocMonad m => LP m Inlines
|
||||
hyperlink = try $ do
|
||||
src <- toksToString <$> braced
|
||||
lab <- tok
|
||||
return $ link ('#':src) "" lab
|
||||
|
||||
hypertargetBlock :: PandocMonad m => LP m Blocks
|
||||
hypertargetBlock = try $ do
|
||||
ref <- toksToString <$> braced
|
||||
bs <- grouped block
|
||||
case toList bs of
|
||||
[Header 1 (ident,_,_) _] | ident == ref -> return bs
|
||||
_ -> return $ divWith (ref, [], []) bs
|
||||
|
||||
hypertargetInline :: PandocMonad m => LP m Inlines
|
||||
hypertargetInline = try $ do
|
||||
ref <- toksToString <$> braced
|
||||
ils <- grouped inline
|
||||
return $ spanWith (ref, [], []) ils
|
||||
|
||||
romanNumeralUpper :: (PandocMonad m) => LP m Inlines
|
||||
romanNumeralUpper =
|
||||
str . toRomanNumeral <$> romanNumeralArg
|
||||
|
@ -1972,7 +1989,7 @@ blockCommands = M.fromList $
|
|||
, ("setdefaultlanguage", setDefaultLanguage)
|
||||
, ("setmainlanguage", setDefaultLanguage)
|
||||
-- hyperlink
|
||||
, ("hypertarget", try $ braced >> grouped block)
|
||||
, ("hypertarget", hypertargetBlock)
|
||||
-- LaTeX colors
|
||||
, ("textcolor", coloredBlock "color")
|
||||
, ("colorbox", coloredBlock "background-color")
|
||||
|
|
38
test/command/2549.md
Normal file
38
test/command/2549.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
```
|
||||
% pandoc -f latex -t native
|
||||
\hypertarget{foo}{%
|
||||
\section{A section}\label{foo}
|
||||
}
|
||||
^D
|
||||
[Header 1 ("foo",[],[]) [Str "A",Space,Str "section"]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\hypertarget{bar}{%
|
||||
\section{A section}\label{foo}
|
||||
}
|
||||
^D
|
||||
[Div ("bar",[],[])
|
||||
[Header 1 ("foo",[],[]) [Str "A",Space,Str "section"]]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
Bar \hypertarget{foo}{Foo}
|
||||
^D
|
||||
[Para [Str "Bar",Space,Span ("foo",[],[]) [Str "Foo"]]]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex -t native
|
||||
\hypertarget{foo}{%
|
||||
\begin{verbatim}
|
||||
bar
|
||||
\end{verbatim}
|
||||
}
|
||||
^D
|
||||
[Div ("foo",[],[])
|
||||
[CodeBlock ("",[],[]) "bar"]]
|
||||
```
|
||||
|
Loading…
Add table
Reference in a new issue