all2md.renderers

AST renderers for converting documents to various output formats.

This package provides renderers for converting the unified AST representation to different output formats. Renderers are registered dynamically via the converter registry system, enabling lazy loading and proper dependency handling.

Available renderers include: - MarkdownRenderer: Render to Markdown text (always available) - MediaWikiRenderer: Render to MediaWiki markup (always available) - PlainTextRenderer: Render to plain text (always available) - HtmlRenderer: Render to HTML - DocxRenderer: Render to Microsoft Word .docx (requires python-docx) - PdfRenderer: Render to PDF (requires reportlab) - EpubRenderer: Render to EPUB ebook format (requires ebooklib) - PptxRenderer: Render to PowerPoint .pptx (requires python-pptx) - AsciiDocRenderer: Render to AsciiDoc (always available) - LatexRenderer: Render to LaTeX (always available) - RestructuredTextRenderer: Render to reStructuredText (always available) - JinjaRenderer: Render using custom Jinja2 templates (requires jinja2)

Renderers with optional dependencies are loaded on-demand via the registry. Use all2md.converter_registry.registry.get_renderer(format_name) to dynamically load a renderer class with automatic dependency checking.

Examples

Convert AST to Markdown:

>>> from all2md.ast import Document, Heading, Text
>>> from all2md.renderers import MarkdownRenderer
>>> from all2md.options import MarkdownRendererOptions
>>> doc = Document(children=[
...     Heading(level=1, content=[Text(content="Title")])
... ])
>>> renderer = MarkdownRenderer(MarkdownRendererOptions())
>>> markdown = renderer.render_to_string(doc)

Convert AST to HTML (with dynamic loading):

>>> from all2md.options.html import HtmlRendererOptions    >>> from all2md.converter_registry import registry
>>> HtmlRenderer = registry.get_renderer("html")
>>> renderer = HtmlRenderer(HtmlRendererOptions(standalone=True))
>>> html = renderer.render_to_string(doc)

Convert AST to DOCX (with dynamic loading):

>>> from all2md.options.docx import DocxRendererOptions    >>> from all2md.converter_registry import registry
>>> DocxRenderer = registry.get_renderer("docx")
>>> renderer = DocxRenderer(DocxRendererOptions())
>>> renderer.render(doc, "output.docx")
class all2md.renderers.BaseRenderer

Bases: ABC

Abstract base class for all AST renderers.

All renderers in the all2md library must inherit from this class and implement the render() method. This ensures a consistent interface for converting the unified AST representation into various output formats.

Parameters:

options (BaseRendererOptions or None, default = None) – Format-specific rendering options

Examples

Creating a custom renderer:

>>> from all2md.options.base import BaseRendererOptions
>>> from all2md.renderers.base import BaseRenderer
>>> from all2md.ast import Document
>>>
>>> class MyCustomRenderer(BaseRenderer):
...     def render(self, doc, output):
...         # Custom rendering logic here
...         pass
...
...     def render_to_string(self, doc):
...         # Return string representation
...         return "rendered output"

Initialize the renderer with optional configuration.

Parameters:

options (BaseRendererOptions or None, default = None) – Format-specific rendering options. If None, default options will be used.

__init__(options: BaseRendererOptions | None = None)

Initialize the renderer with optional configuration.

Parameters:

options (BaseRendererOptions or None, default = None) – Format-specific rendering options. If None, default options will be used.

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

Render the AST to the specified output format.

This method must be implemented by all renderer subclasses. It should write the rendered output to a file or file-like object.

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

  • output (str, Path, or IO[bytes]) – Output destination. Can be: - File path (str or Path) - File-like object in binary mode

Raises:
  • RenderingError – If rendering fails

  • IOError – If output cannot be written

render_to_string(doc: Document) str

Render the AST to a string (if applicable).

This method is optional and should be implemented by renderers that produce text-based output formats.

Parameters:

doc (Document) – AST Document node to render

Returns:

Rendered document as a string

Return type:

str

Raises:

NotImplementedError – If the renderer does not support string output

render_to_bytes(doc: Document) bytes

Render the AST to bytes (if applicable).

This method is provided as a default implementation for binary renderers. It creates a BytesIO buffer, calls render() with it, and returns the bytes.

Binary renderers can use this default implementation if their render() method properly supports IO[bytes] output. Alternatively, they can override this method for custom behavior.

Parameters:

doc (Document) – AST Document node to render

Returns:

