git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: use Link instead of Span for `\ref`.

This makes more sense semantically and avoids unnecessary Span [Link] nestings when references are resolved.

commitdb715ca84797c8fc945392b61c1642434e8fb2b1 authorJohn MacFarlane <jgm@berkeley.edu> dateWed 16 Aug 2017, 10:46 (9 years ago) parentc6ec189
2 files changed+12−11
src/Text/Pandoc/Readers/LaTeX.hs+6−5 test/command/refs.md+6−6
src/Text/Pandoc/Readers/LaTeX.hs+6−5
@@ -111,13 +111,12 @@ parseLaTeX = do
111111 return $ Pandoc meta bs'
112112
113113resolveRefs :: M.Map String [Inline] -> Inline -> Inline
114−resolveRefs labels x@(Span (ident,classes,kvs) _) =
114+resolveRefs labels x@(Link (ident,classes,kvs) _ _) =
115115 case (lookup "reference-type" kvs,
116116 lookup "reference" kvs) of
117117 (Just "ref", Just lab) ->
118118 case M.lookup lab labels of
119− Just txt -> Span (ident,classes,kvs)
120− [Link nullAttr txt ('#':lab, "")]
119+ Just txt -> Link (ident,classes,kvs) txt ('#':lab, "")
121120 Nothing -> x
122121 _ -> x
123122resolveRefs _ x = x
@@ -1538,9 +1537,11 @@ doref :: PandocMonad m => String -> LP m Inlines
15381537doref cls = do
15391538 v <- braced
15401539 let refstr = toksToString v
1541− return $ spanWith ("",[],[ ("reference-type", cls)
1540+ return $ linkWith ("",[],[ ("reference-type", cls)
15421541 , ("reference", refstr)])
1543− $ inBrackets $ str refstr
1542+ ('#':refstr)
1543+ ""
1544+ (inBrackets $ str refstr)
15441545
15451546lookupListDefault :: (Show k, Ord k) => v -> [k] -> M.Map k v -> v
15461547lookupListDefault d = (fromMaybe d .) . lookupList
test/command/refs.md+6−6
@@ -2,21 +2,21 @@
22% pandoc -f latex -t native
33Figure \ref{fig:1}
44^D
5−[Para [Str "Figure",Space,Span ("",[],[("reference-type","ref"),("reference","fig:1")]) [Str "[fig:1]"]]]
5+[Para [Str "Figure",Space,Link ("",[],[("reference-type","ref"),("reference","fig:1")]) [Str "[fig:1]"] ("#fig:1","")]]
66```
77
88```
99% pandoc -f latex -t native
1010Figure \cref{fig:1}
1111^D
12−[Para [Str "Figure",Space,Span ("",[],[("reference-type","ref"),("reference","fig:1")]) [Str "[fig:1]"]]]
12+[Para [Str "Figure",Space,Link ("",[],[("reference-type","ref"),("reference","fig:1")]) [Str "[fig:1]"] ("#fig:1","")]]
1313```
1414
1515```
1616% pandoc -f latex -t native
1717Figure \vref{fig:1}
1818^D
19−[Para [Str "Figure",Space,Span ("",[],[("reference-type","ref+page"),("reference","fig:1")]) [Str "[fig:1]"]]]
19+[Para [Str "Figure",Space,Link ("",[],[("reference-type","ref+page"),("reference","fig:1")]) [Str "[fig:1]"] ("#fig:1","")]]
2020```
2121
2222```
@@ -28,7 +28,7 @@ Accuracy~\eqref{eq:Accuracy} is the proportion, measuring true results among all
2828 Accuracy = \frac{t_p + t_n}{t_p + f_p + f_n + t_n}
2929\end{equation}
3030^D
31−[Para [Str "Accuracy\160",Span ("",[],[("reference-type","eqref"),("reference","eq:Accuracy")]) [Str "[eq:Accuracy]"],Space,Str "is",Space,Str "the",Space,Str "proportion,",Space,Str "measuring",Space,Str "true",Space,Str "results",Space,Str "among",Space,Str "all",Space,Str "results."]
31+[Para [Str "Accuracy\160",Link ("",[],[("reference-type","eqref"),("reference","eq:Accuracy")]) [Str "[eq:Accuracy]"] ("#eq:Accuracy",""),Space,Str "is",Space,Str "the",Space,Str "proportion,",Space,Str "measuring",Space,Str "true",Space,Str "results",Space,Str "among",Space,Str "all",Space,Str "results."]
3232,Para [Math DisplayMath "\\label{eq:Accuracy}\n Accuracy = \\frac{t_p + t_n}{t_p + f_p + f_n + t_n}"]]
3333```
3434
@@ -43,12 +43,12 @@ Accuracy~\eqref{eq:Accuracy} is the proportion, measuring true results among all
4343Figure \ref{fig:Logo} illustrated the SVG logo
4444^D
4545[Para [Image ("",[],[]) [Str "Logo",Span ("",[],[("label","fig:Logo")]) []] ("command/SVG_logo.svg","fig:")]
46−,Para [Str "Figure",Space,Span ("",[],[("reference-type","ref"),("reference","fig:Logo")]) [Str "[fig:Logo]"],Space,Str "illustrated",Space,Str "the",Space,Str "SVG",Space,Str "logo"]]
46+,Para [Str "Figure",Space,Link ("",[],[("reference-type","ref"),("reference","fig:Logo")]) [Str "[fig:Logo]"] ("#fig:Logo",""),Space,Str "illustrated",Space,Str "the",Space,Str "SVG",Space,Str "logo"]]
4747```
4848
4949```
5050% pandoc -f latex -t native
5151\label{section} Section \ref{section}
5252^D
53−[Para [Span ("",[],[("label","section")]) [Str "[section]"],Space,Str "Section",Space,Span ("",[],[("reference-type","ref"),("reference","section")]) [Str "[section]"]]]
53+[Para [Span ("",[],[("label","section")]) [Str "[section]"],Space,Str "Section",Space,Link ("",[],[("reference-type","ref"),("reference","section")]) [Str "[section]"] ("#section","")]]
5454```