@@ -34,14 +34,14 @@ import qualified Data.Set as Set
34import Data.Text (Text)
34import Data.Text (Text)
35import qualified Data.Text as T
35import qualified Data.Text as T
36import System.FilePath (addExtension, replaceExtension, takeExtension)
36import System.FilePath (addExtension, replaceExtension, takeExtension)
37−import Text.Pandoc.BCP47 (Lang (..), renderLang)
37+import Text.Pandoc.BCP47 (renderLang)
38−import Text.Pandoc.Builder
38+import Text.Pandoc.Builder as B
39import Text.Pandoc.Class.PandocPure (PandocPure)
39import Text.Pandoc.Class.PandocPure (PandocPure)
40import Text.Pandoc.Class.PandocMonad (PandocMonad (..), getResourcePath,
40import Text.Pandoc.Class.PandocMonad (PandocMonad (..), getResourcePath,
41− readFileFromDirs, report, setResourcePath,
41+ readFileFromDirs, report,
42− translateTerm)
42+ setResourcePath)
43import Text.Pandoc.Error (PandocError (PandocParseError, PandocParsecError))
43import Text.Pandoc.Error (PandocError (PandocParseError, PandocParsecError))
44−import Text.Pandoc.Highlighting (fromListingsLanguage, languagesByExtension)
44+import Text.Pandoc.Highlighting (languagesByExtension)
45import Text.Pandoc.ImageSize (numUnit, showFl)
45import Text.Pandoc.ImageSize (numUnit, showFl)
46import Text.Pandoc.Logging
46import Text.Pandoc.Logging
47import Text.Pandoc.Options
47import Text.Pandoc.Options
@@ -49,7 +49,6 @@ import Text.Pandoc.Parsing hiding (blankline, many, mathDisplay, mathInline,
49 optional, space, spaces, withRaw, (<|>))
49 optional, space, spaces, withRaw, (<|>))
50import Text.Pandoc.Readers.LaTeX.Types (Tok (..), TokType (..))
50import Text.Pandoc.Readers.LaTeX.Types (Tok (..), TokType (..))
51import Text.Pandoc.Readers.LaTeX.Parsing
51import Text.Pandoc.Readers.LaTeX.Parsing
52−import Text.Pandoc.Readers.LaTeX.Accent (accentCommands)
53import Text.Pandoc.Readers.LaTeX.Citation (citationCommands, cites)
52import Text.Pandoc.Readers.LaTeX.Citation (citationCommands, cites)
54import Text.Pandoc.Readers.LaTeX.Math (dollarsMath, inlineEnvironments,
53import Text.Pandoc.Readers.LaTeX.Math (dollarsMath, inlineEnvironments,
55 inlineEnvironment,
54 inlineEnvironment,
@@ -58,13 +57,18 @@ import Text.Pandoc.Readers.LaTeX.Math (dollarsMath, inlineEnvironments,
58 theoremEnvironment)
57 theoremEnvironment)
59import Text.Pandoc.Readers.LaTeX.Table (tableEnvironments)
58import Text.Pandoc.Readers.LaTeX.Table (tableEnvironments)
60import Text.Pandoc.Readers.LaTeX.Macro (macroDef)
59import Text.Pandoc.Readers.LaTeX.Macro (macroDef)
61−import Text.Pandoc.Readers.LaTeX.Lang (polyglossiaLangToBCP47,
60+import Text.Pandoc.Readers.LaTeX.Lang (inlineLanguageCommands,
62 babelLangToBCP47, setDefaultLanguage)
62 babelLangToBCP47, setDefaultLanguage)
63import Text.Pandoc.Readers.LaTeX.SIunitx (siunitxCommands)
63import Text.Pandoc.Readers.LaTeX.SIunitx (siunitxCommands)
64+import Text.Pandoc.Readers.LaTeX.Inline (acronymCommands, refCommands,
65+ nameCommands, charCommands,
67+ biblatexInlineCommands,
68+ verbCommands, rawInlineOr,
64import Text.Pandoc.Shared
70import Text.Pandoc.Shared
65−import qualified Text.Pandoc.Translations as Translations
66import Text.Pandoc.Walk
71import Text.Pandoc.Walk
67−import qualified Text.Pandoc.Builder as B
68import Safe
72import Safe
70-- for debugging:
74-- for debugging:
@@ -290,18 +294,6 @@ quoted' f starter ender = do
290lit :: Text -> LP m Inlines
294lit :: Text -> LP m Inlines
291lit = pure . str
295lit = pure . str
293−enquote :: PandocMonad m => Bool -> Maybe Text -> LP m Inlines
294−enquote starred mblang = do
296− let lang = mblang >>= babelLangToBCP47
297− let langspan = case lang of
299− Just l -> spanWith ("",[],[("lang", renderLang l)])
300− quoteContext <- sQuoteContext <$> getState
301− if starred || quoteContext == InDoubleQuote
302− then singleQuoted . langspan <$> withQuoteContext InSingleQuote tok
303− else doubleQuoted . langspan <$> withQuoteContext InDoubleQuote tok
305blockquote :: PandocMonad m => Bool -> Maybe Text -> LP m Blocks
297blockquote :: PandocMonad m => Bool -> Maybe Text -> LP m Blocks
306blockquote cvariant mblang = do
298blockquote cvariant mblang = do
307 citepar <- if cvariant
299 citepar <- if cvariant
@@ -317,76 +309,6 @@ blockquote cvariant mblang = do
317 optional $ symbolIn (".:;?!" :: [Char]) -- currently ignored
309 optional $ symbolIn (".:;?!" :: [Char]) -- currently ignored
318 return $ blockQuote . langdiv $ (bs <> citepar)
310 return $ blockQuote . langdiv $ (bs <> citepar)
320−doAcronym :: PandocMonad m => Text -> LP m Inlines
323− return . mconcat $ [spanWith ("",[],[("acronym-label", untokenize acro),
324− ("acronym-form", "singular+" <> form)])
325− $ str $ untokenize acro]
327−doAcronymPlural :: PandocMonad m => Text -> LP m Inlines
328−doAcronymPlural form = do
331− return . mconcat $ [spanWith ("",[],[("acronym-label", untokenize acro),
332− ("acronym-form", "plural+" <> form)]) $
333− mconcat [str $ untokenize acro, plural]]
335−doverb :: PandocMonad m => LP m Inlines
337− Tok _ Symbol t <- anySymbol
338− marker <- case T.uncons t of
339− Just (c, ts) | T.null ts -> return c
342− code . untokenize <$>
343− manyTill (notFollowedBy newlineTok >> verbTok marker) (symbol marker)
345−verbTok :: PandocMonad m => Char -> LP m Tok
346−verbTok stopchar = do
347− t@(Tok pos toktype txt) <- anyTok
348− case T.findIndex (== stopchar) txt of
351− let (t1, t2) = T.splitAt i txt
353− setInput $ Tok (incSourceColumn pos i) Symbol (T.singleton stopchar)
354− : totoks (incSourceColumn pos (i + 1)) (T.drop 1 t2) ++ inp
355− return $ Tok pos toktype t1
357−listingsLanguage :: [(Text, Text)] -> Maybe Text
358−listingsLanguage opts =
359− case lookup "language" opts of
361− Just l -> fromListingsLanguage l `mplus` Just l
363−dolstinline :: PandocMonad m => LP m Inlines
365− options <- option [] keyvals
366− let classes = maybeToList $ listingsLanguage options
367− doinlinecode classes
369−domintinline :: PandocMonad m => LP m Inlines
372− cls <- untokenize <$> braced
375−doinlinecode :: PandocMonad m => [Text] -> LP m Inlines
376−doinlinecode classes = do
377− Tok _ Symbol t <- anySymbol
378− marker <- case T.uncons t of
379− Just (c, ts) | T.null ts -> return c
381− let stopchar = if marker == '{' then '}' else marker
383− codeWith ("",classes,[]) . T.map nlToSpace . untokenize <$>
384− manyTill (verbTok stopchar) (symbol stopchar)
386−nlToSpace :: Char -> Char
390inlineCommand' :: PandocMonad m => LP m Inlines
312inlineCommand' :: PandocMonad m => LP m Inlines
391inlineCommand' = try $ do
313inlineCommand' = try $ do
392 Tok _ (CtrlSeq name) cmd <- anyControlSeq
314 Tok _ (CtrlSeq name) cmd <- anyControlSeq
@@ -405,9 +327,6 @@ inlineCommand' = try $ do
405tok :: PandocMonad m => LP m Inlines
327tok :: PandocMonad m => LP m Inlines
406tok = tokWith inline
328tok = tokWith inline
408−inBrackets :: Inlines -> Inlines
409−inBrackets x = str "[" <> x <> str "]"
411unescapeURL :: Text -> Text
330unescapeURL :: Text -> Text
412unescapeURL = T.concat . go . T.splitOn "\\"
331unescapeURL = T.concat . go . T.splitOn "\\"
@@ -420,234 +339,101 @@ unescapeURL = T.concat . go . T.splitOn "\\"
420 | otherwise = "\\" <> t
339 | otherwise = "\\" <> t
422inlineCommands :: PandocMonad m => M.Map Text (LP m Inlines)
341inlineCommands :: PandocMonad m => M.Map Text (LP m Inlines)
423−inlineCommands =
342+inlineCommands = M.unions
424− M.union inlineLanguageCommands $
425− M.union (accentCommands tok) $
343+ [ accentCommands tok
426− M.union (citationCommands inline) $
344+ , citationCommands inline
427− M.union (siunitxCommands tok) $
345+ , siunitxCommands tok
351+ , enquoteCommands tok
352+ , inlineLanguageCommands tok
353+ , biblatexInlineCommands tok
428− M.fromList
356+ rest = M.fromList
429− [ ("emph", extractSpaces emph <$> tok)
357+ [ ("emph", extractSpaces emph <$> tok)
430− , ("textit", extractSpaces emph <$> tok)
358+ , ("textit", extractSpaces emph <$> tok)
431− , ("textsl", extractSpaces emph <$> tok)
359+ , ("textsl", extractSpaces emph <$> tok)
432− , ("textsc", extractSpaces smallcaps <$> tok)
360+ , ("textsc", extractSpaces smallcaps <$> tok)
433− , ("textsf", extractSpaces (spanWith ("",["sans-serif"],[])) <$> tok)
361+ , ("textsf", extractSpaces (spanWith ("",["sans-serif"],[])) <$> tok)
434− , ("textmd", extractSpaces (spanWith ("",["medium"],[])) <$> tok)
362+ , ("textmd", extractSpaces (spanWith ("",["medium"],[])) <$> tok)
435− , ("textrm", extractSpaces (spanWith ("",["roman"],[])) <$> tok)
363+ , ("textrm", extractSpaces (spanWith ("",["roman"],[])) <$> tok)
436− , ("textup", extractSpaces (spanWith ("",["upright"],[])) <$> tok)
364+ , ("textup", extractSpaces (spanWith ("",["upright"],[])) <$> tok)
437− , ("texttt", ttfamily)
365+ , ("texttt", ttfamily)
438− , ("sout", extractSpaces strikeout <$> tok)
366+ , ("sout", extractSpaces strikeout <$> tok)
439− , ("alert", skipopts >> spanWith ("",["alert"],[]) <$> tok) -- beamer
367+ , ("alert", skipopts >> spanWith ("",["alert"],[]) <$> tok) -- beamer
440− , ("lq", return (str "‘"))
441− , ("rq", return (str "’"))
442− , ("textquoteleft", return (str "‘"))
443− , ("textquoteright", return (str "’"))
444− , ("textquotedblleft", return (str "“"))
445− , ("textquotedblright", return (str "”"))
446− , ("textsuperscript", extractSpaces superscript <$> tok)
368+ , ("textsuperscript", extractSpaces superscript <$> tok)
447− , ("textsubscript", extractSpaces subscript <$> tok)
369+ , ("textsubscript", extractSpaces subscript <$> tok)
448− , ("textbackslash", lit "\\")
449− , ("backslash", lit "\\")
450− , ("slash", lit "/")
451− , ("textbf", extractSpaces strong <$> tok)
370+ , ("textbf", extractSpaces strong <$> tok)
452− , ("textnormal", extractSpaces (spanWith ("",["nodecor"],[])) <$> tok)
371+ , ("textnormal", extractSpaces (spanWith ("",["nodecor"],[])) <$> tok)
453− , ("underline", underline <$> tok)
372+ , ("underline", underline <$> tok)
454− , ("ldots", lit "…")
455− , ("vdots", lit "\8942")
457− , ("mdots", lit "…")
460− , ("label", rawInlineOr "label" dolabel)
461− , ("ref", rawInlineOr "ref" $ doref "ref")
462− , ("cref", rawInlineOr "cref" $ doref "ref") -- from cleveref.sty
463− , ("vref", rawInlineOr "vref" $ doref "ref+page") -- from varioref.sty
464− , ("eqref", rawInlineOr "eqref" $ doref "eqref") -- from amsmath.sty
465− , ("mbox", rawInlineOr "mbox" $ processHBox <$> tok)
373+ , ("mbox", rawInlineOr "mbox" $ processHBox <$> tok)
466− , ("hbox", rawInlineOr "hbox" $ processHBox <$> tok)
374+ , ("hbox", rawInlineOr "hbox" $ processHBox <$> tok)
467− , ("lettrine", rawInlineOr "lettrine" lettrine)
375+ , ("lettrine", rawInlineOr "lettrine" lettrine)
468− , ("(", mathInline . untokenize <$> manyTill anyTok (controlSeq ")"))
376+ , ("(", mathInline . untokenize <$> manyTill anyTok (controlSeq ")"))
469− , ("[", mathDisplay . untokenize <$> manyTill anyTok (controlSeq "]"))
377+ , ("[", mathDisplay . untokenize <$> manyTill anyTok (controlSeq "]"))
470− , ("ensuremath", mathInline . untokenize <$> braced)
378+ , ("ensuremath", mathInline . untokenize <$> braced)
471− , ("texorpdfstring", const <$> tok <*> tok)
379+ , ("texorpdfstring", const <$> tok <*> tok)
481− , ("qed", lit "\a0\x25FB")
482− -- old TeX commands
380+ -- old TeX commands
483− , ("em", extractSpaces emph <$> inlines)
381+ , ("em", extractSpaces emph <$> inlines)
484− , ("it", extractSpaces emph <$> inlines)
382+ , ("it", extractSpaces emph <$> inlines)
485− , ("sl", extractSpaces emph <$> inlines)
383+ , ("sl", extractSpaces emph <$> inlines)
486− , ("bf", extractSpaces strong <$> inlines)
384+ , ("bf", extractSpaces strong <$> inlines)
487− , ("tt", code . stringify . toList <$> inlines)
385+ , ("tt", code . stringify . toList <$> inlines)
488− , ("rm", inlines)
386+ , ("rm", inlines)
489− , ("itshape", extractSpaces emph <$> inlines)
387+ , ("itshape", extractSpaces emph <$> inlines)
490− , ("slshape", extractSpaces emph <$> inlines)
388+ , ("slshape", extractSpaces emph <$> inlines)
491− , ("scshape", extractSpaces smallcaps <$> inlines)
389+ , ("scshape", extractSpaces smallcaps <$> inlines)
492− , ("bfseries", extractSpaces strong <$> inlines)
390+ , ("bfseries", extractSpaces strong <$> inlines)
493− , ("MakeUppercase", makeUppercase <$> tok)
391+ , ("MakeUppercase", makeUppercase <$> tok)
494− , ("MakeTextUppercase", makeUppercase <$> tok) -- textcase
392+ , ("MakeTextUppercase", makeUppercase <$> tok) -- textcase
495− , ("uppercase", makeUppercase <$> tok)
393+ , ("uppercase", makeUppercase <$> tok)
496− , ("MakeLowercase", makeLowercase <$> tok)
394+ , ("MakeLowercase", makeLowercase <$> tok)
497− , ("MakeTextLowercase", makeLowercase <$> tok)
395+ , ("MakeTextLowercase", makeLowercase <$> tok)
498− , ("lowercase", makeLowercase <$> tok)
396+ , ("lowercase", makeLowercase <$> tok)
499− , ("/", pure mempty) -- italic correction
500− , ("\\", linebreak <$ (do inTableCell <- sInTableCell <$> getState
501− guard $ not inTableCell
504− , (",", lit "\8198")
505− , ("@", pure mempty)
507− , ("ps", pure $ str "PS." <> space)
508− , ("TeX", lit "TeX")
509− , ("LaTeX", lit "LaTeX")
511− , ("textless", lit "<")
512− , ("textgreater", lit ">")
513− , ("thanks", skipopts >> note <$> grouped block)
397+ , ("thanks", skipopts >> note <$> grouped block)
514− , ("footnote", skipopts >> note <$> grouped block)
398+ , ("footnote", skipopts >> note <$> grouped block)
515− , ("passthrough", tok) -- \passthrough macro used by latex writer
399+ , ("passthrough", tok) -- \passthrough macro used by latex writer
516− -- for listings
400+ -- for listings
518− , ("lstinline", dolstinline)
519− , ("mintinline", domintinline)
521− , ("url", (\url -> link url "" (str url)) . unescapeURL . untokenize <$>
401+ , ("url", (\url -> link url "" (str url)) . unescapeURL . untokenize <$>
522− bracedUrl)
402+ bracedUrl)
523− , ("nolinkurl", code . unescapeURL . untokenize <$> bracedUrl)
403+ , ("nolinkurl", code . unescapeURL . untokenize <$> bracedUrl)
524− , ("href", do url <- bracedUrl
404+ , ("href", do url <- bracedUrl
526− link (unescapeURL $ untokenize url) "" <$> tok)
406+ link (unescapeURL $ untokenize url) "" <$> tok)
527− , ("includegraphics", do options <- option [] keyvals
407+ , ("includegraphics", do options <- option [] keyvals
528− src <- braced
408+ src <- braced
529− mkImage options . unescapeURL . removeDoubleQuotes $
409+ mkImage options . unescapeURL . removeDoubleQuotes $
530− untokenize src)
410+ untokenize src)
531− , ("enquote*", enquote True Nothing)
532− , ("enquote", enquote False Nothing)
533− -- foreignquote is supposed to use native quote marks
534− , ("foreignquote*", braced >>= enquote True . Just . untokenize)
535− , ("foreignquote", braced >>= enquote False . Just . untokenize)
536− -- hypehnquote uses regular quotes
537− , ("hyphenquote*", braced >>= enquote True . Just . untokenize)
538− , ("hyphenquote", braced >>= enquote False . Just . untokenize)
539− , ("figurename", doTerm Translations.Figure)
540− , ("prefacename", doTerm Translations.Preface)
541− , ("refname", doTerm Translations.References)
542− , ("bibname", doTerm Translations.Bibliography)
543− , ("chaptername", doTerm Translations.Chapter)
544− , ("partname", doTerm Translations.Part)
545− , ("contentsname", doTerm Translations.Contents)
546− , ("listfigurename", doTerm Translations.ListOfFigures)
547− , ("listtablename", doTerm Translations.ListOfTables)
548− , ("indexname", doTerm Translations.Index)
549− , ("abstractname", doTerm Translations.Abstract)
550− , ("tablename", doTerm Translations.Table)
551− , ("enclname", doTerm Translations.Encl)
552− , ("ccname", doTerm Translations.Cc)
553− , ("headtoname", doTerm Translations.To)
554− , ("pagename", doTerm Translations.Page)
555− , ("seename", doTerm Translations.See)
556− , ("seealsoname", doTerm Translations.SeeAlso)
557− , ("proofname", doTerm Translations.Proof)
558− , ("glossaryname", doTerm Translations.Glossary)
559− , ("lstlistingname", doTerm Translations.Listing)
560− , ("hyperlink", hyperlink)
411+ , ("hyperlink", hyperlink)
561− , ("hypertarget", hypertargetInline)
412+ , ("hypertarget", hypertargetInline)
562− -- glossaries package
563− , ("gls", doAcronym "short")
564− , ("Gls", doAcronym "short")
565− , ("glsdesc", doAcronym "long")
566− , ("Glsdesc", doAcronym "long")
567− , ("GLSdesc", doAcronym "long")
568− , ("acrlong", doAcronym "long")
569− , ("Acrlong", doAcronym "long")
570− , ("acrfull", doAcronym "full")
571− , ("Acrfull", doAcronym "full")
572− , ("acrshort", doAcronym "abbrv")
573− , ("Acrshort", doAcronym "abbrv")
574− , ("glspl", doAcronymPlural "short")
575− , ("Glspl", doAcronymPlural "short")
576− , ("glsdescplural", doAcronymPlural "long")
577− , ("Glsdescplural", doAcronymPlural "long")
578− , ("GLSdescplural", doAcronymPlural "long")
580− , ("ac", doAcronym "short")
581− , ("acf", doAcronym "full")
582− , ("acs", doAcronym "abbrv")
583− , ("acl", doAcronym "long")
584− , ("acp", doAcronymPlural "short")
585− , ("acfp", doAcronymPlural "full")
586− , ("acsp", doAcronymPlural "abbrv")
587− , ("aclp", doAcronymPlural "long")
588− , ("Ac", doAcronym "short")
589− , ("Acf", doAcronym "full")
590− , ("Acs", doAcronym "abbrv")
591− , ("Acl", doAcronym "long")
592− , ("Acp", doAcronymPlural "short")
593− , ("Acfp", doAcronymPlural "full")
594− , ("Acsp", doAcronymPlural "abbrv")
595− , ("Aclp", doAcronymPlural "long")
596− -- hyphenat
413+ -- hyphenat
597− , ("bshyp", lit "\\\173")
598− , ("fshyp", lit "/\173")
599− , ("dothyp", lit ".\173")
600− , ("colonhyp", lit ":\173")
602− , ("nohyphens", tok)
414+ , ("nohyphens", tok)
603− , ("textnhtt", ttfamily)
415+ , ("textnhtt", ttfamily)
604− , ("nhttfamily", ttfamily)
416+ , ("nhttfamily", ttfamily)
605− -- LaTeX colors
417+ -- LaTeX colors
606− , ("textcolor", coloredInline "color")
418+ , ("textcolor", coloredInline "color")
607− , ("colorbox", coloredInline "background-color")
419+ , ("colorbox", coloredInline "background-color")
609− , ("faCheck", lit "\10003")
610− , ("faClose", lit "\10007")
611− -- xspace
420+ -- xspace
612− , ("xspace", doxspace)
421+ , ("xspace", doxspace)
613− -- etoolbox
422+ -- etoolbox
614− , ("ifstrequal", ifstrequal)
423+ , ("ifstrequal", ifstrequal)
615− , ("newtoggle", braced >>= newToggle)
424+ , ("newtoggle", braced >>= newToggle)
616− , ("toggletrue", braced >>= setToggle True)
425+ , ("toggletrue", braced >>= setToggle True)
617− , ("togglefalse", braced >>= setToggle False)
426+ , ("togglefalse", braced >>= setToggle False)
618− , ("iftoggle", try $ ifToggle >> inline)
427+ , ("iftoggle", try $ ifToggle >> inline)
620− , ("RN", romanNumeralUpper)
621− , ("Rn", romanNumeralLower)
623− , ("foreignlanguage", foreignlanguage)
624− -- include
428+ -- include
625− , ("input", rawInlineOr "input" $ include "input")
429+ , ("input", rawInlineOr "input" $ include "input")
626− -- soul package
430+ -- soul package
627− , ("ul", underline <$> tok)
431+ , ("ul", underline <$> tok)
628− -- ulem package
432+ -- ulem package
629− , ("uline", underline <$> tok)
433+ , ("uline", underline <$> tok)
630− -- plain tex stuff that should just be passed through as raw tex
434+ -- plain tex stuff that should just be passed through as raw tex
631− , ("ifdim", ifdim)
435+ , ("ifdim", ifdim)
633− , ("mkbibquote", spanWith nullAttr . doubleQuoted <$> tok)
634− , ("mkbibemph", spanWith nullAttr . emph <$> tok)
635− , ("mkbibitalic", spanWith nullAttr . emph <$> tok)
636− , ("mkbibbold", spanWith nullAttr . strong <$> tok)
638− spanWith nullAttr . (\x -> str "(" <> x <> str ")") <$> tok)
640− spanWith nullAttr . (\x -> str "[" <> x <> str "]") <$> tok)
641− , ("autocap", spanWith nullAttr <$> tok)
642− , ("textnormal", spanWith ("",["nodecor"],[]) <$> tok)
644− (\x -> spanWith ("",[],[("bibstring",x)]) (str x)) . untokenize
646− , ("adddot", pure (str "."))
647− , ("adddotspace", pure (spanWith nullAttr (str "." <> space)))
648− , ("addabbrvspace", pure space)
649− , ("hyphen", pure (str "-"))
652lettrine :: PandocMonad m => LP m Inlines
438lettrine :: PandocMonad m => LP m Inlines
653lettrine = do
439lettrine = do
@@ -671,26 +457,6 @@ alterStr :: (Text -> Text) -> Inline -> Inline
671alterStr f (Str xs) = Str (f xs)
457alterStr f (Str xs) = Str (f xs)
672alterStr _ x = x
458alterStr _ x = x
674−foreignlanguage :: PandocMonad m => LP m Inlines
676− babelLang <- untokenize <$> braced
677− case babelLangToBCP47 babelLang of
678− Just lang -> spanWith ("", [], [("lang", renderLang lang)]) <$> tok
681−inlineLanguageCommands :: PandocMonad m => M.Map Text (LP m Inlines)
682−inlineLanguageCommands = M.fromList $ mk <$> M.toList polyglossiaLangToBCP47
684− mk (polyglossia, bcp47Func) =
685− ("text" <> polyglossia, inlineLanguage bcp47Func)
687−inlineLanguage :: PandocMonad m => (Text -> Lang) -> LP m Inlines
688−inlineLanguage bcp47Func = do
689− o <- option "" $ T.filter (\c -> c /= '[' && c /= ']')
691− let lang = renderLang $ bcp47Func o
692− extractSpaces (spanWith ("", [], [("lang", lang)])) <$> tok
694hyperlink :: PandocMonad m => LP m Inlines
460hyperlink :: PandocMonad m => LP m Inlines
695hyperlink = try $ do
461hyperlink = try $ do
696 src <- untokenize <$> braced
462 src <- untokenize <$> braced
@@ -711,31 +477,6 @@ hypertargetInline = try $ do
711 ils <- grouped inline
477 ils <- grouped inline
712 return $ spanWith (ref, [], []) ils
478 return $ spanWith (ref, [], []) ils
714−romanNumeralUpper :: (PandocMonad m) => LP m Inlines
716− str . toRomanNumeral <$> romanNumeralArg
718−romanNumeralLower :: (PandocMonad m) => LP m Inlines
720− str . T.toLower . toRomanNumeral <$> romanNumeralArg
722−romanNumeralArg :: (PandocMonad m) => LP m Int
723−romanNumeralArg = spaces *> (parser <|> inBraces)
733− s <- untokenize <$> many1 (satisfyTok isWordTok)
734− let (digits, rest) = T.span isDigit s
735− unless (T.null rest) $
736− Prelude.fail "Non-digits in argument to \\Rn or \\RN"
739newToggle :: (Monoid a, PandocMonad m) => [Tok] -> LP m a
480newToggle :: (Monoid a, PandocMonad m) => [Tok] -> LP m a
740newToggle name = do
481newToggle name = do
741 updateState $ \st ->
482 updateState $ \st ->
@@ -766,9 +507,6 @@ ifToggle = do
766 report $ UndefinedToggle name' pos
507 report $ UndefinedToggle name' pos
767 return ()
508 return ()
769−doTerm :: PandocMonad m => Translations.Term -> LP m Inlines
770−doTerm term = str <$> translateTerm term
772ifstrequal :: (PandocMonad m, Monoid a) => LP m a
510ifstrequal :: (PandocMonad m, Monoid a) => LP m a
773ifstrequal = do
511ifstrequal = do
774 str1 <- tok
512 str1 <- tok
@@ -789,13 +527,6 @@ coloredInline stylename = do
789ttfamily :: PandocMonad m => LP m Inlines
527ttfamily :: PandocMonad m => LP m Inlines
790ttfamily = code . stringify . toList <$> tok
528ttfamily = code . stringify . toList <$> tok
792−rawInlineOr :: PandocMonad m => Text -> LP m Inlines -> LP m Inlines
793−rawInlineOr name' fallback = do
794− parseRaw <- extensionEnabled Ext_raw_tex <$> getOption readerExtensions
796− then rawInline "latex" <$> getRawCommand name' ("\\" <> name')
799processHBox :: Inlines -> Inlines
530processHBox :: Inlines -> Inlines
800processHBox = walk convert
531processHBox = walk convert
@@ -846,25 +577,6 @@ treatAsInline = Set.fromList
846 , "pagebreak"
577 , "pagebreak"
849−dolabel :: PandocMonad m => LP m Inlines
852− let refstr = untokenize v
853− updateState $ \st ->
854− st{ sLastLabel = Just refstr }
855− return $ spanWith (refstr,[],[("label", refstr)])
856− $ inBrackets $ str $ untokenize v
858−doref :: PandocMonad m => Text -> LP m Inlines
861− let refstr = untokenize v
862− return $ linkWith ("",[],[ ("reference-type", cls)
863− , ("reference", refstr)])
866− (inBrackets $ str refstr)
868lookupListDefault :: (Ord k) => v -> [k] -> M.Map k v -> v
580lookupListDefault :: (Ord k) => v -> [k] -> M.Map k v -> v
869lookupListDefault d = (fromMaybe d .) . lookupList
581lookupListDefault d = (fromMaybe d .) . lookupList
870 where lookupList l m = msum $ map (`M.lookup` m) l
582 where lookupList l m = msum $ map (`M.lookup` m) l