# Páginas Markdown

> Escribe una página en Markdown: frontmatter para sus metadatos, directivas para los componentes.

Un archivo `.md` también es una página. Se sirve donde estaría su gemelo `.html`, `guide.md` en `/guide/`, y pasa por la misma compilación que una página HTML: componentes, matemáticas, bloques de código, inclusiones, la tabla de contenidos y la copia en Markdown para agentes.

````md
---
title: Getting started
description: Install and run it in a minute.
order: 1
---

# Getting started

Install it, then build the docs:

```sh title="Terminal"
npx gethtmlpress build docs
```
````

El Markdown es el de GitHub: tablas, listas de tareas, tachado, notas al pie y enlaces sueltos. El HTML en bruto funciona como en cualquier página, así que un componente `htmlpress-*` puede escribirse como etiqueta, con Markdown dentro tras una línea en blanco.

## Frontmatter

El YAML al principio del archivo fija lo que una página HTML fija en su `<head>`, con los mismos nombres: `title`, `description`, `order`, `label`, `icon`, `layout`, `sidebar`, `breadcrumbs`, `toc`, `date`, `author`, `keywords`, `image`, `language`, `path`, `source-url` y `source-action`, como se describe en [Frontmatter](/es/authoring/frontmatter/). `author` y `keywords` aceptan una lista, y `head` es HTML en bruto que se añade al `<head>` de la página:

```yaml
title: Release notes
author: [Ann, Bo]
keywords: [release, notes]
head: <link rel="alternate" type="application/rss+xml" href="/feed.xml">
```

Cualquier otra clave hace fallar la compilación, así que una errata nunca pasa por metadato.

## Componentes

Una directiva es un componente: `:::nombre` envuelve un bloque, `::nombre` ocupa una línea propia y `:nombre[etiqueta]` va dentro del texto. Los atributos van entre llaves. Las directivas son las de [Livemark](https://livemark.dev), así que una página de Livemark se lee igual aquí.

```md
:::warning[Back up first]
The build wipes its output folder.
:::

:::card{title="Install" href="/install/" icon="rocket"}
One command.
:::

The API is :badge[beta]{variant="warning"}.

### Write a page [step]
```

`:::note`, `tip`, `info`, `warning` y `danger` son avisos, con la etiqueta como título, y también lo es una alerta de GitHub, `> [!NOTE]`. `:::card`, `:::column` y `:::tab` seguidos se agrupan en tarjetas, columnas y pestañas; `:::details`, `:::filetree`, `::button`, `::toc`, `::video{type="youtube"}`, `::audio{type="soundcloud"}`, `:badge`, `:icon` y `:abbr` son el resto. Un encabezado admite `{#id}`, `[step]`, `[!toc]` (fuera del índice) y `[toc]` (solo en el índice). Cualquier otra directiva es el componente de ese nombre, también los del proyecto; una de bloque que no nombra ningún componente hace fallar la compilación, y dentro del texto algo como `note:important` sigue siendo texto.

## Bloques de código

El lenguaje de un bloque lo resalta, y lo que sigue al lenguaje toma los [atributos de bloque de código](/es/authoring/code-blocks/) sin su `data-`: `title`, `collapse`, `lines`, `line-numbers`, `add`, `remove`, `focus`, `error`, `warning` y `words`.

````md
```js title="build.js" lines="2" line-numbers
import { build } from "htmlpress"
await build("docs")
```
````

## Matemáticas, emoji y enlaces

`$…$` y `$$…$$` son [matemáticas](/es/authoring/advanced-syntax/), y los códigos como `:rocket:` son emoji, como en una página HTML. Enlaza otra página por su archivo, `[Setup](setup.md)`, y el enlace toma la URL de la página.

## Qué archivos son páginas

Sin `include`, cada archivo `.html` y `.md` del proyecto es una página, también un `README.md`. Excluye lo que no sea una página en el [archivo de configuración](/es/customization/configuration-file/). Estos archivos nunca son páginas:

- un `.md` junto a su página `.html`, que es la propia copia en Markdown de esa página para agentes, publicada en lugar de la generada;
- un `.md` que una página incluye con `<htmlpress-include>`, un fragmento, cuyas directivas y bloques de código funcionan como en una página;
- el `source` de una sección de changelog, que sus propias páginas muestran;
- las habilidades para agentes que nombra `skills`.