Rendered document as bytes

Return type:

bytes

Raises:

NotImplementedError – If the renderer does not support binary output

Notes

The returned bytes can be used in various ways: - Write to file: Path(“out.ext”).write_bytes(result) - Pass to IO functions: BytesIO(result) - Send over network or process further

Examples

Default usage (if render() supports IO[bytes]):
>>> from all2md.renderers.docx import DocxRenderer
>>> from all2md.ast import Document, Paragraph, Text
>>> doc = Document(children=[Paragraph(content=[Text(content="test")])])
>>> renderer = DocxRenderer()
>>> content = renderer.render_to_bytes(doc)
>>> assert content.startswith(b'PK')  # DOCX is a ZIP file
static write_text_output(text: str, output: str | Path | IO[bytes] | IO[str]) None

Write text output to file or IO stream.

Helper method to handle text output writing for text-based renderers. Centralizes the logic for writing to different output destinations, automatically handling both text and binary streams.

Parameters:
  • text (str) – Rendered text to write

  • output (str, Path, IO[bytes], or IO[str]) – Output destination. Can be: - File path (str or Path) - File-like object in binary mode (IO[bytes]) - File-like object in text mode (IO[str])

Raises:
  • IOError – If output cannot be written

  • TypeError – If output type is not supported

Examples

Write to file:
>>> from all2md.renderers.base import BaseRenderer
>>> BaseRenderer.write_text_output("# Hello", "output.md")
Write to BytesIO:
>>> from io import BytesIO
>>> buffer = BytesIO()
>>> BaseRenderer.write_text_output("# Hello", buffer)
>>> print(buffer.getvalue())
b'# Hello'
Write to StringIO:
>>> from io import StringIO
>>> buffer = StringIO()
>>> BaseRenderer.write_text_output("# Hello", buffer)
>>> print(buffer.getvalue())
# Hello
class all2md.renderers.InlineContentMixin

Bases: object

Mixin providing inline content rendering pattern for text-based renderers.

This mixin provides the _render_inline_content() method, which is a common pattern used by text-based renderers to render inline nodes (like emphasis, strong, links) to a string by temporarily capturing their output.

The implementing class must have: - A _output attribute (list[str]) for accumulating output - Visitor methods that append to _output

Examples

Using the mixin in a renderer:

>>> from all2md.renderers.base import BaseRenderer, InlineContentMixin
>>> from all2md.ast.visitors import NodeVisitor
>>> from all2md.options.base import BaseRendererOptions
>>>
>>> class MyRenderer(NodeVisitor, InlineContentMixin, BaseRenderer):
...     def __init__(self, options=None):
...         BaseRenderer.__init__(self, options or BaseRendererOptions())
...         self._output = []
...
...     def visit_emphasis(self, node):
...         content = self._render_inline_content(node.content)
...         self._output.append(f"*{content}*")
class all2md.renderers.IpynbRenderer

Bases: BaseRenderer

Render an all2md AST document into a Jupyter notebook (ipynb).

Initialize the Jupyter notebook renderer.

Parameters:

options (IpynbRendererOptions or None, optional) – Renderer options for Jupyter notebooks

__init__(options: IpynbRendererOptions | None = None)

Initialize the Jupyter notebook renderer.

Parameters:

options (IpynbRendererOptions or None, optional) – Renderer options for Jupyter notebooks

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

Render the AST document to a file path or binary stream.

render_to_string(doc: Document) str

Render the AST document to an in-memory JSON string.

visit_comment(node: Comment) None

Render a Comment node (no-op, handled by markdown renderer).

Parameters:

node (Comment) – Comment to render

Notes

Comments are handled by the MarkdownRenderer which is used to render markdown cell content. This method exists only to satisfy the visitor pattern but is never called during normal rendering flow.

visit_comment_inline(node: CommentInline) None

Render a CommentInline node (no-op, handled by markdown renderer).

Parameters:

node (CommentInline) – Inline comment to render

Notes

Inline comments are handled by the MarkdownRenderer which is used to render markdown cell content. This method exists only to satisfy the visitor pattern but is never called during normal rendering flow.

class all2md.renderers.JinjaRenderer

Bases: BaseRenderer

Render AST using Jinja2 templates.

This renderer provides maximum flexibility by allowing users to define custom output formats using Jinja2 templates. Templates have full access to the document AST and can use helper filters and functions for common operations.

Parameters:

options (JinjaRendererOptions or None, default = None) – Jinja2 rendering options including template path and configuration

