From f8fec87f09d56b6a2d877af3a34e7af045cac29f Mon Sep 17 00:00:00 2001
From: John MacFarlane <fiddlosopher@gmail.com>
Date: Sat, 16 Mar 2013 14:48:37 -0700
Subject: [PATCH] Fixed numbering mismatch between TOC and sections in HTML.

Also made `--number-offset` affect TOC numbering as well
as section numbering, as it should have all along.

Closes #789.
---
 pandoc.hs                       | 6 +++---
 src/Text/Pandoc/Writers/HTML.hs | 3 ++-
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/pandoc.hs b/pandoc.hs
index 6a6094ced..de132b0c8 100644
--- a/pandoc.hs
+++ b/pandoc.hs
@@ -100,7 +100,7 @@ data Opt = Opt
     , optVariables         :: [(String,String)] -- ^ Template variables to set
     , optOutputFile        :: String  -- ^ Name of output file
     , optNumberSections    :: Bool    -- ^ Number sections in LaTeX
-    , optNumberOffset        :: [Int]   -- ^ Starting number for sections
+    , optNumberOffset      :: [Int]   -- ^ Starting number for sections
     , optSectionDivs       :: Bool    -- ^ Put sections in div tags in HTML
     , optIncremental       :: Bool    -- ^ Use incremental lists in Slidy/Slideous/S5
     , optSelfContained     :: Bool    -- ^ Make HTML accessible offline
@@ -157,7 +157,7 @@ defaultOpts = Opt
     , optVariables             = []
     , optOutputFile            = "-"    -- "-" means stdout
     , optNumberSections        = False
-    , optNumberOffset          = [1,1,1,1,1,1]
+    , optNumberOffset          = [0,0,0,0,0,0]
     , optSectionDivs           = False
     , optIncremental           = False
     , optSelfContained         = False
@@ -1035,7 +1035,7 @@ main = do
                             writerBiblioFiles      = reffiles,
                             writerIgnoreNotes      = False,
                             writerNumberSections   = numberSections,
-                            writerNumberOffset       = numberFrom,
+                            writerNumberOffset     = numberFrom,
                             writerSectionDivs      = sectionDivs,
                             writerReferenceLinks   = referenceLinks,
                             writerWrapText         = wrap,
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 98d352382..1ea4442f9 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -252,10 +252,11 @@ showSecNum = concat . intersperse "." . map show
 elementToListItem :: WriterOptions -> Element -> State WriterState (Maybe Html)
 elementToListItem opts (Sec lev num (id',classes,_) headerText subsecs)
   | lev <= writerTOCDepth opts = do
+  let num' = zipWith (+) num (writerNumberOffset opts ++ repeat 0)
   let sectnum = if writerNumberSections opts && not (null num) &&
                    "unnumbered" `notElem` classes
                    then (H.span ! A.class_ "toc-section-number"
-                        $ toHtml $ showSecNum num) >> preEscapedString " "
+                        $ toHtml $ showSecNum num') >> preEscapedString " "
                    else mempty
   txt <- liftM (sectnum >>) $ inlineListToHtml opts headerText
   subHeads <- mapM (elementToListItem opts) subsecs >>= return . catMaybes