git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: Better support for citation commands.

* Make `\cite` etc. an AuthorInText. * Make `\footcite` etc. into citations in notes.

commit434909799033af7141201860292e684e83f5f8d8 authorJohn MacFarlane <fiddlosopher@gmail.com> dateWed 10 Oct 2012, 19:41 (14 years ago) parent31435ad
2 files changed+12−8
src/Text/Pandoc/Readers/LaTeX.hs+11−7 tests/latex-reader.native+1−1
src/Text/Pandoc/Readers/LaTeX.hs+11−7
@@ -423,17 +423,17 @@ inlineCommands = M.fromList $
423423 pure (link url "" lab))
424424 , ("includegraphics", skipopts *> (unescapeURL <$> braced) >>=
425425 (\src -> pure (image src "" (str "image"))))
426− , ("cite", citation "cite" NormalCitation False)
426+ , ("cite", citation "cite" AuthorInText False)
427427 , ("citep", citation "citep" NormalCitation False)
428428 , ("citep*", citation "citep*" NormalCitation False)
429429 , ("citeal", citation "citeal" NormalCitation False)
430430 , ("citealp", citation "citealp" NormalCitation False)
431431 , ("citealp*", citation "citealp*" NormalCitation False)
432432 , ("autocite", citation "autocite" NormalCitation False)
433− , ("footcite", citation "footcite" NormalCitation False)
433+ , ("footcite", inNote <$> citation "footcite" AuthorInText False)
434434 , ("parencite", citation "parencite" NormalCitation False)
435435 , ("supercite", citation "supercite" NormalCitation False)
436− , ("footcitetext", citation "footcitetext" NormalCitation False)
436+ , ("footcitetext", inNote <$> citation "footcitetext" AuthorInText False)
437437 , ("citeyearpar", citation "citeyearpar" SuppressAuthor False)
438438 , ("citeyear", citation "citeyear" SuppressAuthor False)
439439 , ("autocite*", citation "autocite*" SuppressAuthor False)
@@ -447,15 +447,15 @@ inlineCommands = M.fromList $
447447 , ("textcites", citation "textcites" AuthorInText True)
448448 , ("cites", citation "cites" NormalCitation True)
449449 , ("autocites", citation "autocites" NormalCitation True)
450− , ("footcites", citation "footcites" NormalCitation True)
450+ , ("footcites", inNote <$> citation "footcites" AuthorInText True)
451451 , ("parencites", citation "parencites" NormalCitation True)
452452 , ("supercites", citation "supercites" NormalCitation True)
453− , ("footcitetexts", citation "footcitetexts" NormalCitation True)
453+ , ("footcitetexts", inNote <$> citation "footcitetexts" AuthorInText True)
454454 , ("Autocite", citation "Autocite" NormalCitation False)
455455 , ("Footcite", citation "Footcite" NormalCitation False)
456456 , ("Parencite", citation "Parencite" NormalCitation False)
457457 , ("Supercite", citation "Supercite" NormalCitation False)
458− , ("Footcitetext", citation "Footcitetext" NormalCitation False)
458+ , ("Footcitetext", inNote <$> citation "Footcitetext" NormalCitation False)
459459 , ("Citeyearpar", citation "Citeyearpar" SuppressAuthor False)
460460 , ("Citeyear", citation "Citeyear" SuppressAuthor False)
461461 , ("Autocite*", citation "Autocite*" SuppressAuthor False)
@@ -468,7 +468,7 @@ inlineCommands = M.fromList $
468468 , ("Footcites", citation "Footcites" NormalCitation True)
469469 , ("Parencites", citation "Parencites" NormalCitation True)
470470 , ("Supercites", citation "Supercites" NormalCitation True)
471− , ("Footcitetexts", citation "Footcitetexts" NormalCitation True)
471+ , ("Footcitetexts", inNote <$> citation "Footcitetexts" NormalCitation True)
472472 , ("citetext", complexNatbibCitation NormalCitation)
473473 , ("citeauthor", (try (tok *> optional sp *> controlSeq "citetext") *>
474474 complexNatbibCitation AuthorInText)
@@ -478,6 +478,10 @@ inlineCommands = M.fromList $
478478 -- in which case they will appear as raw latex blocks:
479479 [ "index", "nocite" ]
480480
481+inNote :: Inlines -> Inlines
482+inNote ils =
483+ note $ para $ ils <> str "."
484+
481485unescapeURL :: String -> String
482486unescapeURL ('\\':x:xs) | isEscapable x = x:unescapeURL xs
483487 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
260260,HorizontalRule
261261,Header 1 [Str "LaTeX"]
262262,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}"]]]
264264 ,[Para [RawInline "latex" "\\doublespacing"]]
265265 ,[Para [Math InlineMath "2+2=4"]]
266266 ,[Para [Math InlineMath "x \\in y"]]