Examples

Render using a template file:
>>> from all2md.renderers.jinja import JinjaRenderer
>>> from all2md.options import JinjaRendererOptions
>>> options = JinjaRendererOptions(
...     template_file="templates/docbook.xml.jinja2",
...     escape_strategy="xml"
... )
>>> renderer = JinjaRenderer(options)
>>> output = renderer.render_to_string(document)
Render using an inline template:
>>> template = "Title: {{ metadata.title }}"
>>> options = JinjaRendererOptions(template_string=template)
>>> renderer = JinjaRenderer(options)
>>> output = renderer.render_to_string(document)

Initialize the Jinja2 renderer with options.

__init__(options: JinjaRendererOptions | None = None)

Initialize the Jinja2 renderer with options.

render_to_string(document: Document) str

Render document to string using Jinja2 template.

Parameters:

document (Document) – Document to render

Returns:

Rendered output

Return type:

str

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

Render document to file or file-like object.

Parameters:
  • doc (Document) – Document to render

  • output (str, Path, or IO[bytes]) – Output destination

class all2md.renderers.MarkdownRenderer

Bases: NodeVisitor, InlineContentMixin, BaseRenderer

Render AST nodes to markdown text.

This class implements the visitor pattern to traverse an AST and generate markdown output. It supports multiple markdown flavors and configurable rendering options.

Parameters:

options (MarkdownOptions or None, default = None) – Markdown formatting options (shared with parsers)

Examples

Basic usage:

>>> from all2md.ast import Document, Heading, Text
>>> from all2md.options import MarkdownRendererOptions
>>> from all2md.renderers.markdown import MarkdownRenderer
>>> doc = Document(children=[
...     Heading(level=1, content=[Text(content="Title")])
... ])
>>> options = MarkdownRendererOptions(flavor="gfm")
>>> renderer = MarkdownRenderer(options)
>>> markdown = renderer.render_to_string(doc)
>>> print(markdown)
# Title

Initialize the Markdown renderer with options.

__init__(options: MarkdownRendererOptions | None = None)

Initialize the Markdown renderer with options.

render_to_string(document: Document) str

Render a document AST to markdown string.

Parameters:

document (Document) – The document node to render

Returns:

Markdown text

Return type:

str

visit_document(node: Document) None

Render a Document node.

Parameters:

node (Document) – Document to render

visit_heading(node: Heading) None

Render a Heading node.

Parameters:

node (Heading) – Heading to render

visit_paragraph(node: Paragraph) None

Render a Paragraph node.

Parameters:

node (Paragraph) – Paragraph to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

Parameters:

node (CodeBlock) – Code block to render

visit_block_quote(node: BlockQuote) None

Render a BlockQuote node.

Handles three cases:

  • A Material for MkDocs admonition (source_format == "mkdocs") rendered to a flavor that supports admonitions becomes a native !!! / ??? block.

  • Any other admonition (RST, or mkdocs on a non-supporting flavor) degrades to a quote with a bold label (e.g. > **Note:** ...).

  • A plain block quote is quoted as usual.

Parameters:

node (BlockQuote) – Block quote 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_table(node: Table) None

Render a Table node.

Parameters:

node (Table) – Table to render

visit_table_row(node: TableRow) None

Render a TableRow node.

Parameters:

node (TableRow) – Table row to render

visit_table_cell(node: TableCell) None

Render a TableCell node.

Parameters:

node (TableCell) – Table cell to render

visit_thematic_break(node: ThematicBreak) None

Render a ThematicBreak node.

Parameters:

node (ThematicBreak) – Thematic break to render

visit_html_block(node: HTMLBlock) None

Render an HTMLBlock node.

Parameters:

node (HTMLBlock) – HTML block to render

visit_comment(node: Comment) None

Render a Comment node (block-level).

Parameters:

node (Comment) – Comment block to render

visit_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text to render

visit_emphasis(node: Emphasis) None

Render an Emphasis node.

Parameters:

node (Emphasis) – Emphasis to render

visit_strong(node: Strong) None

Render a Strong node.

Parameters:

node (Strong) – Strong to render

visit_code(node: Code) None

Render a Code node.

Parameters:

node (Code) – Code to render

visit_link(node: Link) None

Render a Link node.

Parameters:

node (Link) – Link to render

visit_image(node: Image) None

Render an Image node.

Parameters:

node (Image) – Image to render

