Skip to main content

LayMesh

Reproducible scientific figures and precise physical layouts from readable code. Compose native plots, images, vector shapes, text and formulas in one editable .lay source; export SVG, PDF and PNG with a native Rust engine.

中文文档 · English documentation · Examples · Source

Install

Requires Python 3.10+. Version 0.3.0 is a stable release:

python -m pip install laymesh
python -m laymesh --version

Platform wheels bundle one native Rust executable and formula fonts. Rendering requires no Rust compiler, Node.js or TeX installation and downloads no engine or fonts. Body fonts come from the operating system or user-provided files; missing glyphs warn and display vector boxes. Supply font files with a layout for reproducible text across machines.

The standard installation includes NumPy, pandas, Matplotlib and IPython. Data bindings, Matplotlib Figure import and Jupyter magics are ready to use.

Wheel targets are Windows x64, macOS 14+ on Intel and Apple Silicon, and Linux x64 / arm64. Linux requires glibc at least as new as the wheel's manylinux_2_XX tag. Availability depends on uploaded wheels; Alpine/musl, 32-bit platforms and Windows ARM64 have no wheels. Plots are rendered by the native engine.

First figure: CLI

Save this complete source as figure.lay:

page = canvas(size=(120 mm, 90 mm), background="#ffffff")
p = plot(size=(110 mm, 80 mm),
         x=axis(label="Time (s)"), y=axis(label="Signal"))
p.line(x=[0, 1, 2, 3], y=[1, 3, 2, 4], label="Experiment")
p.legend(position="top_left")
page.add(p, offset=(5 mm, 5 mm))
laymesh validate figure.lay
laymesh inspect figure.lay --json
laymesh render figure.lay -o figure.svg
laymesh render figure.lay -o figure.pdf
laymesh render figure.lay -o figure.png --dpi 300

python -m laymesh invokes the same CLI. Geometry defaults to mm; typography and line widths default to pt. PNG DPI changes output pixels while preserving physical dimensions. .lay is a restricted standalone language, separate from Python.

Python API

from laymesh import render_source

source = '''
page = canvas(size=(120 mm, 90 mm), background="#ffffff")
p = plot(size=(110 mm, 80 mm),
         x=axis(label="Time (s)"), y=axis(label="Signal"))
p.line(x=[0, 1, 2, 3], y=[1, 3, 2, 4], label="Experiment")
p.legend(position="top_left")
page.add(p, offset=(5 mm, 5 mm))
'''
result = render_source(source, output="python-figure.svg", save_source="python-figure.lay")
print(result.output)

Use render_file("figure.lay", output="figure.pdf") to render existing source. Pass Python variables via namespace={"values": values} and refer to them with an unquoted {{values}} placeholder in .lay. Lists, dictionaries, NumPy arrays and pandas DataFrames can feed native plots. Matplotlib Figures can be placed as image assets. Keep calculations in Python; placeholders accept variable names, not expressions.

save_source saves expanded source and a sibling .assets/ directory for independent CLI rendering. Preserve that directory and any referenced modules, stylesheets or fonts with the .lay file. Python API and data examples.

Jupyter

Install LayMesh in the active kernel's environment. First run:

%load_ext laymesh.ipython
values = [1, 3, 2, 4]

Then run this separate cell:

%%laymesh -o notebook.pdf --save-source notebook.lay
page = canvas(size=(120 mm, 90 mm))
p = plot(size=(110 mm, 80 mm))
p.line(x=[0, 1, 2, 3], y={{values}})
page.add(p, offset=(5 mm, 5 mm))

The magic displays an SVG preview and writes the requested export. %laymesh figure.lay -o figure.png --dpi 300 renders an existing file. Both magics support --warnings show|hide. Notebook guide.

Scope

LayMesh provides physical units, anchors, cropping, paths, reusable modules, LCSS styles and native scientific plots including statistical, polar and radar layers. Layouts are single-page; panels use explicit positioning. Finish plot layers and decorations before placing a chart. Fixed plot areas keep their physical dimensions; decoration overflow emits a warning. Language reference.

