Writing text
Type sentences. Separate paragraphs with a blank line. That is a complete Wit document — everything on this page is what to add when plain prose isn't enough.
Paragraphs
A blank line starts a new paragraph. A single newline inside a block is a soft wrap: HTML collapses it to a space, so the sentence flows on.
The reactor logged a coolant spike at 03:12. Two operators were on shift; neither had left the control room.
That renders two paragraphs — the first line, then the two soft-wrapped lines as a single flowing paragraph. One blank line or several makes no difference, and extra blank lines never produce empty paragraphs. A "blank" line counts even if it holds only spaces or tabs, so text pasted from an editor that leaves trailing whitespace still splits correctly.
Leading indentation, line length, and line endings (CRLF, CR, LF) carry no
meaning — they are normalised before paragraphs are split. Wit has no
Markdown-style block syntax, so a line that opens with -, *, >, or 1. is literal prose, not a list or
quote. Punctuation is never reserved: em-dashes, apostrophes, ampersands, and
percent signs render as themselves, and quotes stay straight (no smart-quote
substitution).
Bold and italic
Two inline marks: asterisks for bold, underscoresfor italic. Each wraps a run of text and can span several words.
The lens held _the last of the evening light_, and the flame *never wavered*.
A mark only fires when the character flanks the text from the outside. Pressed against a digit or a letter it stays literal, which is why arithmetic and identifiers are safe with emphasis left on:
The product 5*6*7 and the path file_name_here both stay plain text.
Nest them with bold on the outside: *_both_* gives
bold-and-italic. The reverse, _*x*_, leaves the inner asterisks
literal — the parser resolves the outer mark first, and italic-outside consumes
its span before the inner bold is seen.
Inline mark nodes
For anything past bold and italic, call the mark by name. Each is an inline node mapping to the same-named HTML element:
@code … code@ inline code: commands, identifiers, paths @u … u@ underline (reads as a link online — use sparingly) @s … s@ strike-through: retractions, "was X, now Y" @sub … sub@ subscript: chemical formulae, footnote marks @sup … sup@ superscript: exponents, ordinals, note refs @mark … mark@ highlight: draw the eye to a phrase @small … small@ small print, fine print @br a hard line break inside one paragraph
In a single run:
Call @code shutdown() code@ to scram; water is H@sub 2 sub@O, the area is 4@sup 2 sup@, an @s old figure s@ became a @mark new one mark@, with @small caveats small@ in the footnotes.
Call shutdown() to scram; water is
sub 2
O, the area is
42, an old figure became a new one, with caveats in the footnotes.
@br is self-closing and needs no body. A lone newline is a soft
break; use @br for a real one — an address block, a line of verse,
a signature:
Ada Lovelace @br 12 Analytical Way @br London
Ada Lovelace
12 Analytical Way
London
Markdown output has no reliable inline break, so @br degrades to a
space there. Keep to HTML or PDF when hard breaks matter.
Comments
A comment is a note that never reaches the reader — stripped before any output. A tilde followed by a space starts a line comment to end-of-line:
~ verify the coolant spike time against the incident log
The reactor logged a spike at 03:12.Two tildes open a block comment; the fence ~~/ closes it. It can
vanish mid-sentence or span many lines:
The bell ~~ TODO: confirm the year ~~/ rang on the hour. ~~ Draft note: this passage may move to chapter two. Ask the editor before cutting it. ~~/
Only the exact closing fence ends a block, so a home path like ~/Documents or a lone doubled tilde inside the block is safe content.
Escaping edge characters
Six characters lead a structural reader: @, #, |, *, _, and ~. A
backslash keeps any of them literal — the backslash is dropped, the character
stays.
Email me at ada\@example.org today. Write \#tag for a literal hash, C\# for the key. The range is 4\|8 amps, a literal \*asterisk\*, and \~ leads a line.
Email me at ada@example.org today. Write #tag for a literal hash, C# for the key. The range is 4|8 amps, a literal *asterisk*, and ~ leads a line.
The escape is only needed when the character is glued to a letter (or leads a
line, for # and ~). A character before a space or a digit
is already safe: "Meet me @ home", "in @2024", "it took ~6 hours", and
"x ~ y" all render as typed, no backslash required. Most prose needs no escapes
at all.
See also
- Structure — headings, lists, blocks, and how nodes nest.
- Components — the node form behind every mark, and defining your own.
- Mental model — the one node shape and the five layers above prose.