diff options
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 50 | ||||
-rw-r--r-- | test/command/6360.md | 6 |
2 files changed, 33 insertions, 23 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 021ef2645..0c73918d3 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -1282,29 +1282,33 @@ inlineToLaTeX SoftBreak = do WrapNone -> return space WrapPreserve -> return cr inlineToLaTeX Space = return space -inlineToLaTeX (Link _ txt (src,_)) - | Just ('#', ident) <- T.uncons src - = do - contents <- inlineListToLaTeX txt - lab <- toLabel ident - return $ text "\\protect\\hyperlink" <> braces (literal lab) <> braces contents - | otherwise = - case txt of - [Str x] | unEscapeString (T.unpack x) == unEscapeString (T.unpack src) -> -- autolink - do modify $ \s -> s{ stUrl = True } - src' <- stringToLaTeX URLString (escapeURI src) - return $ literal $ "\\url{" <> src' <> "}" - [Str x] | Just rest <- T.stripPrefix "mailto:" src, - unEscapeString (T.unpack x) == unEscapeString (T.unpack rest) -> -- email autolink - do modify $ \s -> s{ stUrl = True } - src' <- stringToLaTeX URLString (escapeURI src) - contents <- inlineListToLaTeX txt - return $ "\\href" <> braces (literal src') <> - braces ("\\nolinkurl" <> braces contents) - _ -> do contents <- inlineListToLaTeX txt - src' <- stringToLaTeX URLString (escapeURI src) - return $ literal ("\\href{" <> src' <> "}{") <> - contents <> char '}' +inlineToLaTeX (Link (id',_,_) txt (src,_)) = + (case T.uncons src of + Just ('#', ident) -> do + contents <- inlineListToLaTeX txt + lab <- toLabel ident + return $ text "\\protect\\hyperlink" <> braces (literal lab) <> braces contents + _ -> case txt of + [Str x] | unEscapeString (T.unpack x) == unEscapeString (T.unpack src) -> -- autolink + do modify $ \s -> s{ stUrl = True } + src' <- stringToLaTeX URLString (escapeURI src) + return $ literal $ "\\url{" <> src' <> "}" + [Str x] | Just rest <- T.stripPrefix "mailto:" src, + unEscapeString (T.unpack x) == unEscapeString (T.unpack rest) -> -- email autolink + do modify $ \s -> s{ stUrl = True } + src' <- stringToLaTeX URLString (escapeURI src) + contents <- inlineListToLaTeX txt + return $ "\\href" <> braces (literal src') <> + braces ("\\nolinkurl" <> braces contents) + _ -> do contents <- inlineListToLaTeX txt + src' <- stringToLaTeX URLString (escapeURI src) + return $ literal ("\\href{" <> src' <> "}{") <> + contents <> char '}') + >>= (if T.null id' + then return + else \x -> do + linkAnchor <- hypertarget False id' x + return ("\\protect" <> linkAnchor)) inlineToLaTeX il@(Image _ _ (src, _)) | Just _ <- T.stripPrefix "data:" src = do report $ InlineNotRendered il diff --git a/test/command/6360.md b/test/command/6360.md new file mode 100644 index 000000000..3988710bf --- /dev/null +++ b/test/command/6360.md @@ -0,0 +1,6 @@ +``` +% pandoc -f native -t latex --wrap=none +[Link ("test2",[],[]) [Str "link",Space,Str "to",Space,Str "text",Space,Str "test1"] ("#test1","")] +^D +\protect\hypertarget{test2}{\protect\hyperlink{test1}{link to text test1}} +``` |