all2md.renderers.odp

ODP rendering from AST.

This module provides the OdpRenderer class which converts AST nodes to OpenDocument Presentation (.odp) format. The renderer uses odfpy to generate .odp files with proper slide layouts and formatting.

The rendering process splits the AST into slides using configurable strategies (separator-based or heading-based), converts each slide’s content to ODP shapes, and assembles a complete presentation.

class all2md.renderers.odp.OdpRenderer

Bases: NodeVisitor, BaseRenderer

Render AST nodes to ODP format.

This class converts an AST document into an OpenDocument Presentation using odfpy. It splits the document into slides based on configured strategy and generates proper slide layouts and content.

Parameters:

options (OdpRendererOptions or None, default = None) – ODP rendering options

Examples

Basic usage:

>>> from all2md.options.odp import OdpRendererOptions
>>> from all2md.ast import Document, Heading, Paragraph, Text
>>> from all2md.renderers.odp import OdpRenderer
>>> doc = Document(children=[
...     Heading(level=2, content=[Text(content="Slide 1")]),
...     Paragraph(content=[Text(content="Content here")])
... ])
>>> options = OdpRendererOptions()
>>> renderer = OdpRenderer(options)
>>> renderer.render(doc, "output.odp")

Initialize the ODP renderer with options.

__init__(options: OdpRendererOptions | None = None)

Initialize the ODP renderer with options.

render(doc: Document, output: str | Path | IO[bytes]) None

Render the AST to an ODP file.

Parameters:
  • doc (Document) – AST Document node to render

  • output (str, Path, or IO[bytes]) – Output destination (file path or file-like object)

Raises:
render_to_bytes(doc: Document) bytes

Render the AST to ODP bytes.

Returns:

ODP file content as bytes

Return type:

bytes

visit_paragraph(node: Paragraph) None

Render a Paragraph node.

Parameters:

node (Paragraph) – Paragraph to render

visit_heading(node: Heading) None

Render a Heading node (non-title headings).

Parameters:

node (Heading) – Heading to render

visit_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text to render

visit_strong(node: Strong) None

Render a Strong node.

Parameters:

node (Strong) – Strong to render

visit_emphasis(node: Emphasis) None

Render an Emphasis node.

Parameters:

node (Emphasis) – Emphasis to render

visit_code(node: Code) None

Render a Code node.

Parameters:

node (Code) – Code to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

Parameters:

node (CodeBlock) – Code block to render

visit_list(node: List) None

Render a List node.

Parameters:

node (List) – List to render

visit_list_item(node: ListItem) None

Render a ListItem node.

Parameters:

node (ListItem) – List item to render

visit_document(node: Document) None

Document handled by render() method.

Render link.

visit_image(node: Image) None

Images handled separately by _render_image().

visit_table(node: Table) None

Tables handled separately by _render_table().

visit_table_row(node: TableRow) None

Handle table row (delegated to visit_table).

visit_table_cell(node: TableCell) None

Handle table cell (delegated to visit_table).

visit_line_break(node: LineBreak) None

Render line break.

visit_underline(node: Underline) None

Render underline.

visit_block_quote(node: BlockQuote) None

Render block quote.

visit_thematic_break(node: ThematicBreak) None

Render thematic break.

visit_strikethrough(node: Strikethrough) None

Render strikethrough text.

visit_subscript(node: Subscript) None

Render subscript text.

visit_superscript(node: Superscript) None

Render superscript text.

visit_html_block(node: HTMLBlock) None

Skip HTML blocks in ODP rendering.

visit_html_inline(node: HTMLInline) None

Skip inline HTML in ODP rendering.

visit_footnote_reference(node: FootnoteReference) None

Render footnote reference.

visit_footnote_definition(node: FootnoteDefinition) None

Skip footnote definitions in ODP rendering.

visit_math_inline(node: MathInline) None

Render inline math as plain text.

visit_math_block(node: MathBlock) None

Render math block as plain text.

visit_definition_list(node: DefinitionList) None

Render definition list.

visit_definition_term(node: DefinitionTerm) None

Render definition term as bold text.

visit_definition_description(node: DefinitionDescription) None

Render definition description as indented text.

visit_comment(node: Comment) None

Render a Comment node according to comment_mode option.

Parameters:

node (Comment) – Comment block to render

Notes

Supports multiple rendering modes via comment_mode option: - “native”: Use ODF annotation elements (default) - “visible”: Render as visible text in slide content - “ignore”: Skip comment entirely

visit_comment_inline(node: CommentInline) None

Render a CommentInline node according to comment_mode option.

Parameters:

node (CommentInline) – Inline comment to render

Notes

Supports multiple rendering modes via comment_mode option: - “native”: Use ODF annotation elements (default) - “visible”: Render as visible italic text - “ignore”: Skip comment entirely