A Markdown extension to compile typst code blocks to SVG.
Project description
python-markdown-typst
A Python Markdown extension that compiles typst fenced code blocks into inline SVG images.
Features
- Detects fenced code blocks labeled as
typstwithtypst-previewin the first line. - Compiles the Typst code into SVG format using the
typstcompiler.
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))
})
})
})
```
Requirements
markdowntypst
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file markdown_typst-0.1.4.tar.gz.
File metadata
- Download URL: markdown_typst-0.1.4.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbf2eebd893aadc4afe8d817ed5e380c2701edee6fdb23ee55445ed258c5aec7
|
|
| MD5 |
9ab861891ef35e69696484d7ca3a00e5
|
|
| BLAKE2b-256 |
a8d57b6b463940bc1ed33c782b42c37911d5a45ab707120f9e5bea4009c9c02b
|
File details
Details for the file markdown_typst-0.1.4-py3-none-any.whl.
File metadata
- Download URL: markdown_typst-0.1.4-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2badd071ffe884cc3a3275e616429912528272a76157cf7d2b4eef2f8ffeed1
|
|
| MD5 |
07165fef779e01c0f8431fc71e9fb8a1
|
|
| BLAKE2b-256 |
3d021711b46c2d8484306572e5adb1c0f5552f101ae4c36b5af3da699c31f814
|