6.4.7.8. Latex Preamble

This is a very complex section that provides the latex preamble and document front matter. The basic command is like: @w = latex_weaver(sink,documentclass='book', documentclass_options=['a4paper','11pt'],topmargin='4pt'). [Typeset this as a display .. when the code is done for that feature]
Start python section to interscript/weavers/latex.py[9 /19 ] Next Prev Last
   107: #line 127 "latex_weaver.ipk"
   108:   def prolog(self,kwds):
   109: 
   110:     # see Kopka pp25-27
   111:     # the default document class is for a book
   112:     # other standard classes include:
   113:     #   article report letter
   114: 
   115:     documentclass = 'book'
   116:     if kwds.has_key('documentclass'):
   117:       documentclass=kwds['documentclass']
   118: 
   119:     # the options are a python list of words
   120:     # for the standard book class they're from the set:
   121:     #   10pt 11pt 12pt
   122:     #   letterpaper legalpaper executivepaper
   123:     #   a4paper a5paper b5paper
   124:     #   landscape
   125:     #   onecolumn twocolumn
   126:     #   oneside twoside
   127:     #   openright openany
   128:     #   notitlepage titlepage
   129: 
   130:     # note: the default paper size Latex uses is
   131:     # american letterpaper. Don't count on this,
   132:     # I intend to make the ISO Standard A4 that everyone
   133:     # else uses the default!
   134: 
   135:     docopts = []
   136:     if kwds.has_key('documentclass_options'):
   137:       docopts =kwds['documentclass']
   138:     docoptstr=''
   139:     if docopts: docoptstr = docopts[0]
   140:     for opt in range(1,len(docopts)):
   141:      docoptstr = dosoptstr + ', ' + opt
   142:     self._writeline('\\documentclass['+docoptstr+']{'+documentclass+'}')
   143: 
   144:     if kwds.has_key('heading_level_offset'):
   145:       self.heading_level_offset = kwds['heading_level_offset']
   146: 
   147:     # page heading control
   148:     pagestyle = 'headings'
   149:     if kwds.has_key('pagestyle'):
   150:       pagestyle=kwds['pagestyle']
   151:     self._writeline('\\pagestyle{'+pagestyle+'}')
   152: 
   153:     pagenumbering= 'arabic'
   154:     if kwds.has_key('pagenumbering'):
   155:       pagenumbering=kwds['pagenumbering']
   156:     self._writeline('\\pagenumbering{'+pagenumbering+'}')
   157: 
   158:     # page layout
   159:     page_format_params = [
   160:       'topmargin','headheight','headsep','topskip','textheight','footskip',
   161:       'oddsidemargin','evensidemargin',
   162:       'textwidth']
   163:     for p in page_format_params:
   164:       if kwds.has_key(p):
   165:         param=kwds[p]
   166:         self._writeline('\\setlength{\\'+p+'}{'+param+'}')
   167: 
   168:     # lines and paragraphs
   169: 
   170:     # Note: we do _not_ permit indented paragraphs AT ALL.
   171:     # Don't even try it. FAR FAR too many things are broken
   172:     # by indentation.
   173: 
   174:     baselinestretch= 1
   175:     if kwds.has_key('baselinestretch'):
   176:       baselinestretch=kwds['baselinestretch']
   177:     self._writeline('\\renewcommand{\\baselinestretch}{'+str(baselinestretch)+'}')
   178: 
   179:     self._writeline('\\setlength{\\parskip 2mm plus 0.5mm minus 1mm}')
   180:     self._writeline('\\setlength{\\parindent 0mm}')
   181: 
   182:     self._writeline( '\\begin{document}')
   183:     if kwds.has_key('title'):
   184:       title=kwds['title']
   185:     else:
   186:       title = self.sink.pass_frame.master.filename
   187:     self._writeline('\\title{'+cvt_text(title)+'}')
   188:     if kwds.has_key('author'):
   189:       author =kwds['author']
   190:       self._writeline('\\author{'+cvt_text(author)+'}')
   191: 
   192:     self._writeline( '\\maketitle')
   193: 
   194:   def epilog(self):
   195:     self._writeline('\\end{document}')
   196: 
End python section to interscript/weavers/latex.py[9]