git.iko.soy/typeable/pandoc
on master help sign in
LaTeX writer: create hypertarget for links with identifier.
be9e93dJohn MacFarlane
src/Text/Pandoc/Writers/LaTeX.hs+27−23
@@ -1282,29 +1282,33 @@ inlineToLaTeX SoftBreak = do
1282 WrapNone -> return space
1282 WrapNone -> return space
1283 WrapPreserve -> return cr
1283 WrapPreserve -> return cr
1284inlineToLaTeX Space = return space
1284inlineToLaTeX Space = return space
1285−inlineToLaTeX (Link _ txt (src,_))
1285+inlineToLaTeX (Link (id',_,_) txt (src,_)) =
1286− | Just ('#', ident) <- T.uncons src
1286+ (case T.uncons src of
1287− = do
1287+ Just ('#', ident) -> do
1288− contents <- inlineListToLaTeX txt
1288+ contents <- inlineListToLaTeX txt
1289− lab <- toLabel ident
1289+ lab <- toLabel ident
1290− return $ text "\\protect\\hyperlink" <> braces (literal lab) <> braces contents
1290+ return $ text "\\protect\\hyperlink" <> braces (literal lab) <> braces contents
1291− | otherwise =
1292− case txt of
1291+ _ -> case txt of
1293− [Str x] | unEscapeString (T.unpack x) == unEscapeString (T.unpack src) -> -- autolink
1292+ [Str x] | unEscapeString (T.unpack x) == unEscapeString (T.unpack src) -> -- autolink
1294− do modify $ \s -> s{ stUrl = True }
1293+ do modify $ \s -> s{ stUrl = True }
1295− src' <- stringToLaTeX URLString (escapeURI src)
1294+ src' <- stringToLaTeX URLString (escapeURI src)
1296− return $ literal $ "\\url{" <> src' <> "}"
1295+ return $ literal $ "\\url{" <> src' <> "}"
1297− [Str x] | Just rest <- T.stripPrefix "mailto:" src,
1296+ [Str x] | Just rest <- T.stripPrefix "mailto:" src,
1298− unEscapeString (T.unpack x) == unEscapeString (T.unpack rest) -> -- email autolink
1297+ unEscapeString (T.unpack x) == unEscapeString (T.unpack rest) -> -- email autolink
1299− do modify $ \s -> s{ stUrl = True }
1298+ do modify $ \s -> s{ stUrl = True }
1300− src' <- stringToLaTeX URLString (escapeURI src)
1299+ src' <- stringToLaTeX URLString (escapeURI src)
1301− contents <- inlineListToLaTeX txt
1300+ contents <- inlineListToLaTeX txt
1302− return $ "\\href" <> braces (literal src') <>
1301+ return $ "\\href" <> braces (literal src') <>
1303− braces ("\\nolinkurl" <> braces contents)
1302+ braces ("\\nolinkurl" <> braces contents)
1304− _ -> do contents <- inlineListToLaTeX txt
1303+ _ -> do contents <- inlineListToLaTeX txt
1305− src' <- stringToLaTeX URLString (escapeURI src)
1304+ src' <- stringToLaTeX URLString (escapeURI src)
1306− return $ literal ("\\href{" <> src' <> "}{") <>
1305+ return $ literal ("\\href{" <> src' <> "}{") <>
1307− contents <> char '}'
1306+ contents <> char '}')
1307+ >>= (if T.null id'
1308+ then return
1309+ else \x -> do
1310+ linkAnchor <- hypertarget False id' x
1311+ return ("\\protect" <> linkAnchor))
1308inlineToLaTeX il@(Image _ _ (src, _))
1312inlineToLaTeX il@(Image _ _ (src, _))
1309 | Just _ <- T.stripPrefix "data:" src = do
1313 | Just _ <- T.stripPrefix "data:" src = do
1310 report $ InlineNotRendered il
1314 report $ InlineNotRendered il
test/command/6360.mdnew file+6
@@ -0,0 +1,6 @@
1+```
2+% pandoc -f native -t latex --wrap=none
3+[Link ("test2",[],[]) [Str "link",Space,Str "to",Space,Str "text",Space,Str "test1"] ("#test1","")]
4+^D
5+\protect\hypertarget{test2}{\protect\hyperlink{test1}{link to text test1}}
6+```