ReStructured Manuscripts (RSM) markup language
Project description
Readable Science Markup (RSM)
The web-first authoring software for scientific manuscripts.
RSM is a suite of tools that aims to change the way scientific manuscripts are published and shared using modern web technology. Currently, most scientific publications are made with LaTeX and published in PDF format. While the capabilities of LaTeX and related software are undeniable, there are many pitfalls. RSM aims to cover this gap by allowing authors to create web-first manuscripts that enjoy the benefits of the modern web.
One of the main aims of the RSM suite is to provide scientists with tools to author
scientific manuscripts in a format that is web-ready in a transparent, native way that
is both easy to use and easy to learn. In particular, RSM is a suite of tools that
allow the user to write a plain text file (in a special .rsm format) and convert the
file into a web page (i.e. a set of .html, .css, and .js files). These files can then
be opened natively by any web browser on any device.
- Learn more in the official website.
- Try it out in the online editor.
- Get started with the docs.
Contributing
This project is under constant development and contributions are very much welcome! Please develop your feature or fix in a branch and submit a PR.
Rebuilding the Standalone JS Bundle
The file rsm/static/rsm-standalone.js is a pre-built bundle of all RSM JavaScript
for standalone HTML files (files that can be opened directly from file:// URLs).
If you modify any JS files in rsm/static/, you must regenerate this bundle:
npx esbuild rsm/static/onload.js --bundle --format=iife --global-name=RSM --outfile=rsm/static/rsm-standalone.js
This bundles onload.js and all its dependencies into a single IIFE that exposes
RSM.onload() and RSM.onrender(). The bundle is committed to the repo so there's
no runtime dependency on esbuild.
Development Setup
Prerequisites
Installation
Install uv
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or with pip
pip install uv
Install just
# macOS
brew install just
# Linux
cargo install just
# Windows
scoop install just
Clone and install rsm-markup
git clone --recurse-submodules https://github.com/leotrs/rsm.git
cd rsm
just install
This installs:
rsm-markupin editable mode (you can modify the code)tree-sitter-rsmfrom PyPI as a pre-built wheel (compiled grammar)- All development and documentation dependencies
Note: The tree-sitter-rsm grammar is installed from PyPI with platform-specific
pre-built binaries. You don't need to build anything unless you're modifying the grammar itself.
Common Tasks
just # List all available commands
just test # Run fast tests
just test-all # Run all tests including slow ones
just lint # Format code and run linter
just check # Run lint + tests (quality gate)
just docs-serve # Serve docs with live reload
Grammar Development
Most developers don't need this. Only use these steps if you're modifying the
tree-sitter grammar in tree-sitter-rsm/grammar.js.
# Install tree-sitter-rsm in editable mode (overrides PyPI version)
just install-local
# After modifying grammar.js in tree-sitter-rsm/
just build-grammar
The difference between just install and just install-local:
| Command | tree-sitter-rsm source |
Editable? | Use when |
|---|---|---|---|
just install |
PyPI wheel | No | Developing rsm-markup code (most common) |
just install-local |
Local submodule | Yes | Modifying the grammar itself |
Publishing
This project uses uv for dependency management and just for task automation.
To release a new version to PyPI:
- Update version in
pyproject.toml - Create a git tag:
git tag v0.3.3 && git push origin v0.3.3 - Publish:
just publish
Or use the GitHub Actions workflow by creating a release on GitHub.
Project details
Release history Release notifications | RSS feed
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 rsm_markup-0.4.0.tar.gz.
File metadata
- Download URL: rsm_markup-0.4.0.tar.gz
- Upload date:
- Size: 265.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
866e7c04e393d53feed082f74c98ada6d98369da336af8a5978cf8072551596a
|
|
| MD5 |
511b8eebadebffdc0a57d8c5daa2acc4
|
|
| BLAKE2b-256 |
088845af0f4abfe22912061796cbf76024e338ed26d7d31225392dd4654b65b0
|
File details
Details for the file rsm_markup-0.4.0-py3-none-any.whl.
File metadata
- Download URL: rsm_markup-0.4.0-py3-none-any.whl
- Upload date:
- Size: 253.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c4558124799eea89fed893f858237f893800b1c06bc5642949918fcef527233
|
|
| MD5 |
ccd01924a9d794ca278bdc39d68b2626
|
|
| BLAKE2b-256 |
616a070e3a6f35999b8785133716349fee240f557b62020a6cd2a1226412f707
|