From f6c92c7523a4070f13fbf193ef80ad7ac63f6693 Mon Sep 17 00:00:00 2001 From: Vasily Alferov <ya-ikmik2012@yandex.ru> Date: Sun, 14 Jul 2019 02:55:41 +0300 Subject: Fix #4499: add mbox and hbox handling to LaTeX reader (#5586) When `+raw_tex` is enabled, these are passed through literally. Otherwise, they are handled in a way that emulates LaTeX's behavior. --- src/Text/Pandoc/Readers/LaTeX.hs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index 0202c1fc4..73780a8b8 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -29,7 +29,7 @@ import Prelude import Control.Applicative (many, optional, (<|>)) import Control.Monad import Control.Monad.Except (throwError) -import Data.Char (isDigit, isLetter, toLower, toUpper) +import Data.Char (isDigit, isLetter, toLower, toUpper, chr) import Data.Default import Data.List (intercalate, isPrefixOf) import qualified Data.Map as M @@ -893,6 +893,8 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList , ("cref", rawInlineOr "cref" $ doref "ref") -- from cleveref.sty , ("vref", rawInlineOr "vref" $ doref "ref+page") -- from varioref.sty , ("eqref", rawInlineOr "eqref" $ doref "eqref") -- from amsmath.sty + , ("mbox", rawInlineOr "mbox" $ processHBox <$> tok) + , ("hbox", rawInlineOr "hbox" $ processHBox <$> tok) , ("lettrine", optional opt >> extractSpaces (spanWith ("",["lettrine"],[])) <$> tok) , ("(", mathInline . toksToString <$> manyTill anyTok (controlSeq ")")) , ("[", mathDisplay . toksToString <$> manyTill anyTok (controlSeq "]")) @@ -1287,6 +1289,14 @@ rawInlineOr name' fallback = do then rawInline "latex" <$> getRawCommand name' ("\\" <> name') else fallback +processHBox :: Inlines -> Inlines +processHBox = walk convert + where + convert Space = Str [chr 160] -- non-breakable space + convert SoftBreak = Str [chr 160] -- non-breakable space + convert LineBreak = Str "" + convert x = x + getRawCommand :: PandocMonad m => Text -> Text -> LP m String getRawCommand name txt = do (_, rawargs) <- withRaw $ -- cgit v1.2.3