Escapar caracteres en Markdown: la barra invertida
Cómo mostrar asteriscos, guiones bajos, almohadillas o corchetes literalmente en Markdown sin que se interpreten como formato, usando la barra invertida o entidades HTML.
Antes o después te pasará: quieres escribir un asterisco y Markdown te lo convierte en cursiva. O escribes 2 * 3 * 4 y media frase se pone en itálica.
La solución es escapar el carácter con una barra invertida \.
Sintaxis
Pon una barra invertida justo delante del carácter que quieres mostrar literalmente:
\*Esto no está en cursiva\*
2 \* 3 \* 4 = 24
Un guion bajo\_dentro\_de una palabra
*Esto no está en cursiva*
2 * 3 * 4 = 24
Un guion bajo_dentro_de una palabra
La barra invertida desaparece del resultado final: solo sirve para decirle al procesador “el siguiente carácter es texto, no marcado”.
Qué caracteres se pueden escapar
Estos son los que Markdown reconoce como escapables:
| Carácter | Nombre | Sin escapar haría |
|---|---|---|
\ | barra invertida | escapar el siguiente |
` | acento grave | código en línea |
* | asterisco | énfasis o lista |
_ | guion bajo | énfasis |
{ } | llaves | atributos (en algunas extensiones) |
[ ] | corchetes | enlaces |
( ) | paréntesis | destino del enlace |
# | almohadilla | encabezado |
+ | signo de suma | lista |
- | guion | lista o línea horizontal |
. | punto | lista ordenada |
! | exclamación | imagen |
| | barra vertical | columna de tabla |
CommonMark amplía la lista a toda la puntuación ASCII, así que \@ o \% tampoco dan problemas, aunque no haga falta escaparlos.
⚠️ Escapar un carácter que no está en la lista no hace nada: la barra invertida se muestra tal cual. \a sale como \a, no como a.
La alternativa: código en línea
En muchos casos hay una solución más limpia que escapar carácter por carácter. Si vas a mostrar una secuencia entera de marcado, envuélvela en código en línea y nada de lo que haya dentro se interpretará:
Escapando: \*\*negrita\*\*
Con código: `**negrita**`
Escapando: **negrita**
Con código:
**negrita**
La diferencia es que el código en línea se muestra en monoespaciado. Si eso encaja con lo que quieres —normalmente sí, porque estás mostrando sintaxis—, es mucho más cómodo. Si necesitas el carácter en texto normal, escapa.
Casos que aparecen a menudo
Nombres de archivo con guiones bajos. mi_archivo_de_datos.csv se convierte en mi archivo de datos.csv con “archivo de” en cursiva. Aunque los guiones bajos no aplican énfasis dentro de una palabra en CommonMark, sí lo hacen en procesadores más antiguos. Lo seguro es usar código en línea: `mi_archivo_de_datos.csv`.
Multiplicaciones y notas al pie. 3 * 4 o Ver nota * necesitan escape.
Rutas de Windows. C:\Users\javi tiene barras invertidas que Markdown intenta interpretar como escapes. Escríbelo como código en línea o dobla las barras: C:\\Users\\javi.
Emoticonos y expresiones. :-) está bien, pero <3 puede confundirse con una etiqueta HTML abierta. Escápalo o usa código.
Almohadilla al principio de línea. Si un párrafo empieza por # —una etiqueta de red social, por ejemplo— se convierte en encabezado. \#hashtag lo resuelve.
Entidades HTML
Existe una tercera vía: usar la entidad HTML del carácter. Markdown la pasa tal cual al resultado y el navegador la interpreta.
| Carácter | Entidad |
|---|---|
< | < |
> | > |
& | & |
| ` | ` |
* | * |
_ | _ |
Es especialmente útil dentro de tablas, donde escapar la barra vertical con \| a veces da problemas según el procesador. Y es la única forma de mostrar < y > literalmente cuando el procesador admite HTML en línea y trataría <div> como una etiqueta real.
Errores frecuentes
Escapar dentro de un bloque de código. Es innecesario y contraproducente: dentro de un bloque de código nada se interpreta, así que la barra invertida se muestra literalmente y ensucia el ejemplo.
Escapar de más “por si acaso”. Enseñar \! o \. donde no hacen falta ensucia el original sin aportar nada. Escapa solo cuando compruebes que hay un problema real.
Olvidar que el escape es por carácter. \**negrita** solo escapa el primer asterisco; el resultado es * seguido de una negrita a medias. Hay que escapar los cuatro: \*\*negrita\*\*.
Compatibilidad
El escape con barra invertida está en el Markdown original y en todas las especificaciones posteriores. Es universal. Lo que varía es qué caracteres se aceptan: el original definía la lista corta de arriba, CommonMark la amplió a toda la puntuación ASCII.
Pruébalo
El escape es un caso donde la vista previa ahorra mucho tiempo de ensayo y error: pega el texto en el previsualizador de Markdown y ajusta hasta que el carácter aparezca como quieres.