On 07/18/2018 09:08 PM, Wolfgang Schuster wrote:
> 
> [...]
> Afterwards you can use a loop where you add the markpage commands at
> the begin and end of the range, below is a simple example but it’s easy
> to write a better loop with Lua.
> 
> \setuplayout[page]
> \setupinteraction[state=start]
> \setupinteractionscreen[option={portrait, paper}, print=pages]
> \starttext
> \getfiguredimensions[i-context.pdf]
> \dostepwiserecurse{1}{99}{1}{\externalfigure[i-context.pdf][height=\textheight,page=\recurselevel]}
> \startmarkpages[page]
> \dostepwiserecurse{100}{300}{1}{\externalfigure[i-context.pdf][height=\textheight,page=\recurselevel]}
> \stopmarkpages
> \dostepwiserecurse{301}{\noffigurepages}{1}{\externalfigure[i-context.pdf][height=\textheight,page=\recurselevel]}
> \stoptext

Wolfgang

a different approach would be (code was mainly provided by anoter person):

    \startluacode
    function document.splitarray(inputstr, sep)
      local t={}
      for str in inputstr:gmatch("([^"..sep.."]+)") do
        table.insert(t, str)
      end
      return t
    end

    function document.getpagearray(page_ranges)
      local page_array={}
      local ranges = document.splitarray(page_ranges, ",")
      for _, pp in ipairs(ranges) do
        if string.find(pp, "-") then
          aux = document.splitarray(pp, "-")
          for i=tonumber(aux[1]), tonumber(aux[2]), 1 do
            table.insert(page_array, i)
          end
        else
           table.insert(page_array, tonumber(pp))
        end
      end
      return page_array
    end

    function document.printmarkedpageranges(tag, page_ranges)
      page_array = document.getpagearray(page_ranges)
      context("\\markpage[" .. tag .. "][" ..
          table.concat(page_array, ", ") .. "]")
    end
    \stopluacode

    \def\getmarkedpageranges#1#2{%
        \ctxlua{document.printmarkedpageranges("#1","#2")}}
    \setuplayout[page]
    \setupinteraction[state=start]
    \setupinteractionscreen[option={portrait, paper}, print=pages]
    \getmarkedpageranges{pages}{5, 25-30, 100-200, 235, 298, 304}
    \starttext
    \insertpages[i-context.pdf][width=0pt]
    \stoptext

This makes easier to add more complex page intervals (such as the one
above).

Before adding this to the wiki, my question would be whether it might
not be easier to add page ranges to \markpage.

I mean, as a standard user I think there is too much code (which may be
improved and made part of ConTeXt) for such a simple need.

Of course, I may be missing the whole point in this issue.

I would really appreciate, if someone could explain me what is wrong in
my assumption that \markpages need also page intervals.

Many thanks for your help,

Pablo
-- 
http://www.ousia.tk
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to