git.iko.soy/typeable/pandoc
on master help sign in
Implemented tight lists in context, latex writers.
commit1a9193c30d0443c6246484f182ad685e569797a4 authorJohn MacFarlane <fiddlosopher@gmail.com> dateMon 7 Jan 2013, 20:12 (14 years ago) parent7909982
2 files changed+27−13
src/Text/Pandoc/Writers/ConTeXt.hs+15−11 src/Text/Pandoc/Writers/LaTeX.hs+12−2
src/Text/Pandoc/Writers/ConTeXt.hs+15−11
@@ -46,8 +46,8 @@ data WriterState =
4646 , stOptions :: WriterOptions -- writer options
4747 }
4848
49−orderedListStyles :: [[Char]]
50−orderedListStyles = cycle ["[n]","[a]", "[r]", "[g]"]
49+orderedListStyles :: [Char]
50+orderedListStyles = cycle "narg"
5151
5252-- | Convert Pandoc to ConTeXt.
5353writeConTeXt :: WriterOptions -> Pandoc -> String
@@ -148,7 +148,10 @@ blockToConTeXt (RawBlock "context" str) = return $ text str <> blankline
148148blockToConTeXt (RawBlock _ _ ) = return empty
149149blockToConTeXt (BulletList lst) = do
150150 contents <- mapM listItemToConTeXt lst
151− return $ "\\startitemize" $$ vcat contents $$ text "\\stopitemize" <> blankline
151+ return $ ("\\startitemize" <> if isTightList lst
152+ then brackets "packed"
153+ else empty) $$
154+ vcat contents $$ text "\\stopitemize" <> blankline
152155blockToConTeXt (OrderedList (start, style', delim) lst) = do
153156 st <- get
154157 let level = stOrderedListLevel st
@@ -171,14 +174,15 @@ blockToConTeXt (OrderedList (start, style', delim) lst) = do
171174 let specs2 = if null specs2Items
172175 then ""
173176 else "[" ++ intercalate "," specs2Items ++ "]"
174− let style'' = case style' of
175− DefaultStyle -> orderedListStyles !! level
176− Decimal -> "[n]"
177− Example -> "[n]"
178− LowerRoman -> "[r]"
179− UpperRoman -> "[R]"
180− LowerAlpha -> "[a]"
181− UpperAlpha -> "[A]"
177+ let style'' = '[': (case style' of
178+ DefaultStyle -> orderedListStyles !! level
179+ Decimal -> 'n'
180+ Example -> 'n'
181+ LowerRoman -> 'r'
182+ UpperRoman -> 'R'
183+ LowerAlpha -> 'a'
184+ UpperAlpha -> 'A') :
185+ if isTightList lst then ",packed]" else "]"
182186 let specs = style'' ++ specs2
183187 return $ "\\startitemize" <> text specs $$ vcat contents $$
184188 "\\stopitemize" <> blankline
src/Text/Pandoc/Writers/LaTeX.hs+12−2
@@ -351,7 +351,10 @@ blockToLaTeX (BulletList lst) = do
351351 incremental <- gets stIncremental
352352 let inc = if incremental then "[<+->]" else ""
353353 items <- mapM listItemToLaTeX lst
354− return $ text ("\\begin{itemize}" ++ inc) $$ vcat items $$
354+ let spacing = if isTightList lst
355+ then text "\\itemsep1pt\\parskip0pt\\parsep0pt"
356+ else empty
357+ return $ text ("\\begin{itemize}" ++ inc) $$ spacing $$ vcat items $$
355358 "\\end{itemize}"
356359blockToLaTeX (OrderedList (start, numstyle, numdelim) lst) = do
357360 st <- get
@@ -381,16 +384,23 @@ blockToLaTeX (OrderedList (start, numstyle, numdelim) lst) = do
381384 then empty
382385 else "\\setcounter" <> braces enum <>
383386 braces (text $ show $ start - 1)
387+ let spacing = if isTightList lst
388+ then text "\\itemsep1pt\\parskip0pt\\parsep0pt"
389+ else empty
384390 return $ text ("\\begin{enumerate}" ++ inc)
385391 $$ stylecommand
386392 $$ resetcounter
393+ $$ spacing
387394 $$ vcat items
388395 $$ "\\end{enumerate}"
389396blockToLaTeX (DefinitionList lst) = do
390397 incremental <- gets stIncremental
391398 let inc = if incremental then "[<+->]" else ""
392399 items <- mapM defListItemToLaTeX lst
393− return $ text ("\\begin{description}" ++ inc) $$ vcat items $$
400+ let spacing = if and $ map isTightList (map snd lst)
401+ then text "\\itemsep1pt\\parskip0pt\\parsep0pt"
402+ else empty
403+ return $ text ("\\begin{description}" ++ inc) $$ spacing $$ vcat items $$
394404 "\\end{description}"
395405blockToLaTeX HorizontalRule = return $
396406 "\\begin{center}\\rule{3in}{0.4pt}\\end{center}"