def convert_fo(self, converter): context = converter[self] context.sections[-1] += 1 context.sections.append(0) ts = xsc.Frag() cs = xsc.Frag() props = [ # size, before, after ("30pt", "30pt", "2pt"), ("22pt", "20pt", "2pt"), ("16pt", "15pt", "2pt"), ("12pt", "15pt", "2pt") ] for child in self.content: if isinstance(child, h): ts.append(child.content) else: cs.append(child) p = props[min(len(context.sections)-1, len(props)-1)] isref = str(self.attrs.role.convert(converter)) in ("class", "method", "property", "function", "module") number = None if isref: context.indentcount += 1 text_indent = context.dedent() else: if len(context.sections)>1: number = ( ".".join(str(s) for s in context.sections[:-1]), ". " ) text_indent = None tattrs = fo.block.Attrs( font_size=p[0], color=context.llblue, space_before=p[1], space_after=p[2], text_align="left", font_family=context.hdfont, keep_with_next_within_page="always", text_indent=text_indent ) e = fo.block( fo.block(number, ts, tattrs), cs, start_indent=context.indent() ) e = e.convert(converter) del context.sections[-1] if isref: context.indentcount -= 1 return e
def convert(self, converter): context = converter[self] e = self.content converter.push(target=sys.modules[__name__]) # our own module e = e.convert(converter) converter.pop() converter.push(target=fo) e = e.convert(converter) converter.pop() e = xsc.Frag( xml.XML(), "\n", fo.root( fo.layout_master_set( fo.simple_page_master( fo.region_body( region_name="xsl-region-body", margin_bottom="3cm" ), fo.region_after( region_name="xsl-region-after", extent="2cm" ), master_name="default", page_height="29.7cm", page_width="21cm", margin_top="1cm", margin_bottom="1cm", margin_left="2.5cm", margin_right="1cm" ) ), fo.page_sequence( fo.static_content( fo.block( fo.page_number(), border_before_width="0.1pt", border_before_color="#000", border_before_style="solid", padding_before="4pt", text_align="center" ), flow_name="xsl-region-after" ), fo.flow( e, flow_name="xsl-region-body" ), master_reference="default" ), font_family=context.font, font_size="10pt", text_align="justify", line_height="normal", language="en", orphans=2, widows=3 ) ) return e
def convert_fo(self, converter): e = fo.block( self.content, converter[self].vspaceattrs, line_height="130%" ) return e.convert(converter)