From 57d395428d45725bb0bae19829460622dbbb124f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 7 Jan 2014 23:07:05 +0000 Subject: scanpages (7jan14) git-svn-id: svn://tug.org/texlive/trunk@32600 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/scanpages/replicate.py | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100755 Master/texmf-dist/doc/latex/scanpages/replicate.py (limited to 'Master/texmf-dist/doc/latex/scanpages/replicate.py') diff --git a/Master/texmf-dist/doc/latex/scanpages/replicate.py b/Master/texmf-dist/doc/latex/scanpages/replicate.py new file mode 100755 index 00000000000..99f0395da35 --- /dev/null +++ b/Master/texmf-dist/doc/latex/scanpages/replicate.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# Copyright (c) Michael Sharpe, 2014 +# This is free software, subject to the LATEX Project Public License. + +import sys + +filename=sys.argv[1] +with open(filename,'r') as f: + s=f.read() +tmp=s.split("%Repetitions=") +if len(tmp) != 2: + print "Bailing! The file does not contain exactly one '%Repetitions='" + sys.exit() +ss=tmp[1] +tmp2=ss.split('\n') +numrep=int(tmp2[0]) +#get variable names +tmp=s.split("%Variables=") +if len(tmp) != 2: + print "Bailing! The file does not contain exactly one '%Variables='" + sys.exit() +ss=tmp[1] +tmp2=ss.split('\n') +vbllst=tmp2[0].strip() #like {nnn,0:1+1,1:3+-2} +vbllst3=vbllst[1:-1] +vbles=vbllst3.split(',') #line {nnn,0:1+1,1:3+-2} +n=len(vbles) +root=vbles[0].strip() +vlst=[] +vinit=[] +vinc=[] +valt=[] +for j in range(1,n): + vbles[j]=vbles[j].strip().replace("+",":") + x=vbles[j].split(":") + if len(x) != 3: + print "Bad variable descriptor-- " + vbles[j] + sys.exit + vlst.append(x[0]) + nnn=0 + hasp=0 + if x[2][-1:] == ")": + hasp=1 + nnn=int(x[2][-2]) + x[2]=x[2][:-3] + else: + if x[1][0] == "[": + nnn=-100 + if x[2][-2:]=="/2": + x[2]=x[2][:-2] + if hasp == 1: + nnn=-nnn + else: + nnn=-10 + valt.append(nnn) + if nnn == -100: + vinit.append(x[1][1:]) + vinc.append(x[2][:-1]) + else: + vinit.append(x[1]) + vinc.append(x[2]) + +viniti=[] +vinci=[] +kk=len(vinit) +for j in range(kk): + try: + viniti.append(int(vinit[j])) + except: + viniti.append(0) + try: + vinci.append(int(vinc[j])) + except: + vinci.append(0) +tmp=s.split('\n') +m=len(tmp) +tmp2=[] +for j in range(2,m): + t=tmp[j] + if len(t) > 1: + t=t[1:] + else: + t="" + tmp2.append(t) +body='\n'.join(tmp2) +repl=[s,] +for p in range(numrep): + newbody=body + for k in range(kk): + v="" + alt=valt[k] + if alt == -100: + if (p % 2) == 1: + v=vinc[k] + else: + v=vinit[k] + else: + v=viniti[k] + if (alt < 0): + v=v//2 + alt=-alt + if (alt!=10) and (alt!= 0): + v =str(v).zfill(alt) + else: + v=str(v) + newbody=newbody.replace(root+vlst[k],v) + viniti[k] =int(viniti[k]) + vinci[k] + repl.append(newbody) + +with open(filename,'w') as f: + for j in range(len(repl)): + f.write(repl[j]+'\n') + -- cgit v1.2.3