diff options
author | Oliver Matthews <oliver@codersoffortune.net> | 2016-09-06 21:43:45 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-09-06 21:43:45 +0200 |
commit | 23fb52ef7d0357a0e8abc391f6590e5cbfd606b0 (patch) | |
tree | f4827c6774e771977baaf9feaff6685a46fbf120 | |
parent | 4a2a7a21e5e8bf0d11abd214d372729eb9eb8d0c (diff) | |
download | pandoc-23fb52ef7d0357a0e8abc391f6590e5cbfd606b0.tar.gz |
Add --parts command line option to LaTeX writer.
Add --parts command line argument.
This only effects LaTeX writer, and only for non-beamer output formats.
It changes the output levels so the top level is 'part', the next
'chapter' and then into sections.
-rw-r--r-- | MANUAL.txt | 5 | ||||
-rw-r--r-- | pandoc.hs | 9 | ||||
-rw-r--r-- | src/Text/Pandoc/Options.hs | 2 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/LaTeX.hs | 27 |
4 files changed, 33 insertions, 10 deletions
diff --git a/MANUAL.txt b/MANUAL.txt index ed05dc3cf..4125dba35 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -667,6 +667,11 @@ Options affecting specific writers option is implied. If `beamer` is the output format, top-level headers will become `\part{..}`. +`--parts` +: Treat top-level headers as parts in LaTeX output. The second level + headers will be chapters, i.e. `--chapters` is implied. This does not + effect the `beamer` output format. + `-N`, `--number-sections` : Number section headings in LaTeX, ConTeXt, HTML, or EPUB output. @@ -184,6 +184,7 @@ data Opt = Opt , optHighlight :: Bool -- ^ Highlight source code , optHighlightStyle :: Style -- ^ Style to use for highlighted code , optChapters :: Bool -- ^ Use chapter for top-level sects + , optParts :: Bool -- ^ Use parts for top-level sects in latex , optHTMLMathMethod :: HTMLMathMethod -- ^ Method to print HTML math , optReferenceODT :: Maybe FilePath -- ^ Path of reference.odt , optReferenceDocx :: Maybe FilePath -- ^ Path of reference.docx @@ -249,6 +250,7 @@ defaultOpts = Opt , optHighlight = True , optHighlightStyle = pygments , optChapters = False + , optParts = False , optHTMLMathMethod = PlainMath , optReferenceODT = Nothing , optReferenceDocx = Nothing @@ -609,6 +611,11 @@ options = (\opt -> return opt { optChapters = True })) "" -- "Use chapter for top-level sections in LaTeX, DocBook" + , Option "" ["parts"] + (NoArg + (\opt -> return opt { optParts = True })) + "" -- "Use part for top-level sections in LaTeX" + , Option "N" ["number-sections"] (NoArg (\opt -> return opt { optNumberSections = True })) @@ -1124,6 +1131,7 @@ convertWithOpts opts args = do , optHighlightStyle = highlightStyle , optChapters = chapters , optHTMLMathMethod = mathMethod' + , optParts = parts , optReferenceODT = referenceODT , optReferenceDocx = referenceDocx , optEpubStylesheet = epubStylesheet @@ -1387,6 +1395,7 @@ convertWithOpts opts args = do writerHtml5 = html5, writerHtmlQTags = htmlQTags, writerChapters = chapters, + writerParts = parts, writerListings = listings, writerBeamer = False, writerSlideLevel = slideLevel, diff --git a/src/Text/Pandoc/Options.hs b/src/Text/Pandoc/Options.hs index 39d314974..856fa259f 100644 --- a/src/Text/Pandoc/Options.hs +++ b/src/Text/Pandoc/Options.hs @@ -374,6 +374,7 @@ data WriterOptions = WriterOptions , writerBeamer :: Bool -- ^ Produce beamer LaTeX slide show , writerSlideLevel :: Maybe Int -- ^ Force header level of slides , writerChapters :: Bool -- ^ Use "chapter" for top-level sects + , writerParts :: Bool -- ^ Use "part" for top-level sects in LaTeX , writerListings :: Bool -- ^ Use listings package for code , writerHighlight :: Bool -- ^ Highlight source code , writerHighlightStyle :: Style -- ^ Style to use for highlighting @@ -422,6 +423,7 @@ instance Default WriterOptions where , writerBeamer = False , writerSlideLevel = Nothing , writerChapters = False + , writerParts = False , writerListings = False , writerHighlight = False , writerHighlightStyle = pygments diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 517460f5d..33e4ffbb1 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -750,18 +750,25 @@ sectionHeader unnumbered ident level lst = do <> braces (text plain)) book <- gets stBook opts <- gets stOptions - let level' = if book || writerChapters opts then level - 1 else level + let level' = case level of + 1 | writerParts opts -> 0 + | writerBeamer opts -> 0 + | book || writerChapters opts -> 1 + | otherwise -> 2 + _ | writerParts opts -> level - 1 + | book || writerChapters opts -> level + | otherwise -> level + 1 let sectionType = case level' of - 0 | writerBeamer opts -> "part" - | otherwise -> "chapter" - 1 -> "section" - 2 -> "subsection" - 3 -> "subsubsection" - 4 -> "paragraph" - 5 -> "subparagraph" + 0 -> "part" + 1 -> "chapter" + 2 -> "section" + 3 -> "subsection" + 4 -> "subsubsection" + 5 -> "paragraph" + 6 -> "subparagraph" _ -> "" inQuote <- gets stInQuote - let prefix = if inQuote && level' >= 4 + let prefix = if inQuote && level' >= 5 then text "\\mbox{}%" -- needed for \paragraph, \subparagraph in quote environment -- see http://tex.stackexchange.com/questions/169830/ @@ -770,7 +777,7 @@ sectionHeader unnumbered ident level lst = do let star = if unnumbered && level < 4 then text "*" else empty let stuffing = star <> optional <> contents stuffing' <- hypertarget ident $ text ('\\':sectionType) <> stuffing <> lab - return $ if level' > 5 + return $ if level' > 6 then txt else prefix $$ stuffing' $$ if unnumbered |