File size: 2,300 Bytes
c011401 |
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 |
#!/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 <[email protected]>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License
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
"""
from __future__ import division, absolute_import, print_function
__version__ = "0.0"
stdoutflag=0
import sys
import fileinput
import re
if sys.version_info[0] >= 3:
from subprocess import getoutput
else:
from commands import getoutput
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=l.strip()
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(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()
|