@@ -105,7 +105,8 @@ singleTok :: ManToken -> ManTokens
105singleTok t = ManTokens (Seq.singleton t)
105singleTok t = ManTokens (Seq.singleton t)
107data RoffState = RoffState { customMacros :: M.Map String ManTokens
107data RoffState = RoffState { customMacros :: M.Map String ManTokens
108− , lastFont :: FontSpec
108+ , prevFont :: FontSpec
109+ , currentFont :: FontSpec
109 } deriving Show
110 } deriving Show
111instance Default RoffState where
112instance Default RoffState where
@@ -117,7 +118,8 @@ instance Default RoffState where
117 , ("lq", "\x201C")
118 , ("lq", "\x201C")
118 , ("rq", "\x201D")
119 , ("rq", "\x201D")
119 , ("R", "\x00AE") ]
120 , ("R", "\x00AE") ]
121+ , prevFont = defaultFontSpec
120− , lastFont = defaultFontSpec
122+ , currentFont = defaultFontSpec
123type ManLexer m = ParserT [Char] RoffState m
125type ManLexer m = ParserT [Char] RoffState m
@@ -261,7 +263,8 @@ escFont = do
261 , ($ defaultFontSpec) <$> letterFontKind
263 , ($ defaultFontSpec) <$> letterFontKind
262 , lettersFont
264 , lettersFont
264− modifyState $ \st -> st{ lastFont = font }
266+ modifyState $ \st -> st{ prevFont = currentFont st
267+ , currentFont = font }
265 return [Font font]
268 return [Font font]
267lettersFont :: PandocMonad m => ManLexer m FontSpec
270lettersFont :: PandocMonad m => ManLexer m FontSpec
@@ -271,7 +274,7 @@ lettersFont = try $ do
271 skipMany letter
274 skipMany letter
273 if null fs
276 if null fs
274− then lastFont <$> getState
277+ then prevFont <$> getState
275 else return $ foldr ($) defaultFontSpec fs
278 else return $ foldr ($) defaultFontSpec fs
277letterFontKind :: PandocMonad m => ManLexer m (FontSpec -> FontSpec)
280letterFontKind :: PandocMonad m => ManLexer m (FontSpec -> FontSpec)