@@ -530,10 +530,14 @@ parseCodeBlock = do
530530 mmacro KCodeBlStart
531531 toks <- many (mstr <|> mline <|> mmaybeLink <|> memplyLine <|> munknownMacro <|> mcomment)
532532 mmacro KCodeBlEnd
533− return $ codeBlock (intercalate "\n" . catMaybes $ extractText <$> toks)
533+ return $ codeBlock (removeFinalNewline $
534+ intercalate "\n" . catMaybes $
535+ extractText <$> toks)
534536
535537 where
536538
539+ removeFinalNewline [] = []
540+ removeFinalNewline xs = if last xs == '\n' then init xs else xs
537541 extractText :: ManToken -> Maybe String
538542 extractText (MStr (s, _)) = Just s
539543 extractText (MLine ss) = Just . concat $ map fst ss -- TODO maybe unwords?