visit_line_break(node: LineBreak) None

Render a LineBreak node.

Parameters:

node (LineBreak) – Line break to render

visit_strikethrough(node: Strikethrough) None

Render a Strikethrough node.

Parameters:

node (Strikethrough) – Strikethrough to render

visit_mark(node: Mark) None

Render a Mark (highlight) node.

Emits ==text== on flavors that support highlighting; otherwise falls back according to unsupported_inline_mode (plain text, forced == syntax, or an HTML <mark> tag).

Parameters:

node (Mark) – Mark to render

visit_underline(node: Underline) None

Render an Underline node.

Parameters:

node (Underline) – Underline to render

visit_superscript(node: Superscript) None

Render a Superscript node.

Parameters:

node (Superscript) – Superscript to render

visit_subscript(node: Subscript) None

Render a Subscript node.

Parameters:

node (Subscript) – Subscript to render

visit_html_inline(node: HTMLInline) None

Render an HTMLInline node.

Parameters:

node (HTMLInline) – Inline HTML to render

visit_comment_inline(node: CommentInline) None

Render a CommentInline node (inline).

Parameters:

node (CommentInline) – Inline comment to render

visit_footnote_reference(node: FootnoteReference) None

Render a FootnoteReference node.

Parameters:

node (FootnoteReference) – Footnote reference to render

visit_math_inline(node: MathInline) None

Render a MathInline node.

Parameters:

node (MathInline) – Inline math to render

visit_footnote_definition(node: FootnoteDefinition) None

Render a FootnoteDefinition node.

Parameters:

node (FootnoteDefinition) – Footnote definition to render

visit_definition_list(node: DefinitionList) None

Render a DefinitionList node.

Parameters:

node (DefinitionList) – Definition list to render

visit_definition_term(node: DefinitionTerm) None

Render a DefinitionTerm node.

Parameters:

node (DefinitionTerm) – Definition term to render

visit_definition_description(node: DefinitionDescription) None

Render a DefinitionDescription node.

Parameters:

node (DefinitionDescription) – Definition description to render

visit_math_block(node: MathBlock) None

Render a MathBlock node.

Parameters:

node (MathBlock) – Math block to render

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

Render AST to markdown and write to output.

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

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

class all2md.renderers.MediaWikiRenderer

Bases: NodeVisitor, InlineContentMixin, BaseRenderer

Render AST nodes to MediaWiki markup text.

This class implements the visitor pattern to traverse an AST and generate MediaWiki output suitable for Wikipedia and other MediaWiki-based wikis.

Parameters:

options (MediaWikiOptions or None, default = None) – MediaWiki rendering options

Examples

Basic usage:

>>> from all2md.ast import Document, Heading, Text
>>> from all2md.renderers.mediawiki import MediaWikiRenderer
>>> doc = Document(children=[
...     Heading(level=1, content=[Text(content="Title")])
... ])
>>> renderer = MediaWikiRenderer()
>>> wiki_text = renderer.render_to_string(doc)
>>> print(wiki_text)
= Title =

Initialize the MediaWiki renderer with options.

__init__(options: MediaWikiOptions | None = None)

Initialize the MediaWiki renderer with options.

render_to_string(document: Document) str

Render a document AST to MediaWiki markup string.

Parameters:

document (Document) – The document node to render

Returns:

MediaWiki markup text

Return type:

str

visit_document(node: Document) None

Render a Document node.

Parameters:

node (Document) – Document to render

visit_heading(node: Heading) None

Render a Heading node.

Parameters:

node (Heading) – Heading to render

visit_paragraph(node: Paragraph) None

Render a Paragraph node.

Parameters:

node (Paragraph) – Paragraph to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

Parameters:

node (CodeBlock) – Code block to render

visit_block_quote(node: BlockQuote) None

Render a BlockQuote node.

Parameters:

node (BlockQuote) – Block quote 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_table(node: Table) None

Render a Table node.

Parameters:

node (Table) – Table to render

visit_table_row(node: TableRow) None

Render a TableRow node (handled by visit_table).

Parameters:

node (TableRow) – Table row to render

visit_table_cell(node: TableCell) None

Render a TableCell node (handled by visit_table).

Parameters:

node (TableCell) – Table cell to render

visit_thematic_break(node: ThematicBreak) None

Render a ThematicBreak node.

Parameters:

node (ThematicBreak) – Thematic break to render

visit_html_block(node: HTMLBlock) None

