4. Sintaxis básica {#4-sintaxis-básica}
Convención de compatibilidad usada a partir de aquí: 🟢 = Markdown original / CommonMark; 🟡 = extensión extendida (GFM u otros); 🔴 = depende de la plataforma.
4.1 Títulos {#41-títulos}
Sintaxis: estilo ATX (# a ######) 🟢 y estilo Setext (subrayado con = o -, solo niveles 1 y 2) 🟢.
# Título nivel 1
## Título nivel 2
### Título nivel 3
#### Título nivel 4
##### Título nivel 5
###### Título nivel 6
Título Setext 1
===============
Título Setext 2
---------------
Resultado: seis niveles de título (<h1>…<h6>).
Observaciones:
- CommonMark exige un espacio tras
#(#Títulono es título en CommonMark; algunos dialectos antiguos sí lo aceptaban). - Usa un único
#(H1) por documento y no saltes niveles (de H2 a H4). - Deja una línea en blanco antes y después.
4.2 Párrafos {#42-párrafos}
Sintaxis: uno o más renglones de texto seguidos, separados por líneas en blanco 🟢.
Este es el primer párrafo.
Sigue en el mismo párrafo.
Este es el segundo párrafo.
Resultado: dos <p>. El salto de línea simple dentro de un párrafo no genera un salto visible (se trata como espacio).
Observaciones: no sangres párrafos con espacios; con 4 o más espacios se interpreta como bloque de código indentado.
4.3 Saltos de línea {#43-saltos-de-línea}
| Método | Sintaxis | Compatibilidad |
|---|---|---|
| Dos espacios al final de línea | línea·· (↵) |
🟢 |
| Barra invertida al final | línea\ (↵) |
🟢 CommonMark |
| Etiqueta HTML | línea<br> |
🟢 (HTML permitido) |
Primera línea
Segunda línea (dos espacios al final de la anterior)
Otra primera línea\
Otra segunda línea
Observaciones: los espacios finales son invisibles y se pierden fácilmente en editores que recortan espacios; la barra invertida es más robusta. Algunas plataformas (comentarios de GitHub) convierten saltos simples en <br>; los archivos .md renderizados no.
4.4 Énfasis {#44-énfasis}
*cursiva* o _cursiva_
**negrita** o __negrita__
***negrita y cursiva*** o ___negrita y cursiva___
~~tachado~~
| Estilo | Resultado | Compatibilidad |
|---|---|---|
| Cursiva | texto | 🟢 |
| Negrita | texto | 🟢 |
| Negrita + cursiva | texto | 🟢 |
| Tachado | 🟡 GFM (no está en CommonMark ni en el original) |
Observaciones: el guion bajo dentro de palabras (snake_case_word) no activa cursiva en CommonMark; el asterisco sí funciona dentro de palabras (in*tra*palabra).
4.5 Citas {#45-citas}
> Esto es una cita.
>
> Segundo párrafo de la cita.
>
> > Cita anidada.
Resultado: <blockquote>. 🟢
Observaciones: dentro de una cita se pueden usar otros elementos (listas, código). Alertas de GitHub (> [!NOTE]) son una extensión de GitHub, no Markdown estándar (véase sección 10).
4.6 Listas {#46-listas}
Listas no ordenadas 🟢
- Elemento A
- Elemento B
* También con asterisco
+ O con signo más
Listas ordenadas 🟢
1. Primero
2. Segundo
3. Tercero
CommonMark usa el número inicial de la lista; los siguientes números se ignoran (1. 1. 1. produce 1, 2, 3). Un delimitador ) también es válido en CommonMark (1)).
Listas anidadas 🟢
1. Fase uno
- Tarea A
- Tarea B
2. Fase dos
1. Subpaso
Regla práctica: indenta el contenido anidado alineándolo con el texto del marcador del elemento padre (3 espacios tras 1. , 2 tras - ). Mezclar tabuladores y espacios provoca anidaciones erróneas.
Listas de tareas 🟡 (GFM)
- [ ] Pendiente
- [x] Hecha
Véase la sección 6.
Elementos con varios párrafos o bloques de código: indenta el contenido para que pertenezca al elemento:
1. Instalar dependencias:
```bash
npm install
```
2. Ejecutar:
```bash
npm start
```
Observaciones:
- Una línea en blanco entre elementos crea una lista “suelta” (con
<p>dentro de cada<li>). - No mezcles marcadores distintos en la misma lista: en CommonMark, pasar de
-a*inicia una lista nueva. - La indentación incoherente es una de las causas más frecuentes de listas mal renderizadas.
4.7 Enlaces {#47-enlaces}
[Texto del enlace](https://example.com "Título opcional")
<https://example.com>
[Enlace de referencia][ref]
[Otro por texto][]
[ref]: https://example.com "Título"
[Otro por texto]: https://example.org
[Archivo local](./docs/instalacion.md)
[Ir a una sección](#4-sintaxis-básica)
| Tipo | Sintaxis | Compatibilidad |
|---|---|---|
| Normal | [texto](url) |
🟢 |
| Con título | [texto](url "título") |
🟢 |
| Autoenlace | <https://…> |
🟢 |
| Referencia | [texto][id] + definición |
🟢 |
| URL “desnuda” autolinkeada | https://example.com |
🟡 GFM |
| Enlace a archivo | ruta relativa | 🟢 (la resolución depende del entorno) |
| Enlace a sección | #slug-del-título |
🔴 los slugs los genera cada plataforma |
Observaciones: los enlaces a secciones no están definidos por Markdown; dependen de cómo el renderizador genera los identificadores (sección 17).
4.8 Imágenes {#48-imágenes}

![Referencia][logo]
[logo]: ./img/logo.svg
[](https://example.com)
Observaciones: la sintaxis es la del enlace precedida de !. No hay forma estándar de indicar tamaño o alineación; usa HTML (<img width="300">) si la plataforma lo permite. Escribe siempre un alt descriptivo (sección 47).
4.9 Código {#49-código}
Código inline 🟢
Usa el comando `git status` para ver el estado.
Para incluir un acento grave: `` `código` ``
Bloques de código 🟢
Con valla (fenced, CommonMark) o con sangría de 4 espacios (indented, original):
```python
def saludar(nombre):
return f"Hola, {nombre}"
```
~~~bash
echo "También con virgulillas"
~~~
# Bloque indentado (4 espacios)
echo "indented"
Lenguajes y resaltado: el texto tras las comillas de apertura (info string) indica el lenguaje (python, rust, bash…). CommonMark solo recomienda usar la primera palabra como nombre de clase language-xxx; el resaltado de sintaxis lo aporta cada herramienta (GitHub, highlight.js, Prism, Shiki, Pygments…), por lo que los identificadores admitidos varían. 🔴
Observaciones: para mostrar un bloque que contenga ```, usa una valla más larga (cuatro o más backticks) o virgulillas.
4.10 Líneas horizontales {#410-líneas-horizontales}
---
***
___
Tres o más guiones, asteriscos o guiones bajos en una línea. 🟢 Ojo: --- bajo un texto lo convierte en título Setext de nivel 2; deja una línea en blanco antes.
4.11 Escape de caracteres {#411-escape-de-caracteres}
Usa la barra invertida \ para mostrar literalmente caracteres con significado:
\*no es cursiva\*
\# no es título
1\. no es lista
\[no es enlace\]
Caracteres escapables en CommonMark: \ ` * _ { } [ ] ( ) # + - . ! | < > ~ " $ % & ' , / : ; = ? @ ^(cualquier puntuación ASCII).
4.12 Caracteres especiales {#412-caracteres-especiales}
- Los caracteres Unicode (acentos,
ñ, emojis,€) funcionan directamente si el archivo se guarda en UTF-8. &y<se tratan de forma inteligente:AT&Ty4 < 5se convierten a&y<automáticamente cuando no forman parte de una entidad o etiqueta.- Emojis con shortcodes (
:smile:) son una extensión de plataformas como GitHub 🔴.
4.13 Entidades HTML {#413-entidades-html}
© <div> & © 😀
Resultado: © <div> & (espacio no separable) © 😀. 🟢 CommonMark reconoce entidades HTML (nombradas y numéricas).
| Entidad | Resultado |
|---|---|
© |
© |
< |
< |
> |
> |
& |
& |
|
espacio de no ruptura |
© |
© (referencia numérica) |
😀 |
😀 (referencia hexadecimal) |
Dentro de bloques de código las entidades no se interpretan: se muestran literalmente. 🟢
4.14 HTML dentro de Markdown: cuándo sí y cuándo no {#414-html-dentro-de-markdown-cuándo-sí-y-cuándo-no}
| Usar HTML cuando… | Evitarlo cuando… |
|---|---|
| Necesitas control de tamaño/alineación de imágenes | Existe sintaxis Markdown equivalente |
Quieres <details>/<summary> desplegables |
El documento debe renderizarse en entornos que eliminan HTML |
Necesitas <kbd>, <sub>, <sup>, <br> |
El contenido es de usuarios no confiables (véase sección 48) |
Insertas multimedia (<video>, <audio>) |
Se va a convertir a PDF/DOCX donde el HTML puede perderse |
Detalle completo en la sección 13.