git.iko.soy/typeable/pandoc
on master help sign in
ConTeXt writer: Use itemize options, not sym{}, to produce ordered

lists with custom numbering styles. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1079 788f1e2b-df1e-0410-8736-df70ead52e1b

commit780b77c14790f8053f7b2c8239bb4a5d6a22c8d7 authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateFri 16 Nov 2007, 06:20 (19 years ago) parent13d8a75
1 file changed+28−14
src/Text/Pandoc/Writers/ConTeXt.hs+28−14
src/Text/Pandoc/Writers/ConTeXt.hs+28−14
@@ -129,20 +129,34 @@ blockToConTeXt opts (RawHtml str) = return empty
129129blockToConTeXt opts (BulletList lst) = do
130130 contents <- mapM (listItemToConTeXt opts) lst
131131 return $ text "\\startltxitem" $$ vcat contents $$ text "\\stopltxitem"
132−blockToConTeXt opts (OrderedList attribs lst) = case attribs of
133− (1, DefaultStyle, DefaultDelim) -> do
134− contents <- mapM (listItemToConTeXt opts) lst
135− return $ text "\\startltxenum"$$ vcat contents $$ text "\\stopltxenum"
136− _ -> do
137− let markers = take (length lst) $ orderedListMarkers attribs
138− contents <- zipWithM (orderedListItemToConTeXt opts) markers lst
139− let markerWidth = maximum $ map length markers
140− let markerWidth' = if markerWidth < 3
141− then ""
142− else "[width=" ++
143− show ((markerWidth + 2) `div` 2) ++ "em]"
144− return $ text ("\\startitemize" ++ markerWidth') $$ vcat contents $$
145− text "\\stopitemize"
132+blockToConTeXt opts (OrderedList (start, style, delim) lst) = do
133+ contents <- mapM (listItemToConTeXt opts) lst
134+ let start' = if start == 1 then "" else "start=" ++ show start
135+ let delim' = case delim of
136+ DefaultDelim -> ""
137+ Period -> "stopper=."
138+ OneParen -> "stopper=)"
139+ TwoParens -> "left=(,stopper=)"
140+ let width = maximum $ map length $ take (length contents)
141+ (orderedListMarkers (start, style, delim))
142+ let width' = (toEnum width + 1) / 2
143+ let width'' = if width' > 1.5
144+ then "width=" ++ show width' ++ "em"
145+ else ""
146+ let specs2Items = filter (not . null) [start', delim', width'']
147+ let specs2 = if null specs2Items
148+ then ""
149+ else "[" ++ joinWithSep "," specs2Items ++ "]"
150+ let style' = case style of
151+ DefaultStyle -> if null specs2 then "" else "[]"
152+ Decimal -> "[n]"
153+ LowerRoman -> "[r]"
154+ UpperRoman -> "[R]"
155+ LowerAlpha -> "[a]"
156+ UpperAlpha -> "[A]"
157+ let specs = style' ++ specs2
158+ return $ text ("\\startitemize" ++ specs) $$ vcat contents $$
159+ text "\\stopitemize\n"
146160blockToConTeXt opts (DefinitionList lst) =
147161 mapM (defListItemToConTeXt opts) lst >>= return . (<> char '\n') . vcat
148162blockToConTeXt opts HorizontalRule = return $ text "\\thinrule\n"