@@ -561,32 +561,25 @@ parseList = do
561561
562562 where
563563
564− macroIPInl :: [RoffStr] -> Inlines
565− macroIPInl (x:_:[]) = strToInlines x <> B.space
566− macroIPInl _ = mempty
567−
568− listKind :: [RoffStr] -> Maybe ListBuilder
569− listKind (((c:_), _):_:[]) =
570− let params style = orderedListWith (1, style, DefaultDelim)
571− in case c of
572− _ | isDigit c -> Just $ params Decimal
573− _ | isUpper c -> Just $ params UpperAlpha
574− _ | isLower c -> Just $ params LowerAlpha
575− _ -> Nothing
576−
577− listKind _ = Nothing
564+ listKind :: [RoffStr] -> ListBuilder
565+ listKind ((cs, _):_:[]) =
566+ let cs' = if not ('.' `elem` cs || ')' `elem` cs) then cs ++ "." else cs
567+ in case Parsec.runParser anyOrderedListMarker defaultParserState
568+ "list marker" cs' of
569+ Right (start, listtype, listdelim)
570+ | cs == cs' -> orderedListWith (start, listtype, listdelim)
571+ | otherwise -> orderedListWith (start, listtype, DefaultDelim)
572+ Left _ -> bulletList
573+ listKind _ = bulletList
578574
579575 paras :: PandocMonad m => ManParser m (ListBuilder, Blocks)
580576 paras = do
581577 (MMacro _ args) <- mmacro KTab
582− let lbuilderOpt = listKind args
583− lbuilder = fromMaybe bulletList lbuilderOpt
584− macroinl = macroIPInl args
578+ let lbuilder = listKind args
585579 inls <- parseInlines
586− let parainls = if isNothing lbuilderOpt then macroinl <> inls else inls
587580 subls <- mconcat <$> many sublist
588− return $ (lbuilder, plain parainls <> subls)
589−
581+ return $ (lbuilder, plain inls <> subls)
582+
590583 sublist :: PandocMonad m => ManParser m Blocks
591584 sublist = do
592585 mmacro KSubTab