Render an HTMLBlock node.

Parameters:

node (HTMLBlock) – HTML block to render

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: - “html”: Use HTML comment syntax <!– –> (default) - “visible”: Render as visible text - “ignore”: Skip comment entirely

visit_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text to render

visit_emphasis(node: Emphasis) None

Render an Emphasis node.

Parameters:

node (Emphasis) – Emphasis to render

visit_strong(node: Strong) None

Render a Strong node.

Parameters:

node (Strong) – Strong to render

visit_code(node: Code) None

Render a Code node.

Parameters:

node (Code) – Code to render

Notes

Code content is HTML-escaped to prevent markup injection and ensure special characters like <, >, and & display correctly.

visit_link(node: Link) None

Render a Link node.

Parameters:

node (Link) – Link to render

visit_image(node: Image) None

Render an Image node.

Parameters:

node (Image) – Image to render

Notes

MediaWiki image syntax: [[File:filename|options|caption]] - When image_thumb=True and caption_mode is configured, renders with caption - Caption can be derived from alt_text or title metadata - alt= attribute and caption text can be controlled separately via image_caption_mode

visit_line_break(node: LineBreak) None

Render a LineBreak node.

Parameters:

node (LineBreak) – Line break to render

visit_strikethrough(node: Strikethrough) None

Render a Strikethrough node.

Parameters:

node (Strikethrough) – Strikethrough to render

visit_underline(node: Underline) None

Render an Underline node.

Parameters:

node (Underline) – Underline to render

visit_superscript(node: Superscript) None

Render a Superscript node.

Parameters:

node (Superscript) – Superscript to render

visit_subscript(node: Subscript) None

Render a Subscript node.

Parameters:

node (Subscript) – Subscript to render

visit_html_inline(node: HTMLInline) None

Render an HTMLInline node.

Parameters:

node (HTMLInline) – Inline HTML to render

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: - “html”: Use HTML comment syntax <!– –> (default) - “visible”: Render as visible text - “ignore”: Skip comment entirely

visit_footnote_reference(node: FootnoteReference) None

Render a FootnoteReference node.

Parameters:

node (FootnoteReference) – Footnote reference to render

visit_footnote_definition(node: FootnoteDefinition) None

Render a FootnoteDefinition node.

Parameters:

node (FootnoteDefinition) – Footnote definition to render

visit_definition_list(node: DefinitionList) None

Render a DefinitionList node.

Parameters:

node (DefinitionList) – Definition list to render

visit_definition_term(node: DefinitionTerm) None

Render a DefinitionTerm node (handled by visit_definition_list).

Parameters:

node (DefinitionTerm) – Definition term to render

visit_definition_description(node: DefinitionDescription) None

Render a DefinitionDescription node (handled by visit_definition_list).

Parameters:

node (DefinitionDescription) – Definition description to render

visit_math_inline(node: MathInline) None

Render a MathInline node.

Parameters:

node (MathInline) – Inline math to render

visit_math_block(node: MathBlock) None

Render a MathBlock node.

Parameters:

node (MathBlock) – Math block to render

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

Render AST to MediaWiki markup and write to output.

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

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

class all2md.renderers.PlainTextRenderer

Bases: NodeVisitor, InlineContentMixin, BaseRenderer

Render AST nodes to plain, unformatted text.

This class implements the visitor pattern to traverse an AST and generate plain text output. All formatting is stripped, leaving only the text content. Structural elements like tables and lists are rendered as plain text with simple separators.

Parameters:

options (PlainTextOptions or None, default = None) – Plain text rendering options

Examples

Basic usage:

>>> from all2md.ast import Document, Heading, Text, Strong
>>> from all2md.renderers.plaintext import PlainTextRenderer
>>> from all2md.options import PlainTextOptions
>>> doc = Document(children=[
...     Heading(level=1, content=[
...         Text(content="Title with "),
...         Strong(content=[Text(content="bold")])
...     ])
... ])
>>> renderer = PlainTextRenderer()
>>> text = renderer.render_to_string(doc)
>>> print(text)
Title with bold

Initialize the plain text renderer with options.

__init__(options: PlainTextOptions | None = None)

Initialize the plain text renderer with options.

render_to_string(document: Document) str

Render a document AST to plain text string.

Parameters:

document (Document) – The document node to render

Returns:

Plain text output

Return type:

str

visit_document(node: Document) None

Render a Document node.

Parameters:

node (Document) – Document to render

visit_heading(node: Heading) None

Render a Heading node (extract text only).

Parameters:

node (Heading) – Heading to render

visit_paragraph(node: Paragraph) None

Render a Paragraph node.

Parameters:

node (Paragraph) – Paragraph to render

visit_code_block(node: CodeBlock) None

Render a CodeBlock node.

Parameters:

node (CodeBlock) – Code block to render

visit_block_quote(node: BlockQuote) None

Render a BlockQuote node (extract text only).

Parameters:

node (BlockQuote) – Block quote 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_table(node: Table) None

Render a Table node as plain text.

Parameters:

node (Table) – Table to render

visit_table_row(node: TableRow) None

Render a TableRow node (handled by visit_table).

Parameters:

node (TableRow) – Table row to render

visit_table_cell(node: TableCell) None

Render a TableCell node (handled by visit_table).

Parameters:

node (TableCell) – Table cell to render

visit_thematic_break(node: ThematicBreak) None

Render a ThematicBreak node (skip in plain text).

Parameters:

node (ThematicBreak) – Thematic break to render

visit_html_block(node: HTMLBlock) None

Render an HTMLBlock node (skip HTML in plain text).

Parameters:

node (HTMLBlock) – HTML block to render

visit_text(node: Text) None

Render a Text node.

Parameters:

node (Text) – Text to render

visit_emphasis(node: Emphasis) None

Render an Emphasis node (extract text only, ignore formatting).

Parameters:

node (Emphasis) – Emphasis to render

visit_strong(node: Strong) None

Render a Strong node (extract text only, ignore formatting).

Parameters:

node (Strong) – Strong to render

visit_code(node: Code) None

Render a Code node (extract text only).

Parameters:

node (Code) – Code to render

visit_link(node: Link) None

Render a Link node (extract text only, ignore URL).

Parameters:

node (Link) – Link to render

visit_image(node: Image) None

Render an Image node (use alt text only).

Parameters:

node (Image) – Image to render

visit_line_break(node: LineBreak) None

Render a LineBreak node.

Parameters:

node (LineBreak) – Line break to render

visit_strikethrough(node: Strikethrough) None

Render a Strikethrough node (extract text only, ignore formatting).

Parameters:

node (Strikethrough) – Strikethrough to render

visit_underline(node: Underline) None

Render an Underline node (extract text only, ignore formatting).

Parameters:

node (Underline) – Underline to render

visit_superscript(node: Superscript) None

Render a Superscript node (extract text only, ignore formatting).

Parameters:

node (Superscript) – Superscript to render

visit_subscript(node: Subscript) None

Render a Subscript node (extract text only, ignore formatting).

Parameters:

node (Subscript) – Subscript to render

visit_html_inline(node: HTMLInline) None

Render an HTMLInline node (skip HTML in plain text).

Parameters:

node (HTMLInline) – Inline HTML to render

visit_footnote_reference(node: FootnoteReference) None

Render a FootnoteReference node (skip in plain text).

Parameters:

node (FootnoteReference) – Footnote reference to render

visit_math_inline(node: MathInline) None

Render a MathInline node (extract text representation).

Parameters:

node (MathInline) – Inline math to render

visit_footnote_definition(node: FootnoteDefinition) None

Render a FootnoteDefinition node (skip in plain text).

Parameters:

node (FootnoteDefinition) – Footnote definition to render

visit_definition_list(node: DefinitionList) None

Render a DefinitionList node.

Parameters:

node (DefinitionList) – Definition list to render

visit_definition_term(node: DefinitionTerm) None

Render a DefinitionTerm node (handled by visit_definition_list).

Parameters:

node (DefinitionTerm) – Definition term to render

visit_definition_description(node: DefinitionDescription) None

Render a DefinitionDescription node (handled by visit_definition_list).

Parameters:

node (DefinitionDescription) – Definition description to render

visit_math_block(node: MathBlock) None

Render a MathBlock node (extract text representation).

Parameters:

node (MathBlock) – Math block to render

visit_comment(node: Comment) None

Render a Comment node according to comment_mode option.

Parameters:

node (Comment) – Comment to render

Notes

Supports multiple rendering modes via comment_mode option: - “visible”: Render as bracketed text - “ignore”: Skip comment entirely (default)

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: - “visible”: Render as bracketed text - “ignore”: Skip comment entirely (default)

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

Render AST to plain text and write to output.

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

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

For renderer documentation organized by format category, see Renderers.