@@ -129,20 +129,34 @@ blockToConTeXt opts (RawHtml str) = return empty
129blockToConTeXt opts (BulletList lst) = do
129blockToConTeXt opts (BulletList lst) = do
130 contents <- mapM (listItemToConTeXt opts) lst
130 contents <- mapM (listItemToConTeXt opts) lst
131 return $ text "\\startltxitem" $$ vcat contents $$ text "\\stopltxitem"
131 return $ text "\\startltxitem" $$ vcat contents $$ text "\\stopltxitem"
132−blockToConTeXt opts (OrderedList attribs lst) = case attribs of
132+blockToConTeXt opts (OrderedList (start, style, delim) lst) = do
133− (1, DefaultStyle, DefaultDelim) -> do
134− contents <- mapM (listItemToConTeXt opts) lst
133+ contents <- mapM (listItemToConTeXt opts) lst
135− return $ text "\\startltxenum"$$ vcat contents $$ text "\\stopltxenum"
134+ let start' = if start == 1 then "" else "start=" ++ show start
136− _ -> do
135+ let delim' = case delim of
137− let markers = take (length lst) $ orderedListMarkers attribs
136+ DefaultDelim -> ""
138− contents <- zipWithM (orderedListItemToConTeXt opts) markers lst
137+ Period -> "stopper=."
138+ OneParen -> "stopper=)"
139+ TwoParens -> "left=(,stopper=)"
139− let markerWidth = maximum $ map length markers
140+ let width = maximum $ map length $ take (length contents)
140− let markerWidth' = if markerWidth < 3
141+ (orderedListMarkers (start, style, delim))
141− then ""
142+ let width' = (toEnum width + 1) / 2
142− else "[width=" ++
143+ let width'' = if width' > 1.5
143− show ((markerWidth + 2) `div` 2) ++ "em]"
144+ then "width=" ++ show width' ++ "em"
146+ let specs2Items = filter (not . null) [start', delim', width'']
147+ let specs2 = if null specs2Items
149+ else "[" ++ joinWithSep "," specs2Items ++ "]"
150+ let style' = case style of
151+ DefaultStyle -> if null specs2 then "" else "[]"
157+ let specs = style' ++ specs2
144− return $ text ("\\startitemize" ++ markerWidth') $$ vcat contents $$
158+ return $ text ("\\startitemize" ++ specs) $$ vcat contents $$
145− text "\\stopitemize"
159+ text "\\stopitemize\n"
146blockToConTeXt opts (DefinitionList lst) =
160blockToConTeXt opts (DefinitionList lst) =
147 mapM (defListItemToConTeXt opts) lst >>= return . (<> char '\n') . vcat
161 mapM (defListItemToConTeXt opts) lst >>= return . (<> char '\n') . vcat
148blockToConTeXt opts HorizontalRule = return $ text "\\thinrule\n"
162blockToConTeXt opts HorizontalRule = return $ text "\\thinrule\n"