aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Shared.hs2
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs12
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs6
-rw-r--r--src/pandoc.hs15
4 files changed, 31 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
index ba007f5e4..8a4850ed3 100644
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -478,6 +478,7 @@ data WriterOptions = WriterOptions
, writerBiblioFiles :: [FilePath] -- ^ Biblio files to use for citations
, writerHtml5 :: Bool -- ^ Produce HTML5
, writerBeamer :: Bool -- ^ Produce beamer LaTeX slide show
+ , writerSlideLevel :: Maybe Int -- ^ Force header level of slides
, writerChapters :: Bool -- ^ Use "chapter" for top-level sects
, writerListings :: Bool -- ^ Use listings package for code
, writerHighlight :: Bool -- ^ Highlight source code
@@ -514,6 +515,7 @@ defaultWriterOptions =
, writerBiblioFiles = []
, writerHtml5 = False
, writerBeamer = False
+ , writerSlideLevel = Nothing
, writerChapters = False
, writerListings = False
, writerHighlight = False
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index adf59ae4d..5530247a2 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -115,7 +115,7 @@ pandocToHtml opts (Pandoc (Meta title' authors' date') blocks) = do
date <- if standalone
then inlineListToHtml opts date'
else return mempty
- let slideLevel = getSlideLevel blocks
+ let slideLevel = maybe (getSlideLevel blocks) id $ writerSlideLevel opts
let sects = hierarchicalize $
if writerSlideVariant opts == NoSlides
then blocks
@@ -252,15 +252,21 @@ elementToHtml slideLevel opts (Sec level num id' title' elements) = do
modify $ \st -> st{stSecNum = num} -- update section number
-- always use level 1 for slide titles
let level' = if slide then 1 else level
+ let titleSlide = slide && level < slideLevel
header' <- blockToHtml opts (Header level' title')
- innerContents <- mapM (elementToHtml slideLevel opts) elements
+ let isSec (Sec _ _ _ _ _) = True
+ isSec (Blk _) = False
+ innerContents <- mapM (elementToHtml slideLevel opts)
+ $ if titleSlide
+ -- title slides have no content of their own
+ then filter isSec elements
+ else elements
let header'' = if (writerStrictMarkdown opts ||
writerSectionDivs opts ||
writerSlideVariant opts == S5Slides)
then header'
else header' ! prefixedId opts id'
let inNl x = mconcat $ nl opts : intersperse (nl opts) x ++ [nl opts]
- let titleSlide = slide && level < slideLevel
let classes = ["titleslide" | titleSlide] ++ ["slide" | slide] ++
["level" ++ show level]
let secttag = if writerHtml5 opts
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index bf1ad91d9..140ef171d 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -201,7 +201,8 @@ inCmd cmd contents = char '\\' <> text cmd <> braces contents
toSlides :: [Block] -> State WriterState [Block]
toSlides bs = do
- let slideLevel = getSlideLevel bs
+ opts <- gets stOptions
+ let slideLevel = maybe (getSlideLevel bs) id $ writerSlideLevel opts
let bs' = prepSlides slideLevel bs
concat `fmap` (mapM (elementToBeamer slideLevel) $ hierarchicalize bs')
@@ -214,7 +215,10 @@ elementToBeamer slideLevel (Sec lvl _num _ident tit elts)
: tit ++ [RawInline "latex" "}"] )
: bs ++ [RawBlock "latex" "\\end{block}"]
| lvl < slideLevel = do
+ let isSec (Sec _ _ _ _ _) = True
+ isSec (Blk _) = False
bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
+ -- (filter isSec elts)
return $ (Header lvl tit) : bs
| otherwise = do -- lvl == slideLevel
-- note: [fragile] is required or verbatim breaks
diff --git a/src/pandoc.hs b/src/pandoc.hs
index fac615a8d..08b5dec57 100644
--- a/src/pandoc.hs
+++ b/src/pandoc.hs
@@ -131,6 +131,7 @@ data Opt = Opt
, optListings :: Bool -- ^ Use listings package for code blocks
, optLaTeXEngine :: String -- ^ Program to use for latex -> pdf
, optBeamer :: Bool -- ^ Produce latex output for beamer class
+ , optSlideLevel :: Maybe Int -- ^ Header level that creates slides
}
-- | Defaults for command-line options.
@@ -180,6 +181,7 @@ defaultOpts = Opt
, optListings = False
, optLaTeXEngine = "pdflatex"
, optBeamer = False
+ , optSlideLevel = Nothing
}
-- | A list of functions, each transforming the options data structure
@@ -381,6 +383,17 @@ options =
(\opt -> return opt { optBeamer = True }))
"" -- "Produce latex output for beamer class"
+ , Option "" ["slide-level"]
+ (ReqArg
+ (\arg opt -> do
+ case reads arg of
+ [(t,"")] | t >= 1 && t <= 6 ->
+ return opt { optSlideLevel = Just t }
+ _ -> err 39 $
+ "slide level must be a number between 1 and 6")
+ "NUMBER")
+ "" -- "Force header level for slides"
+
, Option "" ["section-divs"]
(NoArg
(\opt -> return opt { optSectionDivs = True }))
@@ -795,6 +808,7 @@ main = do
, optListings = listings
, optLaTeXEngine = latexEngine
, optBeamer = beamer
+ , optSlideLevel = slideLevel
} = opts
when dumpArgs $
@@ -943,6 +957,7 @@ main = do
writerChapters = chapters,
writerListings = listings,
writerBeamer = beamer,
+ writerSlideLevel = slideLevel,
writerHighlight = highlight,
writerHighlightStyle = highlightStyle }