def compile(self,name,document,multiple=1,notemp=False,fname=None): """Layout and compile LaTeX file""" setup=None if hasattr(document,'setup_elements'): setup=document.setup_elements with Timer() as t: txt = self.layout(document) _accounting['tex.time.layout']=t.msecs with Timer() as t: (pdf, log) = tex(lart10,txt,multiple,notemp,setup) _accounting['tex.time.compile']=t.msecs if pdf: _accounting['tex.pdf.exists']=1 if fname is None: if not re.search('\.pdf$',name,re.I): base = name name = '%s.pdf' % name else: base = name[:-4] fname = name else: if not re.search('\.pdf$',fname,re.I): base = name name = '%s.pdf' % name else: base = fname[:-4] name = fname # Write log and accounting open('%s.log' % base, 'wb').write(log) open('%s.acct' % base, 'wb').write(dictview(_accounting)) if pdf is None: return logger.debug('Writing %s pdf,log,acct in dir %s',name,dirname(fname)) pdf.write(open(fname, 'wb'))
def writeout_file(elem,ext=".req",fh=None,header=None,options=Options()): """Write a temp file with given elements, if dict write an INI file :param elem: filename copied in result or lines to add :type eleme: filename, list of strings, or dict :param ext: extension of output file :type ext: string (defaults to '.req') :param fh: file to write in (None, default, to create new file) :param fh: file handler or None :param header: prepend this to file content :type header: string or None (default) """ if not elem: return D=None if isinstance(elem,basestring): if exists(elem): D='\n'.join(open(elem,'r').readlines()) else: D=elem elif isinstance(elem,(list,tuple)): logger.debug('type(elem)==list') P=[] for e in elem: if exists(e): content = [_element2url(r,options) for r in open(e,'r').readlines()] P.append('\n'.join(content)) else: P.append("%s\n"%_element2url(e,options)) D=''.join(P) elif isinstance(elem, (dict,vdict)): ext=".conf" D='' for _k,_v in sorted(elem.items()): if isinstance(_v,(dict,udict,ldict)): D += "[%s]\n%s\n" % (_k, '\n'.join([ "%s = %s"%(k,v) for k,v in _v.items()])) elif iisinstance(_v,basestring): D += "%s\n" % _v if fh is not None: f_in = fh else: f_in = NamedTemporaryFile(suffix=ext, delete=False) logger.debug('Write out a temp file %s',f_in.name) if D: if header: f_in.write("%s\n"%header) f_in.write(D) f_in.flush() f_in.close name = f_in.name logger.info('Temp-file written %s ok' , name ) #report.info('Creato il file %s' % (name,)) return name else: logger.debug('Cannot create the temp-file from %s\ntype: %s',dictview(elem),type(elem))