diff options
Diffstat (limited to 'paper/lua-filters/pagebreak/pagebreak.lua')
-rw-r--r-- | paper/lua-filters/pagebreak/pagebreak.lua | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/paper/lua-filters/pagebreak/pagebreak.lua b/paper/lua-filters/pagebreak/pagebreak.lua deleted file mode 100644 index 4c00698..0000000 --- a/paper/lua-filters/pagebreak/pagebreak.lua +++ /dev/null @@ -1,97 +0,0 @@ ---[[ -pagebreak – convert raw LaTeX page breaks to other formats - -Copyright © 2017-2019 Benct Philip Jonsson, Albert Krewinkel - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -]] -local stringify_orig = (require 'pandoc.utils').stringify - -local function stringify(x) - return type(x) == 'string' and x or stringify_orig(x) -end - ---- configs – these are populated in the Meta filter. -local pagebreak = { - epub = '<p style="page-break-after: always;"> </p>', - html = '<div style="page-break-after: always;"></div>', - latex = '\\newpage{}', - ooxml = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>', -} - -local function pagebreaks_from_config (meta) - local html_class = - (meta.newpage_html_class and stringify(meta.newpage_html_class)) - or os.getenv 'PANDOC_NEWPAGE_HTML_CLASS' - if html_class and html_class ~= '' then - pagebreak.html = string.format('<div class="%s"></div>', html_class) - end - - local odt_style = - (meta.newpage_odt_style and stringify(meta.newpage_odt_style)) - or os.getenv 'PANDOC_NEWPAGE_ODT_STYLE' - if odt_style and odt_style ~= '' then - pagebreak.odt = string.format('<text:p text:style-name="%s"/>', odt_style) - end -end - ---- Return a block element causing a page break in the given format. -local function newpage(format) - if format == 'docx' then - return pandoc.RawBlock('openxml', pagebreak.ooxml) - elseif format:match 'latex' then - return pandoc.RawBlock('tex', pagebreak.latex) - elseif format:match 'html.*' then - return pandoc.RawBlock('html', pagebreak.html) - elseif format:match 'epub' then - return pandoc.RawBlock('html', pagebreak.epub) - else - -- fall back to insert a form feed character - return pandoc.Para{pandoc.Str '\f'} - end -end - -local function is_newpage_command(command) - return command:match '^\\newpage%{?%}?$' - or command:match '^\\pagebreak%{?%}?$' -end - --- Filter function called on each RawBlock element. -function RawBlock (el) - -- Don't do anything if the output is TeX - if FORMAT:match 'tex$' then - return nil - end - -- check that the block is TeX or LaTeX and contains only - -- \newpage or \pagebreak. - if el.format:match 'tex' and is_newpage_command(el.text) then - -- use format-specific pagebreak marker. FORMAT is set by pandoc to - -- the targeted output format. - return newpage(FORMAT) - end - -- otherwise, leave the block unchanged - return nil -end - --- Turning paragraphs which contain nothing but a form feed --- characters into line breaks. -function Para (el) - if #el.content == 1 and el.content[1].text == '\f' then - return newpage(FORMAT) - end -end - -return { - {Meta = pagebreaks_from_config}, - {RawBlock = RawBlock, Para = Para} -} |