@@ -416,8 +416,12 @@ lexLine :: PandocMonad m => ManLexer m ManTokens
416lexLine = do
416lexLine = do
417 lnparts <- mconcat <$> many1 linePart
417 lnparts <- mconcat <$> many1 linePart
420+ where -- return empty line if we only have empty strings;
421+ -- this can happen if the line just contains \f[C], for example.
422+ go [] = return mempty
423+ go (RoffStr ("",_):xs) = go xs
419− return $ singleTok $ MLine lnparts
424+ go xs = return $ singleTok $ MLine xs
422linePart :: PandocMonad m => ManLexer m [LinePart]
426linePart :: PandocMonad m => ManLexer m [LinePart]
423linePart = macroArg <|> esc <|> escStar <|>
427linePart = macroArg <|> esc <|> escStar <|>
@@ -647,15 +651,11 @@ parseCodeBlock = try $ do
647 mmacro "nf"
651 mmacro "nf"
648 toks <- many (mline <|> memptyLine)
652 toks <- many (mline <|> memptyLine)
649 mmacro "fi"
653 mmacro "fi"
650− return $ codeBlock (removeFinalNewline $
651− intercalate "\n" . catMaybes $
654+ return $ codeBlock (intercalate "\n" . catMaybes $
652 extractText <$> toks)
655 extractText <$> toks)
656− removeFinalNewline [] = []
657− removeFinalNewline xs = if last xs == '\n' then init xs else xs
659 extractText :: ManToken -> Maybe String
659 extractText :: ManToken -> Maybe String
660 extractText (MLine ss) = Just $ linePartsToString ss
660 extractText (MLine ss) = Just $ linePartsToString ss
661 extractText MEmptyLine = Just ""
661 extractText MEmptyLine = Just ""