1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
%D \module
%D [ file=mtx-context-combine,
%D version=2009.03.21,
%D title=\CONTEXT\ Extra Trickry,
%D subtitle=Combine 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=combine [options] list-of-files
%
% --sort : sort filenames first
% --paperoffset=dimension : left-top-offset
% --nobanner : no footer etc
% --combination : h*v or hxv
% --paperformat=spec : paper*print or paperxprint
% --nobanner : no footerlines
% --bannerheight=dimension : height of banner
% --bannerstring=dimension : height of bannerstring
%
% end help
\input mtx-context-common.tex
\doifdocumentargumentelse {paperoffset} {
\setuplayout
[topspace=\getdocumentargument{paperoffset},
backspace=\getdocumentargument{paperoffset}]
} {
\setuplayout
[topspace=0pt,
backspace=0pt]
}
\setuplayout
[header=0pt,
footer=0pt,
width=middle,
height=middle]
\setuppapersize
[\getdocumentargument{paperformat_paper}]
[\getdocumentargument{paperformat_print}]
\doifnotdocumentargument {bannerheight} {
\setuplayout
[footer=1cm]
}
\doifelse {\getdocumentargument{nobanner}} {yes} {
\setuplayout
[footer=0cm]
\setupbackgrounds
[page]
[background=]
} {
\definelayer
[page]
[width=\paperwidth,
height=\paperheight]
\setupbackgrounds
[page]
[background=page]
}
\setupexternalfigures
[directory=]
\starttext
\startluacode
local format = string.format
if #document.files > 0 then
if document.arguments["sort"] then
table.sort(document.files)
end
local dobanner = not document.arguments["nobanner"]
local bannerheight = document.arguments["bannerheight"]
local nx = document.arguments.combination_nx or 2
local ny = document.arguments.combination_ny or 2
for _, filename in ipairs(document.files) do
if not string.find(filename,"^mtx%-context%-") then
-- could be a macro
local bannerstring = format("\\tttf\\detokenize{%s}\\quad\\quad\\currentdate\\quad\\quad\\pagenumber",file.basename(filename))
if dobanner then
if bannerheight then
context("\\setuptexttexts[{\\setlayerframed[page][preset=middlebottom][frame=off,height=%s]{%s}}]",bannerheight,bannerstring)
else
context("\\setupfootertexts[{%s}]",bannerstring)
end
end
context("\\combinepages[%s][nx=%s,ny=%s]",filename,nx,ny)
context("\\page")
end
end
else
context("no files given")
end
\stopluacode
\stoptext
|