中文

LayMesh 用一个可编辑的 .lay 文件组织科研图表、图片、文字与公式,导出 SVG、PDF、PNG。需要 Python 3.10+;运行 python -m pip install laymesh 即可安装全部功能,包括 NumPy/pandas 数据绑定和 Matplotlib Figure 导入。平台 wheel 内置原生 Rust 引擎和公式字体,正文使用系统或用户字体。支持 laymesh 命令、Python API 和 Jupyter Magic;保存源码与资源后可独立重新导出。中文入门。

LayMesh is MIT licensed. Bundled native dependencies, formula fonts and colormap data retain their own license texts inside the installed package. _vendor/manifest.json records engine, platform and build hashes; _vendor/licenses/manifest.json records dependency license provenance.

Metadata

Release files for laymesh 0.3.0

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

Built distributions (wheels)

Table of built distributions (wheels) for laymesh 0.3.0
File
laymesh-0.3.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
laymesh-0.3.0-py3-none-manylinux_2_35_x86_64.whl Python 3 none Linux glibc 2.35+ x86-64 Details
laymesh-0.3.0-py3-none-manylinux_2_35_aarch64.whl Python 3 none Linux glibc 2.35+ ARM64 Details
laymesh-0.3.0-py3-none-macosx_14_0_x86_64.whl Python 3 none macOS 14.0+ x86-64 Details
laymesh-0.3.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

Total release size: 29.7 MB

Release files / laymesh-0.3.0-py3-none-win_amd64.whl

Download URL laymesh-0.3.0-py3-none-win_amd64.whl
Size 5.9 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
ba541160a0805c7a0ae2848070d23864eb48ab97d3c86b11ebd95fc680a0485f
BLAKE2b-256 checksum
How to use checksums
d5d54d6ba92efc9d7f11edcf8bc7146c88c8d6ca2242bf70f8ac734723368d63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / laymesh-0.3.0-py3-none-manylinux_2_35_x86_64.whl

Download URL laymesh-0.3.0-py3-none-manylinux_2_35_x86_64.whl
Size 6.3 MB
Tags Linux glibc 2.35+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a716d1ac4ed6476bbd6c56a92c1646027b116f6cf39506140470d50e2170580d
BLAKE2b-256 checksum
How to use checksums
374d28f1cb074a3eb0dd1f813c1ee82d468f882ad398b231daa13d0954a9f3dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / laymesh-0.3.0-py3-none-manylinux_2_35_aarch64.whl

Download URL laymesh-0.3.0-py3-none-manylinux_2_35_aarch64.whl
Size 5.8 MB
Tags Linux glibc 2.35+ ARM64 Python 3
SHA-256 checksum
How to use checksums
5d17439fce50c795df22f172070ba72ea65a9a6a6097972881bfeaf24a165d1f
BLAKE2b-256 checksum
How to use checksums
4b3f0447d64e2a2fdc75cd5fd5e9f88a3d6e1e364aee52d671dfea432a2dc404
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / laymesh-0.3.0-py3-none-macosx_14_0_x86_64.whl

Download URL laymesh-0.3.0-py3-none-macosx_14_0_x86_64.whl
Size 6.1 MB
Tags Python 3 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
a2b24da71b4767af9131a1ed72d119a3e54decf0c1318195923e72d01a2fae0e
BLAKE2b-256 checksum
How to use checksums
45dd433d3d839613800757a2c1ee32892356c78aeaa56b739019c3f8ca8b739a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / laymesh-0.3.0-py3-none-macosx_14_0_arm64.whl

Download URL laymesh-0.3.0-py3-none-macosx_14_0_arm64.whl
Size 5.5 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
de9ebb80a5ab573d9e8bd828336b0ab9f78443a44cd4511a2e6e3b89637f5bca
BLAKE2b-256 checksum
How to use checksums
bfd5ea9a02efbe3d2d543bd694d5ee926b8db43d05dfffc0c046d8a81212e349
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

5 release files

This release

0.3.0 This release

5 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