local pagebreak = { asciidoc = '<<<\n\n', context = '\\page', epub = '

', html = '
', latex = '\\newpage{}', ms = '.bp', ooxml = '', odt = '' } local title = ''; local title_inHaders = true; local stringify_orig = (require 'pandoc.utils').stringify local function stringify(x) return type(x) == 'string' and x or stringify_orig(x) end local function newpage(format) if format:match 'asciidoc' then return pandoc.RawBlock('asciidoc', pagebreak.asciidoc) elseif format == 'context' then return pandoc.RawBlock('context', pagebreak.context) elseif format == 'docx' then return pandoc.RawBlock('openxml', pagebreak.ooxml) elseif format:match 'epub' then return pandoc.RawBlock('html', pagebreak.epub) elseif format:match 'html.*' then return pandoc.RawBlock('html', pagebreak.html) elseif format:match 'latex' then return pandoc.RawBlock('tex', pagebreak.latex) elseif format:match 'ms' then return pandoc.RawBlock('ms', pagebreak.ms) elseif format:match 'odt' then return pandoc.RawBlock('opendocument', pagebreak.odt) else -- fall back to insert a form feed character return pandoc.Para{pandoc.Str '\f'} end end function Meta(meta) title = (meta.title and stringify(meta.title)) or title if title ~= '' then title_inHaders = false; end end function Header(el) if title_inHaders then if el.level == 1 then title = el.content return {} else el.level = el.level - 1; end end if el.level == 1 or el.level == 2 then return { newpage(FORMAT), el } end end return { {Meta = Meta}, {Header = Header}, {Meta = function (meta) meta.title = title; return meta end} }