# Authoring

> Write pages in plain HTML, with a few htmlpress-* components for documentation.

Htmlpress accepts plain semantic HTML out of the box, plus a small set of `htmlpress-*` components for what HTML has no element for: callouts, tabs, steps, cards, terminals, diagrams and more. A project is a folder: every `.html` and `.md` file in it is a page, and every other file is copied to the output as-is, at the same path. Dot-folders such as `.git/` and `.htmlpress/`, and `node_modules/`, are skipped. Each page below covers one area of the authoring surface.

Every example shows its HTML and its Markdown, the [Livemark](https://livemark.dev) syntax a `.md` page takes: pick one tab and every example on every page follows it.

## Features

### [HTML Pages](/authoring/html-pages/)

A full document or a fragment, its head as metadata, and any element, style or script.

### [Markdown Pages](/authoring/markdown-pages/)

Pages written in Markdown, with frontmatter and directives.

### [Frontmatter](/authoring/frontmatter/)

The `<head>` tags that set a page's title, description and order.

### [Headings](/authoring/headings/)

Generated IDs, custom anchors and the table of contents.

### [Links](/authoring/links/)

Internal, external and anchor links, URLs and the base path.

### [Media](/authoring/media/)

Images with zoom, video and audio embeds.

### [Text Formatting](/authoring/text-formatting/)

Bold, italic, lists, blockquotes, footnotes, definition lists and abbreviations.

### [Rich Elements](/authoring/rich-elements/)

Tables, callouts, tabs, steps, cards, badges, buttons and file trees.

### [Code Blocks](/authoring/code-blocks/)

Copy buttons, code tabs, package manager tabs and terminals.

### [Advanced Syntax](/authoring/advanced-syntax/)

Head tags, scripts, Mermaid diagrams and project components.
