Defined behavior
A specification and shared input/output tests define how the language works.
Syntax for headings, tables, captions, references, math, and optional extensions.
# Release notes
This has /italic/, *bold*, _underline_, ~strikethrough~, and =highlight=.
- [x] Publish the release
- [ ] Update the package
|= Package |= Version |
| carve-js | 0.1 |
^ Published packages
::: note
Containers can represent admonitions and application-defined blocks.
:::| Construct | Syntax |
|---|---|
| Heading | # Heading |
| Link | [text](https://example.com) |
| Image |  |
| Cross-reference | </#heading-id> |
| Footnote | [^note] |
| Inline math | $`x + y` |
| Attributes | {#id .class key=value} |
| Extension | :name[content] |
The cheat sheet lists every construct. Examples show Carve source beside its HTML output.
=html passthrough can be disabled for untrusted input.npm install @markup-carve/carve
composer require markup-carve/carve-php
cargo install carve-langimport { carveToHtml } from '@markup-carve/carve'
const html = carveToHtml('/italic/ and *bold*')See Get Started for PHP, the Rust CLI, WebAssembly, and language bindings.
Carve is a separate language, not a Markdown extension. Use a Carve parser for .crv files. The Markdown migration guide lists syntax differences and Format conversion describes which content can be preserved.
Core syntax is always available. Some features, including citations, automatic URL linking, and diagrams, must be enabled separately. The optional features table lists their availability.
/italic/ syntax, TODO states|= table headersCarve 0.1 is specified. Minor releases may change the grammar before 1.0; see Versioning.