:underline[important]{color=#bd4c31}
Choose the primitive, then tune only the attributes the document needs.
Rougher Stuff
@rougher-stuff/markdown
Extend familiar Markdown with highlights, semantic roles, annotated sections, and connected notes—without turning the document into presentation code.
:highlight[the useful part]
:warning[breaking change]
:::box{padding=8}
01 / Live document
Edit the source. The parser creates first-class annotation nodes, then the existing Rough Notation runtime measures and draws the result.
02 / One grammar
Appearance directives are explicit. Semantic directives defer color and shape to the active theme.
:underline[important]{color=#bd4c31}
Choose the primitive, then tune only the attributes the document needs.
:warning[Deprecated API]
Keep meaning in the source and let a reusable theme choose the treatment.
:::mark{type=box}
## Whole section
:::
Measure a complete Markdown block instead of flattening it into inline text.
:ref[target]{id=api}
:::callout{for=api}
Connect explanatory content to its target with stable document identifiers.
03 / Progressive by design
Safe semantic HTML is the baseline. Geometry and hand-drawn SVG arrive as progressive enhancement after layout.
Read the package docsStart with one mark
pnpm add @rougher-stuff/markdown @rougher-stuff/roughjs