blob: c2ce2bf8969f20ca97b2fda7833bb65a12bbcdb6 (
plain)
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
|
#!/usr/bin/env python
"""
collectinput - Collects all files that are included to a main Latex document
with \input or \include commands. These commands must be
in separate lines.
Copyright 1999 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the LGPL. See http://www.fsf.org
NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
Pearu Peterson
Usage:
collectinput <infile> <outfile>
collectinput <infile> # <outfile>=inputless_<infile>
collectinput # in and out are stdin and stdout
"""
__version__ = "0.0"
stdoutflag=0
import sys,os,string,fileinput,re,commands
try: fn=sys.argv[2]
except:
try: fn='inputless_'+sys.argv[1]
except: stdoutflag=1
try: fi=sys.argv[1]
except: fi=()
if not stdoutflag:
sys.stdout=open(fn,'w')
nonverb=r'[\w\s\\&=\^\*\.\{\(\)\[\?\+\$/]*(?!\\verb.)'
input=re.compile(nonverb+r'\\(input|include)\*?\s*\{?.*}?')
comment=re.compile(r'[^%]*%')
for l in fileinput.input(fi):
l=l[:-1]
l1=''
if comment.match(l):
m=comment.match(l)
l1=l[m.end()-1:]
l=l[:m.end()-1]
m=input.match(l)
if m:
l=string.strip(l)
if l[-1]=='}': l=l[:-1]
i=m.end()-2
sys.stderr.write('>>>>>>')
while i>-1 and (l[i] not in [' ','{']): i=i-1
if i>-1:
fn=l[i+1:]
try: f=open(fn,'r'); flag=1; f.close()
except:
try: f=open(fn+'.tex','r'); flag=1;fn=fn+'.tex'; f.close()
except: flag=0
if flag==0:
sys.stderr.write('Could not open a file: '+fn+'\n')
print l+l1
continue
elif flag==1:
sys.stderr.write(fn+'\n')
print '%%%%% Begin of '+fn
print commands.getoutput(sys.argv[0]+' < '+fn)
print '%%%%% End of '+fn
else:
sys.stderr.write('Could not extract a file name from: '+l)
print l+l1
else:
print l+l1
sys.stdout.close()
|