git.iko.soy/typeable/pandoc
on master help sign in
LaTeX writer: Only require listings package if needed.

That is, if literate Haskell code is used. git-svn-id: https://pandoc.googlecode.com/svn/trunk@1759 788f1e2b-df1e-0410-8736-df70ead52e1b

commitbdd448ea2cf41324a63bd09771b5ac553e65f540 authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateThu 31 Dec 2009, 21:18 (17 years ago) parent07fe1ae
4 files changed+9−6
src/Text/Pandoc/Writers/LaTeX.hs+7−2 templates/latex.template+2 tests/lhs-test.latex−2 tests/writer.latex−2
src/Text/Pandoc/Writers/LaTeX.hs+7−2
@@ -49,6 +49,7 @@ data WriterState =
4949 , stLink :: Bool -- true if document has links
5050 , stUrl :: Bool -- true if document has visible URL link
5151 , stGraphics :: Bool -- true if document contains images
52+ , stLHS :: Bool -- true if document has literate haskell code
5253 }
5354
5455-- | Convert Pandoc to LaTeX.
@@ -58,7 +59,8 @@ writeLaTeX options document =
5859 WriterState { stInNote = False, stOLLevel = 1, stOptions = options,
5960 stVerbInNote = False, stEnumerate = False,
6061 stTable = False, stStrikeout = False, stSubscript = False,
61− stLink = False, stUrl = False, stGraphics = False }
62+ stLink = False, stUrl = False, stGraphics = False,
63+ stLHS = False }
6264
6365pandocToLaTeX :: WriterOptions -> Pandoc -> State WriterState String
6466pandocToLaTeX options (Pandoc (Meta title authors date) blocks) = do
@@ -88,6 +90,7 @@ pandocToLaTeX options (Pandoc (Meta title authors date) blocks) = do
8890 [ ("subscript", "yes") | stSubscript st ] ++
8991 [ ("links", "yes") | stLink st ] ++
9092 [ ("url", "yes") | stUrl st ] ++
93+ [ ("lhs", "yes") | stLHS st ] ++
9194 [ ("graphics", "yes") | stGraphics st ]
9295 return $ if writerStandalone options
9396 then renderTemplate context $ writerTemplate options
@@ -139,7 +142,9 @@ blockToLaTeX (CodeBlock (_,classes,_) str) = do
139142 st <- get
140143 env <- if writerLiterateHaskell (stOptions st) && "haskell" `elem` classes &&
141144 "literate" `elem` classes
142− then return "code"
145+ then do
146+ modify $ \s -> s{ stLHS = True }
147+ return "code"
143148 else if stInNote st
144149 then do
145150 modify $ \s -> s{ stVerbInNote = True }
templates/latex.template+2
@@ -9,8 +9,10 @@ $else$
99\usepackage[mathletters]{ucs}
1010\usepackage[utf8x]{inputenc}
1111$endif$
12+$if(lhs)$
1213\usepackage{listings}
1314\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
15+$endif$
1416\setlength{\parindent}{0pt}
1517\setlength{\parskip}{6pt plus 2pt minus 1pt}
1618$endif$
tests/lhs-test.latex−2
@@ -2,8 +2,6 @@
22\usepackage{amsmath}
33\usepackage[mathletters]{ucs}
44\usepackage[utf8x]{inputenc}
5−\usepackage{listings}
6−\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
75\setlength{\parindent}{0pt}
86\setlength{\parskip}{6pt plus 2pt minus 1pt}
97\setcounter{secnumdepth}{0}
tests/writer.latex−2
@@ -2,8 +2,6 @@
22\usepackage{amsmath}
33\usepackage[mathletters]{ucs}
44\usepackage[utf8x]{inputenc}
5−\usepackage{listings}
6−\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
75\setlength{\parindent}{0pt}
86\setlength{\parskip}{6pt plus 2pt minus 1pt}
97\usepackage{fancyvrb}