git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: Better support for citation commands.
4349097John MacFarlane
src/Text/Pandoc/Readers/LaTeX.hs+11−7
@@ -423,17 +423,17 @@ inlineCommands = M.fromList $
423 pure (link url "" lab))
423 pure (link url "" lab))
424 , ("includegraphics", skipopts *> (unescapeURL <$> braced) >>=
424 , ("includegraphics", skipopts *> (unescapeURL <$> braced) >>=
425 (\src -> pure (image src "" (str "image"))))
425 (\src -> pure (image src "" (str "image"))))
426− , ("cite", citation "cite" NormalCitation False)
426+ , ("cite", citation "cite" AuthorInText False)
427 , ("citep", citation "citep" NormalCitation False)
427 , ("citep", citation "citep" NormalCitation False)
428 , ("citep*", citation "citep*" NormalCitation False)
428 , ("citep*", citation "citep*" NormalCitation False)
429 , ("citeal", citation "citeal" NormalCitation False)
429 , ("citeal", citation "citeal" NormalCitation False)
430 , ("citealp", citation "citealp" NormalCitation False)
430 , ("citealp", citation "citealp" NormalCitation False)
431 , ("citealp*", citation "citealp*" NormalCitation False)
431 , ("citealp*", citation "citealp*" NormalCitation False)
432 , ("autocite", citation "autocite" NormalCitation False)
432 , ("autocite", citation "autocite" NormalCitation False)
433− , ("footcite", citation "footcite" NormalCitation False)
433+ , ("footcite", inNote <$> citation "footcite" AuthorInText False)
434 , ("parencite", citation "parencite" NormalCitation False)
434 , ("parencite", citation "parencite" NormalCitation False)
435 , ("supercite", citation "supercite" NormalCitation False)
435 , ("supercite", citation "supercite" NormalCitation False)
436− , ("footcitetext", citation "footcitetext" NormalCitation False)
436+ , ("footcitetext", inNote <$> citation "footcitetext" AuthorInText False)
437 , ("citeyearpar", citation "citeyearpar" SuppressAuthor False)
437 , ("citeyearpar", citation "citeyearpar" SuppressAuthor False)
438 , ("citeyear", citation "citeyear" SuppressAuthor False)
438 , ("citeyear", citation "citeyear" SuppressAuthor False)
439 , ("autocite*", citation "autocite*" SuppressAuthor False)
439 , ("autocite*", citation "autocite*" SuppressAuthor False)
@@ -447,15 +447,15 @@ inlineCommands = M.fromList $
447 , ("textcites", citation "textcites" AuthorInText True)
447 , ("textcites", citation "textcites" AuthorInText True)
448 , ("cites", citation "cites" NormalCitation True)
448 , ("cites", citation "cites" NormalCitation True)
449 , ("autocites", citation "autocites" NormalCitation True)
449 , ("autocites", citation "autocites" NormalCitation True)
450− , ("footcites", citation "footcites" NormalCitation True)
450+ , ("footcites", inNote <$> citation "footcites" AuthorInText True)
451 , ("parencites", citation "parencites" NormalCitation True)
451 , ("parencites", citation "parencites" NormalCitation True)
452 , ("supercites", citation "supercites" NormalCitation True)
452 , ("supercites", citation "supercites" NormalCitation True)
453− , ("footcitetexts", citation "footcitetexts" NormalCitation True)
453+ , ("footcitetexts", inNote <$> citation "footcitetexts" AuthorInText True)
454 , ("Autocite", citation "Autocite" NormalCitation False)
454 , ("Autocite", citation "Autocite" NormalCitation False)
455 , ("Footcite", citation "Footcite" NormalCitation False)
455 , ("Footcite", citation "Footcite" NormalCitation False)
456 , ("Parencite", citation "Parencite" NormalCitation False)
456 , ("Parencite", citation "Parencite" NormalCitation False)
457 , ("Supercite", citation "Supercite" NormalCitation False)
457 , ("Supercite", citation "Supercite" NormalCitation False)
458− , ("Footcitetext", citation "Footcitetext" NormalCitation False)
458+ , ("Footcitetext", inNote <$> citation "Footcitetext" NormalCitation False)
459 , ("Citeyearpar", citation "Citeyearpar" SuppressAuthor False)
459 , ("Citeyearpar", citation "Citeyearpar" SuppressAuthor False)
460 , ("Citeyear", citation "Citeyear" SuppressAuthor False)
460 , ("Citeyear", citation "Citeyear" SuppressAuthor False)
461 , ("Autocite*", citation "Autocite*" SuppressAuthor False)
461 , ("Autocite*", citation "Autocite*" SuppressAuthor False)
@@ -468,7 +468,7 @@ inlineCommands = M.fromList $
468 , ("Footcites", citation "Footcites" NormalCitation True)
468 , ("Footcites", citation "Footcites" NormalCitation True)
469 , ("Parencites", citation "Parencites" NormalCitation True)
469 , ("Parencites", citation "Parencites" NormalCitation True)
470 , ("Supercites", citation "Supercites" NormalCitation True)
470 , ("Supercites", citation "Supercites" NormalCitation True)
471− , ("Footcitetexts", citation "Footcitetexts" NormalCitation True)
471+ , ("Footcitetexts", inNote <$> citation "Footcitetexts" NormalCitation True)
472 , ("citetext", complexNatbibCitation NormalCitation)
472 , ("citetext", complexNatbibCitation NormalCitation)
473 , ("citeauthor", (try (tok *> optional sp *> controlSeq "citetext") *>
473 , ("citeauthor", (try (tok *> optional sp *> controlSeq "citetext") *>
474 complexNatbibCitation AuthorInText)
474 complexNatbibCitation AuthorInText)
@@ -478,6 +478,10 @@ inlineCommands = M.fromList $
478 -- in which case they will appear as raw latex blocks:
478 -- in which case they will appear as raw latex blocks:
479 [ "index", "nocite" ]
479 [ "index", "nocite" ]
480
480
481+inNote :: Inlines -> Inlines
482+inNote ils =
483+ note $ para $ ils <> str "."
484+
481unescapeURL :: String -> String
485unescapeURL :: String -> String
482unescapeURL ('\\':x:xs) | isEscapable x = x:unescapeURL xs
486unescapeURL ('\\':x:xs) | isEscapable x = x:unescapeURL xs
483 where isEscapable '%' = True
487 where isEscapable '%' = True
tests/latex-reader.native+1−1
@@ -260,7 +260,7 @@ Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite"], docA
260,HorizontalRule
260,HorizontalRule
261,Header 1 [Str "LaTeX"]
261,Header 1 [Str "LaTeX"]
262,BulletList
262,BulletList
263− [[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str ",",Space,Str "22-23"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [RawInline "latex" "\\cite[22-23]{smith.1899}"]]]
263+ [[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str ",",Space,Str "22-23"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [RawInline "latex" "\\cite[22-23]{smith.1899}"]]]
264 ,[Para [RawInline "latex" "\\doublespacing"]]
264 ,[Para [RawInline "latex" "\\doublespacing"]]
265 ,[Para [Math InlineMath "2+2=4"]]
265 ,[Para [Math InlineMath "2+2=4"]]
266 ,[Para [Math InlineMath "x \\in y"]]
266 ,[Para [Math InlineMath "x \\in y"]]