You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vitepress/docs/es/guide/markdown.md

22 KiB

Extensiones Markdown

VitePress viene con Extensiones embutidas.

Anchors de Header

Los Header reciben la aplicación automáticamente de links anchor. La presentación de los anchor puede ser configurada usando la opción markdown.anchor.

Anchor personalizados

Para especificar un tag anchor personalizado para um header en vex de usar la generada automáticamente, adicione un sufijo al header:

# Usando anchors personalizados {#mi-anchor}

Esto permite que tenga un link del header como #mi-anchor en vez del default #usando-anchors-personalizados.

Ambos links internos y externos reciben tratamiento especial.

Los links internos son convertidos en links de enrutador para navegación SPA. Además de eso , todo archivo index.md contenido en cada subdirectorio será automáticamente convertido en index.html, con la URL correspondiente /.

Por ejemplo, dada la siguiente estructura de directorios:

.
├─ index.md
├─ foo
│  ├─ index.md
│  ├─ one.md
│  └─ two.md
└─ bar
   ├─ index.md
   ├─ three.md
   └─ four.md

Y suponiendo que está en foo/one.md:

[Página Inicial](/) <!-- lleva al usuario al index.md raiz -->
[foo](/foo/) <!-- lleva al usuario al index.html del directorio foo -->
[foo heading](./#heading) <!-- ancla al usuario a un header del archivo índice foo -->
[bar - three](../bar/three) <!-- puede omitir la extensión -->
[bar - three](../bar/three.md) <!-- puede adicionar .md -->
[bar - four](../bar/four.html) <!-- o puede adicionar .html -->

Sufijo de Página

Páginas y links internos son generados con el sufijo .html por defecto.

Links externos reciben automáticamente target="_blank" rel="noreferrer":

Frontmatter

YAML frontmatter es soportado por defecto:

---
título: Escribiendo como un Hacker
idioma: es-CO
---

Esos datos estarán disponibles para el resto de la página, junto con todos los componentes personalizados y de temas.

Para más detalles, vea Frontmatter.

Tablas al Estilo GitHub

Entrada

| Tablas        |    Son        | Geniales|
| ------------- | :-----------: |   ----: |
| col 3 está    | à direita     |   $1600 |
| col 2 está    | centralizada  |     $12 |
| listras       |   são legais  |      $1 |

Salida

Tablas Son Geniales
col 3 está à direita $1600
col 2 está centralizada $12
listras são legais $1

Emoji 🎉

Entrada

:tada: :100:

Salida

🎉 💯

Una lista de todos los emojis está disponible.

Tabla de Contenido (TOC)

Entrada

[[toc]]

Salida

toc

La presentación de TOC (Table of Contents) puede ser configurada usando la opción markdown.toc.

Contenedores Personalizados

Contenedores personalizados pueden ser definidos por sus tipos, títulos y contenidos.

Título por Defecto

Entrada

::: info
Este es un bloque de información.
:::

::: tip
Este es un aviso.
:::

::: warning
Esto es una advertencia.
:::

::: danger
Este es un aviso de peligro.
:::

::: details
Este es un bloque de detalles.
:::

Salida

::: info Este es un bloque de información. :::

::: tip Este es un aviso. :::

::: warning Esto es una advertencia. :::

::: danger Este es un aviso de peligro. :::

::: details Este es un bloque de detalles. :::

Título Personalizado

Puede definir un título personalizado adicionando el texto inmediatamente después del "tipo" del recipiente.

Entrada

::: danger STOP
Zona de peligro, no siga
:::

::: details Click para ver el código
```js
console.log('Hola, VitePress!')

:::

Salida

::: danger STOP Zona de peligro, no siga :::

::: details Click para ver el código

console.log('Hola, VitePress!')

:::

Además de eso, puede definir títulos personalizados globalmente adicionando el siguiente contenifo en el archivo de configuración del sitio, útil si no estuviera escribiendo en ingles:

// config.ts
export default defineConfig({
  // ...
  markdown: {
    container: {
      tipLabel: '提示',
      warningLabel: '警告',
      dangerLabel: '危险',
      infoLabel: '信息',
      detailsLabel: '详细信息'
    }
  }
  // ...
})

raw

Este es un recipiente especial que puee ser usado para evitar conflictos de estilo y enrutador con VitePress. Esto es especialmente útil al documentar bibliotecas de componentes. Puede tambien verificar whyframe para mejor aislamiento.

Sintaxis

::: raw
Envuelve en un <div class="vp-raw">
:::

La clase vp-raw también puede ser usada directamente en elementos. El aislamiento de estilo es actualmente opcional:

  • Instale postcss con su gestor de paquetes preferido:

    $ npm add -D postcss
    
  • Cree un archivo llamado docs/postcss.config.mjs y adicione lo siguiente:

    import { postcssIsolateStyles } from 'vitepress'
    
    export default {
      plugins: [postcssIsolateStyles()]
    }
    

    El utiliza postcss-prefix-selector internamente. Puede pasar opciones así:

    postcssIsolateStyles({
      includeFiles: [/vp-doc\.css/] // o padrão é /base\.css/
    })
    

Alertas en estilo GitHub

VitePress también soporta alertas en estilo GitHub para presentar como un bloque de llamada. Ellos serán presentados de la misma forma que elementos personalizados.

> [!NOTE]
> Destaca informaciones que los usuarios deben tener en consideración, incluso leyendo rapidamente.

> [!TIP]
> Informaciones opcionales para ayudar al usuario a tener más éxito.

> [!IMPORTANT]
> Informaciones cruciales necesarias par que los usuarios tengan éxito.

> [!WARNING]
> Contenido critico exigiendo atención inmediata del usuario debido a riesgos potenciales.

> [!CAUTION]
> Potenciales consecuencias negativas de una acción.

[!NOTE] Destaca informaciones que los usuarios deben tener en consideración, incluso leyendo rapidamente.

[!TIP] Informaciones opcionales para ayudar al usuario a tener más éxito.

[!IMPORTANT] Informaciones cruciales necesarias par que los usuarios tengan éxito.

[!WARNING] Contenido critico exigiendo atención inmediata del usuario debido a riesgos potenciales.

[!CAUTION] Potenciales consecuencias negativas de una acción.

Destaque de Sintaxis en Bloques de Código

VitePress utiliza Shiki para destacar la sintaxis del lenguaje en bloques de código Markdown, usando texto coloreado. Shiki soporta una amplia variedad de lenguajes de programación. Todo lo que necesita es adicionar un alias de lenguaje válido después de los backticks iniciales del bloque de código:

Entrada

```js
export default {
  name: 'MyComponent',
  // ...
}
```
```html
<ul>
  <li v-for="todo in todos" :key="todo.id">
    {{ todo.text }}
  </li>
</ul>
```

Salida

export default {
  name: 'MyComponent'
  // ...
}
<ul>
  <li v-for="todo in todos" :key="todo.id">
    {{ todo.text }}
  </li>
</ul>

Una lista de lenguajes válidas está disponible en el repositório Shiki.

También puede personalizar el tema de destaque de sintaxis en la configuración de la aplicación. Consulte las opciones markdown para más detalles.

Destaque de Linea en Bloques de Código

Entrada

```js{4}
export default {
  data () {
    return {
      msg: 'Destacado!'
    }
  }
}
```

Salida

export default {
  data () {
    return {
      msg: 'Destacado!'
    }
  }
}

Además de una única linea, puede también especificar múltiples lineas únicas, intervalos, o ambos:

  • Intervalos de linea: por ejemplo, {5-8}, {3-10}, {10-17}
  • Múltiples lineas únicas: por ejemplo, {4,7,9}
  • Intervalos de linea y lineas únicas: por ejemplo, {4,7-13,16,23-27,40}

Entrada

```js{1,4,6-8}
export default { // Destacado
  data () {
    return {
      msg: `Destacado!
      Esta linea no está destacada,
      pero esta y las próximas están.`,
      motd: 'VitePress es increible',
      lorem: 'ipsum'
    }
  }
}
```

Salida

export default { // Destacado
  data () {
    return {
      msg: `Destacado!
      Esta linea no está destacada,
      pero esta y las próximas están.`,
      motd: 'VitePress es increible',
      lorem: 'ipsum',
    }
  }
}

Alternativamente, es posible destacar directamente en la linea usando el comentario // [!code highlight].

Entrada

```js
export default {
  data () {
    return {
      msg: 'Destacado!' // [!!code highlight]
    }
  }
}
```

Saída

export default {
  data() {
    return {
      msg: 'Destacado!' // [!code highlight]
    }
  }
}

Enfoque en Bloques de Código

Adicionando el comentario // [!code focus] en una linea, esta será destacada y desenfocará las otras partes del código.

Además, puede definir el número de lineas para enfocar usando // [!code focus:<lineas>].

Entrada

```js
export default {
  data () {
    return {
      msg: 'Enfocado!' // [!!code focus]
    }
  }
}
```

Salida

export default {
  data() {
    return {
      msg: 'Enfocado!' // [!code focus]
    }
  }
}

Diferencias Coloreadas en Bloques de Código

Adicionar los comentarios // [!code --] o // [!code ++] en una linea creará una diferencia en esa linea, manteniendo los colores del bloque de código.

Entrada

```js
export default {
  data () {
    return {
      msg: 'Borrado' // [!!code --]
      msg: 'Adicionado' // [!!code ++]
    }
  }
}
```

Salida

export default {
  data () {
    return {
      msg: 'Borrado' // [!code --]
      msg: 'Adicionado' // [!code ++]
    }
  }
}

Errores y Avisos en Bloques de Código

Adicionar los comentarios // [!code warning] o // [!code error] en una linea coloreará los bloques conforme necesário.

Entrada

```js
export default {
  data () {
    return {
      msg: 'Error', // [!!code error]
      msg: 'Aviso' // [!!code warning]
    }
  }
}
```

Salida

export default {
  data() {
    return {
      msg: 'Error', // [!code error]
      msg: 'Aviso' // [!code warning]
    }
  }
}

Números de Linea

Puede habilitar números de linea para cada bloque de código a través del archivo de configuración:

export default {
  markdown: {
    lineNumbers: true
  }
}

Consulte las opciones markdown para más detalles.

Puede adicionar la marca :line-numbers / :no-line-numbers en sus bloques de código para substituir el valor definido en la configuración.

También puede personalizar el número inicial de linea adicionando = después :line-numbers. Por ejemplo, :line-numbers=2 significa que los números de las lineas en los bloques de código comenzarán a partir de 2.

Entrada

```ts {1}
// números de linea desactivados por defecto
const line2 = 'Esta es la linea 2'
const line3 = 'Esta es la linea 3'
```

```ts:line-numbers {1}
// números de linea activados
const line2 = 'Esta es la linea 2'
const line3 = 'Esta es la linea 3'
```

```ts:line-numbers=2 {1}
// números de linea activados y comienzan en 2
const line3 = 'Esta es la linea 3'
const line4 = 'Esta es la linea 4'
```

Salida

// números de linea desactivados por defecto
const line2 = 'Esta es la linea 2'
const line3 = 'Esta es la linea 3'
// números de linea activados
const line2 = 'Esta es la linea 2'
const line3 = 'Esta es la linea 3'
// números de linea activados y comienzan en 2
const line3 = 'Esta es la linea 3'
const line4 = 'Esta es la linea 4'

Importar Snippets de Código

Puede importar pedazos de código de archivos existentes usando la siguiente sintaxis:

<<< @/filepath

También soporta destaque de linea:

<<< @/filepath{highlightLines}

Entrada

<<< @/snippets/snippet.js{2}

Archivo de Código

<<< @/snippets/snippet.js

Salida

<<< @/snippets/snippet.js{2}

::: tip

El valor de @ corresponde a la raiz del código fuente. Por defecto, es la raiz del proyecto VitePress, a menos que srcDir sea configurado. Alternativamente, puede también importar de paths relativos:

<<< ../snippets/snippet.js

:::

También puede usar una región VS Code para incluir apenas la parte correspondiente del archivo de código. Puede proporcionar un nombre de región personalizado después de # siguiendo el path del archivo:

Entrada

<<< @/snippets/snippet-with-region.js#snippet{1}

Archivo de Código

<<< @/snippets/snippet-with-region.js

Salida

<<< @/snippets/snippet-with-region.js#snippet{1}

También puede especificar el idioma dentro de llaves ({}), así:

<<< @/snippets/snippet.cs{c#}

<!-- con destaque de linea: -->

<<< @/snippets/snippet.cs{1,2,4-6 c#}

<!-- con números de linea: -->

<<< @/snippets/snippet.cs{1,2,4-6 c#:line-numbers}

Esto es útil si el lenguaje original no puede ser inferida por la extensión de archivo.

Grupos de Código

Puede agrupar varios bloques de código así:

Entrada

::: code-group

```js [config.js]
/**
 * @type {import('vitepress').UserConfig}
 */
const config = {
  // ...
}

export default config
```

```ts [config.ts]
import type { UserConfig } from 'vitepress'

const config: UserConfig = {
  // ...
}

export default config
```

:::

Salída

::: code-group

/**
 * @type {import('vitepress').UserConfig}
 */
const config = {
  // ...
}

export default config
import type { UserConfig } from 'vitepress'

const config: UserConfig = {
  // ...
}

export default config

:::

También puede importar snippets de código en grupos de código:

Entrada

::: code-group

<!-- nombre de archivo usado como título por defecto -->

<<< @/snippets/snippet.js

<!-- puede proporcionar uno personalizado también -->

<<< @/snippets/snippet-with-region.js#snippet{1,2 ts:line-numbers} [snippet with region]

:::

Output

::: code-group

<<< @/snippets/snippet.js

<<< @/snippets/snippet-with-region.js#snippet{1,2 ts:line-numbers} [snippet with region]

:::

Inclusión de Archivo Markdown

Puede incluir un archivo markdown en otro archvo markdown, incluso anidado.

::: tip Puede prefijar el path del markdown con @, el actuará como la raiz de origen. Por defecto, es la raiz del projecto VitePress, a menos que srcDir sea configurado. :::

Por ejemplo, puede incluir un archivo markdown relativo usando esto:

Entrada

# Documentación

## Conceptos Básicos 

<!--@include: ./parts/basics.md-->

Archivo de Parte (parts/basics.md)

Algunas cosas básicas.

### Configuración

Puede ser creada usando `.foorc.json`.

Código Equivalente

# Documentación

## Conceptos básicos

Algunas cosas básicas

### Configuración

Puede ser creada usando `.foorc.json`.

También soporta la selección de un intervalo de lineas:

Entrada

# Documentación

## Conceptos Básicos

<!--@include: ./parts/basics.md{3,}-->

Archivo de Parte (parts/basics.md)

Algunas cosas básicas.

### Configuración

Puede ser creada usando `.foorc.json`.

Código Equivalente

# Documentación

## Conceptos Básicos

### Configuración

Puede ser creada usando `.foorc.json`.

El formato del intervalo de lineas seleccionado puede ser: {3,}, {,10}, {1,10}

::: warning Observe que esto no genera errores si el archivo no está presente. Por lo tanto, al usar este recurso, asegurese de que el contenido está siendo mostrado como se espera.:::

Ecuaciones Matemáticas

Esto es actualmente opcional. Para activarlo, necesita instalar markdown-it-mathjax3 y definir markdown.math como true en su archivo de configuración:

npm add -D markdown-it-mathjax3
// .vitepress/config.ts
export default {
  markdown: {
    math: true
  }
}

Entrada

Cuando $a \ne 0$, existen dos soluciones para $(ax^2 + bx + c = 0)$ y ellas son
$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$

**Ecuaciones de Maxwell:**

| ecuación                                                                                                                                                                  | descripción                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| $\nabla \cdot \vec{\mathbf{B}}  = 0$                                                                                                                                      | la divergencia de $\vec{\mathbf{B}}$ es cero                                               |
| $\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t}  = \vec{\mathbf{0}}$                                                          | la rotacional de $\vec{\mathbf{E}}$ es proporcional a la tasa de variación de $\vec{\mathbf{B}}$ |
| $\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} = \frac{4\pi}{c}\vec{\mathbf{j}}    \nabla \cdot \vec{\mathbf{E}} = 4 \pi \rho$ | _hã?_                                                                                     |

**Salída**

Cuando $a \ne 0$, existen dos soluciones para $(ax^2 + bx + c = 0)$ y ellas son
$$ x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$

**Ecuaciones de Maxwell:**

| ecuación                                                                                                                                                                  | descripción                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| $\nabla \cdot \vec{\mathbf{B}}  = 0$                                                                                                                                      | la divergencia de $\vec{\mathbf{B}}$ es cero                                               |
| $\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t}  = \vec{\mathbf{0}}$                                                          | la rotacional de $\vec{\mathbf{E}}$ es proporcional a la tasa de variación de $\vec{\mathbf{B}}$ |
| $\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} = \frac{4\pi}{c}\vec{\mathbf{j}}    \nabla \cdot \vec{\mathbf{E}} = 4 \pi \rho$ | _hã?_                                                                                     |

## _Lazy Loading_ de Imagenes {#image-lazy-loading}

Puede activar la "carga perezosa" para cada imagen adicionada via markdown definiendo `lazyLoading` como `true` en su archivo de configuración:

```js
export default {
  markdown: {
    image: {
      // la carga perezosa de imagenes está desactivada por defecto
      lazyLoading: true
    }
  }
}

Configuración Avanzada

VitePress usa markdown-it como interprete Markdown. Muchas de las extensiones arriba son implementadas por medio de plugins personalizados. Puede personalizar más la instancia markdown-it usando la opción markdown en .vitepress/config.js:

import { defineConfig } from 'vitepress'
import markdownItAnchor from 'markdown-it-anchor'
import markdownItFoo from 'markdown-it-foo'

export default defineConfig({
  markdown: {
    // opciones para markdown-it-anchor
    // https://github.com/valeriangalliat/markdown-it-anchor#usage
    anchor: {
      permalink: markdownItAnchor.permalink.headerLink()
    },

    // opciones para @mdit-vue/plugin-toc
    // https://github.com/mdit-vue/mdit-vue/tree/main/packages/plugin-toc#options
    toc: { level: [1, 2] },

    config: (md) => {
      // use más plugins markdown-it!
      md.use(markdownItFoo)
    }
  }
})

Consulte la lista completa de propiedades configurables en Referencia de Configuración: Configuración de la Aplicación.