%D \module %D [ file=mtx-context-copy, %D version=2008.11.10, % about that time i started playing with this %D title=\CONTEXT\ Extra Trickry, %D subtitle=Copying Files, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D This is a \TEXEXEC\ features that has been moved to \MKIV. % begin help % % usage: context --extra=copy [options] list-of-files % % --interaction : add hyperlinks % % end help % \disabledirectives[backends.pdf.pagelabels] \setupfittingpage[pagestate=start] % make page labels okay % \nopdfcompression \continuewhenlmtxmode \input mtx-context-common.tex \setupexternalfigures [directory=] \definepapersize [fit] [width=\figurewidth, height=\figureheight] \setuplayout [page] \doif {\getdocumentargument{interaction}} {yes} { \setupinteraction [state=start] \setupexternalfigures [interaction=yes] } \doif {\getdocumentargument{tracelinks}} {yes} { \enabletrackers[figures.links] % \enabletrackers[refer*] % \enabletrackers[dest*] } \starttexdefinition CopyPages #1 \filterpages[#1][all][alternative=page] \stoptexdefinition \starttexdefinition CopyEntry #1#2#3#4 \doifelsesomething {#4} { \setupinteraction [state=start] \setupexternalfigures [interaction={#4}] \writestatus {filter pages} {file #1, first page #2, last page #3, interaction '#4'} } { \setupinteraction [state=stop] \setupexternalfigures [interaction=] \writestatus {filter pages} {file #1, first page #2, last page #3} } \filterpages[#1][#2:#3][alternative=page] \stoptexdefinition \starttext % return { % comment = "tugboat 137", % list = { % { % filename = "tb137complete", % first = 1, % last = 1, % interaction = "all" % pageoffset = -1, % % }, % { % filename = "issue", % first = 2, % last = 123, % interaction = "all" % }, % { % filename = "issue", % first = 124, % last = 125, % interaction = "all" % pageoffset = -1, % }, % }, % } \startluacode local find = string.find if #document.files == 0 then context("no files given") elseif document.arguments.template then local filename = file.addsuffix(document.files[1],"lua") local template = table.load(filename) if template then local list = template.list if type(list) == "table" then for i=1,#list do local entry = list[i] local filename = entry.filename or "" local first = tonumber(entry.first) or 1 local last = tonumber(entry.last) or "*" local interaction = entry.interaction or "" local pageoffset = tonumber(entry.pageoffset) local minheight = tonumber(entry.minheight) if interaction ~= "" then if pageoffset then interaction = interaction .. ",pageoffset:" .. pageoffset end if minheight then interaction = interaction .. ",minheight:" .. minheight end end context.CopyEntry(filename,first,last,interaction) end end else logs.report("copy","invalid or missing template file") end else if document.arguments.pattern then document.files = dir.glob(document.arguments.pattern) end for i=1,#document.files do local filename = document.files[i] if not find(filename,"^mtx%-context%-") and not find(filename,"^context%-extra") then logs.report("copy",filename) context.CopyPages(filename) end end end \stopluacode \stoptext % def copyoutput % copyortrim(false,'copy') % end % def trimoutput % copyortrim(true,'trim') % end % def copyortrim(trim=false,what='unknown') % if job = TEX.new(logger) then % prepare(job) % job.cleanuptemprunfiles % files = if @commandline.option('sort') then @commandline.arguments.sort else @commandline.arguments end % if files.length > 0 then % if f = File.open(job.tempfilename('tex'),'w') then % scale = @commandline.checkedoption('scale') % begin % scale = (scale.to_f * 1000.0).to_i if scale.to_i < 10 % rescue % scale = 1000 % end % scale = scale.to_i % paperoffset = @commandline.checkedoption('paperoffset', '0cm') % f << "\\starttext\n" % files.each do |filename| % result = @commandline.checkedoption('result','texexec') % begin % if (filename !~ /^texexec/io) && (filename !~ /^#{result}/) then % report("copying file: #{filename}") % f << "\\getfiguredimensions\n" % f << " [#{filename}]\n" % f << " [scale=#{scale},\n" % f << " page=1,\n" % f << " size=trimbox\n" if trim % f << "]\n" % f << "\\definepapersize\n" % f << " [copy]\n" % f << " [width=\\figurewidth,\n" % f << " height=\\figureheight]\n" % f << "\\setuppapersize\n" % f << " [copy][copy]\n" % f << "\\setuplayout\n" % f << " [page]\n" % f << "\\setupexternalfigures\n" % f << " [directory=]\n" % f << "\\copypages\n" % f << " [#{filename}]\n" % f << " [scale=#{scale},\n" % f << " marking=on,\n" if @commandline.option('markings') % f << " size=trimbox,\n" if trim % f << " offset=#{paperoffset}]\n" % end % rescue % report("wrong specification") % end % end % f << "\\stoptext\n" % f.close % job.setvariable('interface','english') % job.setvariable('simplerun',true) % # job.setvariable('nooptionfile',true) % job.setvariable('files',[job.tempfilename]) % job.processtex % else % report("no files to #{what}") % end % else % report("no files to #{what}") % end % job.cleanuptemprunfiles % end % end