git.iko.soy/typeable/pandoc
on master help sign in
LaTeX reader: support `\foreignlanguage` from babel.
commit9e1d86638ce7ee9e22e0623f77ffe8609f552b15 authorJohn MacFarlane <jgm@berkeley.edu> dateTue 26 Dec 2017, 10:57 (9 years ago) parentba4b9db
2 files changed+36
src/Text/Pandoc/Readers/LaTeX.hs+30 test/command/4199.md+6
src/Text/Pandoc/Readers/LaTeX.hs+30
@@ -1489,8 +1489,17 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList $
14891489 -- biblatex misc
14901490 , ("RN", romanNumeralUpper)
14911491 , ("Rn", romanNumeralLower)
1492+ -- babel
1493+ , ("foreignlanguage", foreignlanguage)
14921494 ]
14931495
1496+foreignlanguage :: PandocMonad m => LP m Inlines
1497+foreignlanguage = do
1498+ babelLang <- T.unpack . untokenize <$> braced
1499+ case babelLangToBCP47 babelLang of
1500+ Just lang -> spanWith ("", [], [("lang", renderLang $ lang)]) <$> tok
1501+ _ -> tok
1502+
14941503inlineLanguageCommands :: PandocMonad m => M.Map Text (LP m Inlines)
14951504inlineLanguageCommands = M.fromList $ mk <$> M.toList polyglossiaLangToBCP47
14961505 where
@@ -2655,3 +2664,24 @@ polyglossiaLangToBCP47 = M.fromList
26552664 , ("urdu", \_ -> Lang "ur" "" "" [])
26562665 , ("vietnamese", \_ -> Lang "vi" "" "" [])
26572666 ]
2667+
2668+babelLangToBCP47 :: String -> Maybe Lang
2669+babelLangToBCP47 s =
2670+ case s of
2671+ "austrian" -> Just $ Lang "de" "" "AT" ["1901"]
2672+ "naustrian" -> Just $ Lang "de" "" "AT" []
2673+ "swissgerman" -> Just $ Lang "de" "" "CH" ["1901"]
2674+ "nswissgerman" -> Just $ Lang "de" "" "CH" []
2675+ "german" -> Just $ Lang "de" "" "DE" ["1901"]
2676+ "ngerman" -> Just $ Lang "de" "" "DE" []
2677+ "lowersorbian" -> Just $ Lang "dsb" "" "" []
2678+ "uppersorbian" -> Just $ Lang "hsb" "" "" []
2679+ "polutonikogreek" -> Just $ Lang "el" "" "" ["polyton"]
2680+ "slovene" -> Just $ Lang "sl" "" "" []
2681+ "australian" -> Just $ Lang "en" "" "AU" []
2682+ "canadian" -> Just $ Lang "en" "" "CA" []
2683+ "british" -> Just $ Lang "en" "" "GB" []
2684+ "newzealand" -> Just $ Lang "en" "" "NZ" []
2685+ "american" -> Just $ Lang "en" "" "US" []
2686+ "classiclatin" -> Just $ Lang "la" "" "" ["x-classic"]
2687+ _ -> fmap ($ "") $ M.lookup s polyglossiaLangToBCP47
test/command/4199.mdnew file+6
@@ -0,0 +1,6 @@
1+```
2+% pandoc -f latex -t native
3+\foreignlanguage{ngerman}{foo}
4+^D
5+[Para [Span ("",[],[("lang","de-DE")]) [Str "foo"]]]
6+```