Skip to main content

IntentText for Writers

You want to write, not fight formatting. IntentText gives you plain text in → professional documents out.

Markdown vs .it

If you write in Markdown today, .it will feel familiar — same plain-text comfort, same inline *bold*/_italic_. The difference is everything Markdown can't do once a piece matters: number your figures, build a real bibliography, lay out for print, write right-to-left, and seal the final version so it can be verified later.

You want…MarkdownIntentText
Headings & prose#, ##, bare textsection: / sub:, bare text (text: is optional)
Bold / italic / codeYesYes — same inline syntax
Numbered, captioned figuresNo (raw ![]() only)figure: — numbered, captioned, referenceable
Citations / bibliographyNocite: — queryable custom citation block (keyword=cite)
Footnotes, epigraphs, bylineExtension-dependentx-writer: (footnote, epigraph, byline, dedication)
Print / PDF layoutNopage: / font: / header: / footer: → real PDF
ThemesDepends on the renderer8 built-in (editorial, warm, minimal, …)
Right-to-left / ArabicAwkwardFirst-class — write keywords in Arabic, RTL flips automatically
Seal the final versionNosign: / freeze: — tamper-evident, verifiable offline

You don't give up the Markdown feel — you gain everything publishing-grade on top of it.

Writer-friendly keywords

You don't need to memorize the full language. Writers reach for these handful first — and that's nearly all of them:

You want…Keyword
A paragraphtext: (or just write bare prose — text: is optional)
Section headingsection:
Subsection headingsub:
Quotationquote:
Task itemtask:

These are canonical keywords with guaranteed meaning. There are no synonym aliases — so any word that isn't reserved (like note:, aside:, verse:) is reliably your own custom block, never silently reinterpreted. That's the open vocabulary: invent a keyword and it's yours, collision-free.

The canonical keywords also have 32 Arabic (localized) keyword names (عنوان: for title:, نص: for text:, اقتباس: for quote:, …) — first-class names that resolve to the same canonical keyword and are re-emitted exactly as you wrote them, so an Arabic manuscript stays Arabic. See the Keywords Reference.

Write an article

title: The Future of Structured Documents
summary: Why plain text formats are making a comeback
meta: | author: Elena Vasquez | date: 2026-03-15 | tags: opinion, technology

section: The Problem
Every organization stores critical information in formats that can’t be searched, can’t be queried, and can’t be verified.
A contract in Word is just a blob of styled text. The deadline on page 12? Good luck finding it.

section: The Solution
Structured plain text — where every line declares its intent — is the answer that’s been hiding in plain sight.
quote: The best format is the one you can still read in 50 years. | by: Knuth, 1984

section: Sources
cite: Structured Documents and the Future of Computing | url: https://arxiv.org/example | author: Chen, Wei | date: 2025
cite: Open Formats in Enterprise | url: https://openstandards.org/example | author: Thompson, Ada | date: 2024

Write in Arabic — a first-class manuscript story

IntentText isn't English-with-a-translation-layer. The canonical keywords have 32 Arabic (localized) keyword names, and they round-trip as written — an Arabic manuscript stays Arabic through parse, edit, and save (and a sealed Arabic document keeps its hash). Direction handles itself: set dir: rtl (or just use Arabic) and headers, two-sided rows, and lists flip.

عنوان: مقدمة في الوثائق المنظمة
ملخص: لماذا يعود النص العادي إلى الواجهة
بيانات: | dir: rtl | theme: editorial

قسم: المشكلة
نص: تُخزَّن المعلومات الحساسة في صيغ لا يمكن البحث فيها ولا التحقق منها.
اقتباس: أفضل صيغة هي التي ما زلت تستطيع قراءتها بعد خمسين عاما. | by: كنوث، 1984

Mixed Arabic/English (a quote, a code block, a Latin term) renders correctly in the same document — bidi is handled per run, not per file. See the full Arabic keyword table.

Add figures with captions

figure: gives you numbered, captioned images — unlike image: which is inline and unnumbered:

