code: def outputPDF(self,**kwargs):
          
          import pylatex as pl
          geometry_options = {"tmargin": "2cm", "lmargin": "2cm"}
          doc = pl.Document(geometry_options=geometry_options)
          #Following option avoids float error when to many unplaced figs or tabs
          # (to force placing floats also \clearpage can be used after a section for example)
          doc.append(pl.utils.NoEscape(r'\extrafloats{100}'))
          doc.append(pl.utils.NoEscape(r'\title{'+self.title+'}'))
          if self.addTime:
              from time import localtime, strftime
              doc.append(pl.utils.NoEscape(r'\date{'+strftime("%Y-%m-%d %H:%M:%S", localtime())+r'}'))
          else: doc.append(pl.utils.NoEscape(r'\date{\today}'))
          if self.author: doc.append(pl.utils.NoEscape(r'\author{'+self.author+'}'))
          doc.append(pl.utils.NoEscape(r'\maketitle'))
  
          # Append introduction
          if self.p:
              with doc.create(pl.Section('Introduction')):
                  doc.append(renewliner(self.p))
  
          # Sections
          c = count(1)
          for section in self.sections:
              section.sectionsPDF(walkTrace=(next(c),),doc=doc)
  
          # Append conclusion
          if self.conclusion:
              with doc.create(pl.Section('Conclusion')):
                  doc.append(renewliner(self.conclusion))
  
          # Generate pdf
          doc.generate_pdf(self.outfile,**kwargs)
docs: Makes a pdf report with pylatex
          *kwargs* are send to doc.generate_pdf 
          -> see pylatex.Document.generate_pdf for help