Skip to main content

python-markdown-typst

Build and Release

A Python Markdown extension that compiles typst fenced code blocks into inline SVG images.

Features

  • Detects fenced code blocks labeled as typst with typst-preview in the first line.
  • Compiles the Typst code into SVG format using the typst compiler.

Installation

pip install markdown-typst

Usage

import markdown
from markdown_typst.typst_extension import TypstExtension

md = markdown.Markdown(extensions=[TypstExtension()])
input_text = '''

# This is a markdown title

```typst
// typst-preview
// This is a simple Typst document
= This is a typst title
```

'''

html = md.convert(input_text)
with open('output.html', 'w') as f:
    f.write(html)

It is recommended to use the following Typst code to set the page size and margins:

#set page(width: auto, height: auto, margin: .5cm)

Integrate Typst Rendering with MkDocs

To enable Typst syntax rendering in MkDocs, add the following lines to your mkdocs.yml:

markdown_extensions:
  - typst

Example Usage

# Hello, typst

!!! note  
    !!! warning
        ```typst
        // typst-preview
        // Code from https://raw.githubusercontent.com/typst/packages/main/packages/preview/cetz/0.3.2/gallery/waves.typ
        #import "@preview/cetz:0.3.2": canvas, draw, vector, matrix
        
        #set page(width: auto, height: auto, margin: .5cm)
        
        #canvas({
          import draw: *
        
          ortho(y: -30deg, x: 30deg, {
            on-xz({
              grid((0,-2), (8,2), stroke: gray + .5pt)
            })
        
            // Draw a sine wave on the xy plane
            let wave(amplitude: 1, fill: none, phases: 2, scale: 8, samples: 100) = {
              line(..(for x in range(0, samples + 1) {
                let x = x / samples
                let p = (2 * phases * calc.pi) * x
                ((x * scale, calc.sin(p) * amplitude),)
              }), fill: fill)
        
              let subdivs = 8
              for phase in range(0, phases) {
                let x = phase / phases
                for div in range(1, subdivs + 1) {
                  let p = 2 * calc.pi * (div / subdivs)
                  let y = calc.sin(p) * amplitude
                  let x = x * scale + div / subdivs * scale / phases
                  line((x, 0), (x, y), stroke: rgb(0, 0, 0, 150) + .5pt)
                }
              }
            }
        
            on-xy({
              wave(amplitude: 1.6, fill: rgb(0, 0, 255, 50))
            })
            on-xz({
              wave(amplitude: 1, fill: rgb(255, 0, 0, 50))
            })
          })
        })
        ```

snapshot1

Requirements

  • markdown
  • typst

License

MIT License

Metadata

Release files for markdown-typst 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for markdown-typst 0.1.4
File Size Uploaded
markdown_typst-0.1.4.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for markdown-typst 0.1.4
File Interpreter ABI Platform
markdown_typst-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 10.0 kB

Release files / markdown_typst-0.1.4.tar.gz

Download URL markdown_typst-0.1.4.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
cbf2eebd893aadc4afe8d817ed5e380c2701edee6fdb23ee55445ed258c5aec7
BLAKE2b-256 checksum
How to use checksums
a8d57b6b463940bc1ed33c782b42c37911d5a45ab707120f9e5bea4009c9c02b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / markdown_typst-0.1.4-py3-none-any.whl

Download URL markdown_typst-0.1.4-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b2badd071ffe884cc3a3275e616429912528272a76157cf7d2b4eef2f8ffeed1
BLAKE2b-256 checksum
How to use checksums
3d021711b46c2d8484306572e5adb1c0f5552f101ae4c36b5af3da699c31f814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page