figure: The IntentText document lifecycle | src: ./images/lifecycle.png | num: 1 | caption: Documents progress from draft to sealed, with optional formal amendments.
figure: Query architecture | src: ./images/query-arch.png | num: 2 | caption: Shallow indexes compose automatically across nested folders.
KeywordWhat it does
image:Inline image, no number, no caption, flows with text
figure:Numbered, captioned, referenceable, floats in print

Define terms

Use def: near the first use of a term, or gather definitions in a glossary section:

Inline (near first use):

The document enters the sealed state after freeze.
def: Sealed | meaning: A document whose content hash has been locked with a SHA-256 seal. Any content modification breaks the seal; restyling and comments do not.

Grouped (formal glossary):

section: Definitions
def: Sealed | meaning: A document whose content hash has been locked with a SHA-256 seal.
def: Amendment | meaning: A formal, additive change to a frozen document that preserves the original seal.
def: Shallow Index | meaning: A per-folder index that only catalogs files in its own directory.

Apply themes

8 built-in themes transform your document instantly:

dotit article.it --html --theme editorial
dotit article.it --html --theme warm
dotit article.it --print --theme minimal
ThemeBest for
corporateBusiness documents, quarterly reports
minimalClean, distraction-free reading
warmArticles, newsletters, personal documents
technicalAPI docs, specs, engineering reports
printOptimized for paper output
legalContracts, policies, formal agreements
editorialMagazine-style articles, long-form content
darkScreen-optimized dark mode

Export to PDF

One command (writes article.pdf next to the source; requires puppeteer):

dotit article.it --theme editorial --pdf

The print renderer reads font: and page: blocks for typography and layout:

font: | family: Georgia | size: 12pt | leading: 1.8
page: | size: A4 | margin: 25mm
header: | right: The Future of Structured Documents
footer: | center: Page {{page}} of {{pages}}

The font: block sets the body family, size, and leading; page: sets the sheet size and margin; header:/footer: fill the left/center/right print zones.

Citations and sources

cite: is a recommended custom keyword (it parses as a typed custom block, not a reserved keyword). Use it for citations and authority references — they render as labeled [cite] blocks and stay queryable by keyword=cite, so you can collect them across documents:

cite: The Pragmatic Programmer | author: Hunt, Thomas | date: 2019 | url: https://pragprog.com/titles/tpp20/

Long-form & editorial extras (x-writer:)

For manuscript furniture beyond the core set, the x-writer: namespace adds stable publishing keywords — they round-trip and render, without enlarging the canonical contract:

x-writer: byline | author: Elena Vasquez | date: 2026-03-15
x-writer: epigraph | text: All happy families are alike. | by: Tolstoy
x-writer: footnote | id: 1 | text: See appendix B for the full dataset.
x-writer: dedication | text: For the open-format faithful.

Available: byline, figure, caption, footnote, epigraph, dedication. See Extension keywords.

Inline formatting

Within any block, use:

SyntaxResult
*text*bold
_text_italic
~text~strikethrough
```text```inline code
`text`label / badge pill
{text}label / badge pill
^text^highlighted
[[text]]inline note
@personmention
#topictag

Code blocks

code: works like any other keyword — triple backticks delimit the code value:

Single-line:

code: ```console.log("Hello, World!")``` | lang: javascript

Multi-line:

code: ```
def greet(name):
print(f"Hello, {name}")
``` | lang: python

Inline code — use triple backticks within any text block:

Run ```npm install``` to set up the project.

The editorial workflow

  1. Write in .it — plain text, any editor
  2. Preview with dotit article.it --html --theme editorial
  3. Get feedback, revise
  4. track: to activate history
  5. approve: for editorial sign-off
  6. sign: / freeze: to seal the published version — tamper-evident and verifiable offline (restyling a sealed piece is still free; only a content edit breaks the seal)
  7. Export with --pdf (or PAdES / PDF/A for an archival, signed copy)
  8. Commit the .it source to version control — it stays a plain, readable file

Related: