tabi/es/blog/series/index.html
2025-11-04 13:26:57 +00:00

164 lines
No EOL
68 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=es><head><meta charset=UTF-8><meta content="default-src 'self';font-src 'self' data: 'self';img-src 'self' https://* data:;media-src 'self' https://cdn.jsdelivr.net/;style-src 'self' 'unsafe-inline';frame-src player.vimeo.com https://www.youtube-nocookie.com;connect-src 'self' https://tabi-stats.osc.garden vhiweeypifbwacashxjz.supabase.co;script-src 'self' https://tabi-stats.osc.garden cdn.jsdelivr.net 'self'" http-equiv=Content-Security-Policy><meta content="width=device-width,initial-scale=1.0" name=viewport><meta content=https://welpo.github.io/tabi name=base><title>
~/tabi • Guía completa sobre series</title><link href=https://welpo.github.io/tabi/img/seedling.png rel=icon type=image/png><link href='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text y="50%" x="50%" dominant-baseline="central" text-anchor="middle" font-size="88">🌱</text></svg>' rel=icon><link title="~/tabi - Atom Feed" href=https://welpo.github.io/tabi/atom.xml rel=alternate type=application/atom+xml><link href="https://welpo.github.io/tabi/custom_subset.css?h=0b9535a28bc3d5bf2321" rel=stylesheet><link href="https://welpo.github.io/tabi/main.css?h=3716ab3457d2dd050b3c" rel=stylesheet><meta content="light dark" name=color-scheme><meta content=#087e96 name=theme-color><meta content="Aprende a organizar tus publicaciones en series secuenciales, perfectas para tutoriales, cursos e historias de varias partes." name=description><meta content="Aprende a organizar tus publicaciones en series secuenciales, perfectas para tutoriales, cursos e historias de varias partes." property=og:description><meta content="Guía completa sobre series" property=og:title><meta content=article property=og:type><meta content="https://welpo.github.io/tabi/blog/series/social_cards/es_blog_series.jpg?h=d4b64d21ea2e4633bb8c" property=og:image><meta content=1400 property=og:image:width><meta content=800 property=og:image:height><meta content="https://welpo.github.io/tabi/blog/series/social_cards/es_blog_series.jpg?h=d4b64d21ea2e4633bb8c" name=twitter:image><meta content=summary_large_image name=twitter:card><meta content=ca_ES property=og:locale:alternate><link href=https://welpo.github.io/tabi/ca/blog/series/ hreflang=ca rel=alternate><meta content=es_ES property=og:locale:alternate><link href=https://welpo.github.io/tabi/es/blog/series/ hreflang=es rel=alternate><meta content=en_GB property=og:locale:alternate><link href=https://welpo.github.io/tabi/blog/series/ hreflang=en rel=alternate><meta content=https://welpo.github.io/tabi/es/blog/series/ property=og:url><meta content=~/tabi property=og:site_name><noscript><link href=https://welpo.github.io/tabi/no_js.css rel=stylesheet></noscript><script src=https://welpo.github.io/tabi/js/initializeTheme.min.js></script><script defer src=https://welpo.github.io/tabi/js/themeSwitcher.min.js></script><script async data-goatcounter=https://tabi-stats.osc.garden/count src=https://tabi-stats.osc.garden/count.js></script><script src="https://welpo.github.io/tabi/js/searchElasticlunr.min.js?h=3626c0ef99daa745b31e" defer></script><script defer src=https://welpo.github.io/tabi/js/lunr/lunrStemmerSupport.min.js></script><script defer src=https://welpo.github.io/tabi/js/lunr/lunr.es.min.js></script><body><a href=#main-content id=skip-link>Saltar al contenido</a><header><nav class=navbar><div class=nav-title><a class=home-title href=https://welpo.github.io/tabi/es/>~/tabi</a></div><div class=nav-navs><ul><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/blog/>blog </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/archive/>archivo </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/tags/>etiquetas </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/projects/>proyectos </a><li class=menu-icons-container><ul class=menu-icons-group><li class="js menu-icon"><div aria-label="Haz clic o usa $SHORTCUT para abrir la búsqueda" class="search-icon interactive-icon" title="Haz clic o usa $SHORTCUT para abrir la búsqueda" id=search-button role=button tabindex=0><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg></div><li class=language-switcher><details class=dropdown><summary aria-label="Selección de idioma" title="Selección de idioma" aria-haspopup=true role=button><div class=language-switcher-icon></div></summary> <div class=dropdown-content role=menu>Español<a aria-label=Català href=https://welpo.github.io/tabi/ca/blog/series/ lang=ca role=menuitem>Català</a><a aria-label=English href=https://welpo.github.io/tabi/blog/series/ lang=en role=menuitem>English</a><a aria-label=العربية href=https://welpo.github.io/tabi/ar/blog/series/ lang=ar role=menuitem>العربية</a></div></details><li class="theme-switcher-wrapper js"><div aria-label="Cambiar a modo oscuro" title="Cambiar a modo oscuro/claro" aria-pressed=false class=theme-switcher role=button tabindex=0></div><div aria-label="Restablecer modo a configuración predeterminada" class="theme-resetter arrow" title="Restablecer modo a configuración predeterminada" aria-hidden=true role=button tabindex=0></div></ul></ul></div></nav></header><div class=content id=main-content><main><article class=h-entry><h1 class="p-name article-title">Guía completa sobre series</h1><a class="u-url u-uid" href=https://welpo.github.io/tabi/es/blog/series/></a><ul class=meta><li><time class=dt-published datetime=2024-11-08>8 nov 2024</time><li title="1725 palabras"><span aria-hidden=true class=separator></span>9 mins de lectura<li class=tag><span aria-hidden=true class=separator></span>Etiquetas: <li class=tag><a class=p-category href=https://welpo.github.io/tabi/es/tags/funcionalidad/>funcionalidad</a>, <li class=tag><a class=p-category href=https://welpo.github.io/tabi/es/tags/tutorial/>tutorial</a>, <li class=tag><a class=p-category href=https://welpo.github.io/tabi/es/tags/preguntas-frecuentes/>preguntas frecuentes</a>, <li class=tag><a class=p-category href=https://welpo.github.io/tabi/es/tags/series/>series</a></ul><ul class="meta last-updated"><li><time class=dt-updated datetime=2025-02-21>Actualizado el 21 feb 2025</time><li><span aria-hidden=true class=separator></span><a class=external href=https://github.com/welpo/tabi/commits/main/content/blog/series/index.es.md>Ver cambios</a></ul><div class=toc-container><h3>Tabla de contenido</h3><ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#inicio-rapido>Inicio rápido</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#como-funcionan-las-series>¿Cómo funcionan las series?</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#saltar-a-las-publicaciones>Saltar a las publicaciones</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#paginas-de-series-y-orden>Páginas de series y orden</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#opciones-de-orden>Opciones de orden</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#indexacion-de-paginas>Indexación de páginas</a></ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#plantillas-de-introduccion-y-conclusion>Plantillas de introducción y conclusión</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#tipos-de-plantillas>Tipos de plantillas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ubicacion-en-el-contenido>Ubicación en el contenido</a></ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables>Variables</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-basicas-de-serie>Variables básicas de serie</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-de-navegacion>Variables de navegación</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#referencia-al-primer-articulo>Referencia al primer artículo</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ejemplo-de-plantilla>Ejemplo de plantilla</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-personalizadas>Variables personalizadas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#uso-de-variables-personalizadas>Uso de variables personalizadas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ejemplo-con-variables-personalizadas>Ejemplo con variables personalizadas</a></ul></ul></div><p class=p-summary hidden>Aprende a organizar tus publicaciones en series secuenciales, perfectas para tutoriales, cursos e historias de varias partes.<section class="e-content body"><p>Una serie organiza publicaciones relacionadas en orden secuencial, similar a los capítulos de un libro. A diferencia de las etiquetas, que simplemente agrupan contenido relacionado, las series sugieren un orden específico de lectura de principio a fin.<p>Las publicaciones dentro de una serie no necesitan publicarse de forma consecutiva; la función de series reúne publicaciones temáticamente vinculadas en una secuencia coherente.<p>El siguiente diagrama ilustra cómo las publicaciones de la serie (3, 5 y 8) existen dentro del flujo principal del blog mientras mantienen su propia secuencia ordenada dentro de Serie 1.</p><noscript><strong>⚠️ JavaScript is required to render the diagram.</strong></noscript><pre class="mermaid invertible-image full-width">
flowchart
subgraph main[BLOG]
P1[Post 1]
P2[P2]
P3[P3]
P4[P4]
P5[P5]
P6[P6]
P7[P7]
P8[P8]
P9[P9]
end
subgraph series1[SERIE 1]
PS1["Post Serie 1 (=P3)"]
PS2["Post Serie 2 (=P5)"]
PS3["Post Serie 3 (=P8)"]
end
P3 o-.-o PS1
P5 o-.-o PS2
P8 o-.-o PS3
</pre><h2 id=inicio-rapido><a aria-label="Anchor link for: inicio-rapido" class="header-anchor no-hover-padding" href=#inicio-rapido><span aria-hidden=true class=link-icon></span></a> Inicio rápido</h2><ol><li><p>Crea un directorio para tu serie</p><li><p>Crea <code>_index.md</code> en el directorio de la serie</p><li><p>Configura el front matter de <code>_index.md</code>:</p> <pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">title</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Aprendiendo Rust<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">template</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>series.html<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">sort_by</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>slug<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">transparent</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-constant z-language z-toml">true</span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-constant z-language z-toml">true</span>
</span></code></pre><li><p>Crea tus artículos de la serie en este directorio</p></ol><p>¿Quieres saber más? ¡Sigue leyendo!<h2 id=como-funcionan-las-series><a aria-label="Anchor link for: como-funcionan-las-series" class="header-anchor no-hover-padding" href=#como-funcionan-las-series><span aria-hidden=true class=link-icon></span></a> ¿Cómo funcionan las series?</h2><p>Una serie es simplemente una sección que tabi maneja de manera especial. Para más detalles sobre secciones, consulta la <a class=external href=https://www.getzola.org/documentation/content/section/>documentación de Zola</a>.<p>Tomando el ejemplo del diagrama anterior, la estructura de directorios sería así:<pre class="language-txt z-code" data-lang=txt><code class=language-txt data-lang=txt><span class="z-text z-plain">content/
</span><span class="z-text z-plain"> _index.md
</span><span class="z-text z-plain"> blog/
</span><span class="z-text z-plain"> _index.md
</span><span class="z-text z-plain"> post1/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post2/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post4/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post6/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post7/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post9/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> serie1/
</span><span class="z-text z-plain"> _index.md
</span><span class="z-text z-plain"> post3/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post5/
</span><span class="z-text z-plain"> index.md
</span><span class="z-text z-plain"> post8/
</span><span class="z-text z-plain"> index.md
</span></code></pre><p>Para crear una serie, necesitas:<ol><li>Usar la plantilla <code>series.html</code><li>Establecer <code>series = true</code> en la configuración <code>[extra]</code> de la sección<li>Activar <code>transparent = true</code> para integrar las publicaciones de la serie con la sección del blog principal</ol><p>La página principal de la serie muestra un resumen seguido de una lista de todas las publicaciones en la serie:<div class=full-width><img alt="una serie" src="https://welpo.github.io/tabi/blog/series/img/series_light.webp?h=b263f660f586e7a0978f" class=img-light loading=lazy><img alt="una serie" src="https://welpo.github.io/tabi/blog/series/img/series_dark.webp?h=33e658ae352f1e6cb809" class=img-dark loading=lazy></div><h2 id=saltar-a-las-publicaciones><a aria-label="Anchor link for: saltar-a-las-publicaciones" class="header-anchor no-hover-padding" href=#saltar-a-las-publicaciones><span aria-hidden=true class=link-icon></span></a> Saltar a las publicaciones</h2><p>Si el contenido de una serie (el Markdown después del frontmatter en <code>_index.md</code>) supera los 2000 caracteres, aparece un enlace “Saltar a publicaciones” junto al título de la serie.<div class=full-width><img alt="enlace para saltar a las publicaciones de la serie" src="https://welpo.github.io/tabi/blog/series/img/jump_to_series_posts_light.webp?h=36a55aa8486a48dcad54" class=img-light loading=lazy><img alt="enlace para saltar a las publicaciones de la serie" src="https://welpo.github.io/tabi/blog/series/img/jump_to_series_posts_dark.webp?h=b2050110d2b4ad3f8768" class=img-dark loading=lazy></div><p>Para forzar la activación o desactivación de esta función, configura <code>show_jump_to_posts</code> en la sección <code>[extra]</code> de tu sección de series o en <code>config.toml</code>. Esta configuración sigue <a href=https://welpo.github.io/tabi/es/blog/mastering-tabi-settings/#jerarquia-de-configuracion>la jerarquía</a>.<h2 id=paginas-de-series-y-orden><a aria-label="Anchor link for: paginas-de-series-y-orden" class="header-anchor no-hover-padding" href=#paginas-de-series-y-orden><span aria-hidden=true class=link-icon></span></a> Páginas de series y orden</h2><p>Todas las páginas en la sección de series serán páginas de serie. Las páginas se ordenarán según el <code>sort_by</code> de la sección.<p>Aunque las series mantienen su propio orden interno, permanecen independientes del flujo cronológico de la sección principal (por ejemplo, <code>blog/</code>) gracias a la configuración <code>transparent</code>.<h3 id=opciones-de-orden><a aria-label="Anchor link for: opciones-de-orden" class="header-anchor no-hover-padding" href=#opciones-de-orden><span aria-hidden=true class=link-icon></span></a> Opciones de orden</h3><p>Elige entre estos métodos de orden, cada uno con sus ventajas:<div class=full-width><table><thead><tr><th><code>sort_by</code><th>ventajas<th>desventajas<tbody><tr><td><code>slug</code><td>El orden de las páginas es explícito en la ruta (por ejemplo, <code>example.com/blog/series1/01-series-post-uno</code>).<td>Cada página de la serie debe tener el prefijo correspondiente.<tr><td><code>weight</code><td>El orden de las páginas es fácil de configurar de forma transparente.<br>La primera publicación tiene peso <code>1</code>, la segunda peso <code>2</code> y así sucesivamente.<td>Cada página de la serie debe tener su peso configurado.<tr><td><code>date</code><td>El orden de las páginas se puede configurar una sola vez en la configuración de la sección. No hay que hacer nada en cada página.<td>El orden de las páginas debe invertirse porque la primera página suele ser la más antigua. Esto solo se puede lograr paginando la sección (<code>paginate_by = 9999</code>) e invirtiendo su orden (<code>paginate_reversed = true</code>).</table></div><div class="admonition danger"><div class="admonition-icon admonition-icon-danger"></div><div class=admonition-content><strong class=admonition-title>Versión de Zola para ordenar por fecha</strong><p>Para invertir correctamente las fechas, se requiere Zola v0.19.3+ (no publicada) para que la información de paginación esté disponible a través de la función <code>get_section</code>. De lo contrario, cualquier cosa que dependa del orden de las páginas de la serie no será correcta (por ejemplo, página anterior/siguiente, listas ordenadas y no ordenadas…) Ver <a class=external href=https://github.com/getzola/zola/pull/2653>Zola PR #2653</a>.</div></div><h3 id=indexacion-de-paginas><a aria-label="Anchor link for: indexacion-de-paginas" class="header-anchor no-hover-padding" href=#indexacion-de-paginas><span aria-hidden=true class=link-icon></span></a> Indexación de páginas</h3><p>Las páginas en una serie se indexan empezando desde 1, siguiendo su orden <code>sort_by</code>. Para invertir la indexación (haciendo que la primera página tenga el índice más alto), añade esta configuración a <code>_index.md</code> o <code>config.toml</code>:<pre class="language-toml z-code" data-lang=toml><code class=language-toml data-lang=toml><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">post_listing_index_reversed</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-constant z-language z-toml">true</span> <span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> Por defecto es false si no se configura</span>
</span></code></pre><div class=full-width><img alt="una serie con índices invertidos" src="https://welpo.github.io/tabi/blog/series/img/series_reversed_light.webp?h=c87548ebd6afb4dc6f53" class=img-light loading=lazy><img alt="una serie con índices invertidos" src="https://welpo.github.io/tabi/blog/series/img/series_reversed_dark.webp?h=2a7db8e8e3808c5925fd" class=img-dark loading=lazy></div><p>Esta configuración sigue <a href=https://welpo.github.io/tabi/es/blog/mastering-tabi-settings/#jerarquia-de-configuracion>la jerarquía</a>.<h2 id=plantillas-de-introduccion-y-conclusion><a aria-label="Anchor link for: plantillas-de-introduccion-y-conclusion" class="header-anchor no-hover-padding" href=#plantillas-de-introduccion-y-conclusion><span aria-hidden=true class=link-icon></span></a> Plantillas de introducción y conclusión</h2><p>Los artículos de una serie pueden tener secciones automáticas de introducción y conclusión. Estas se configuran en el <code>_index.md</code> de tu serie. Un ejemplo básico:<pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_intro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Este artículo es parte de la serie $SERIES_HTML_LINK.<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_outro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>¡Gracias por leer la parte $SERIES_PAGE_INDEX de $SERIES_HTML_LINK!<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span></code></pre><p>Las secciones de introducción y conclusión tienen sus propias clases CSS (<code>series-page-intro</code> y <code>series-page-outro</code>), lo que te permite personalizar su apariencia mediante <a href=https://welpo.github.io/tabi/es/blog/mastering-tabi-settings/#estilos-css-personalizados>CSS personalizado</a>.<h3 id=tipos-de-plantillas><a aria-label="Anchor link for: tipos-de-plantillas" class="header-anchor no-hover-padding" href=#tipos-de-plantillas><span aria-hidden=true class=link-icon></span></a> Tipos de plantillas</h3><p>El sistema de series usa diferentes plantillas según la posición del artículo en la serie:<ul><li><code>next_only</code> - Usado para el primer artículo (tiene artículo siguiente pero no anterior)<li><code>middle</code> - Usado para artículos con artículos anterior y siguiente<li><code>prev_only</code> - Usado para el último artículo (tiene artículo anterior pero no siguiente)<li><code>default</code> - Plantilla por defecto usada cuando no existe una plantilla específica para la posición</ul><p>El sistema determina automáticamente qué plantilla usar según la posición del artículo. Las plantillas se definen en la configuración de la serie (<code>_index.md</code>), como <code>extra.series_intro_templates</code> y <code>extra.series_outro_templates</code>:<pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_intro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">next_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>¡Bienvenido a la parte 1! Siguiente: $NEXT_HTML_LINK<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">middle</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Anterior: $PREV_HTML_LINK | Siguiente: $NEXT_HTML_LINK<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">prev_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>¡El capítulo final! Anteriormente: $PREV_HTML_LINK<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Parte $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span></code></pre><p>Todas las plantillas son opcionales. La selección de plantillas sigue un sistema de prioridad:<ol><li>Si existe una plantilla específica para la posición (<code>next_only</code>, <code>middle</code>, o <code>prev_only</code>), se usará esa<li>Si no, se usa la plantilla <code>default</code><li>Si no se define ninguna plantilla, no se mostrará información de la serie</ol><p>Mira el <a href=https://welpo.github.io/tabi/es/blog/series/#ejemplo-de-plantilla>ejemplo de plantilla</a> para ver un ejemplo más elaborado.<h3 id=ubicacion-en-el-contenido><a aria-label="Anchor link for: ubicacion-en-el-contenido" class="header-anchor no-hover-padding" href=#ubicacion-en-el-contenido><span aria-hidden=true class=link-icon></span></a> Ubicación en el contenido</h3><p>Por defecto:<ul><li>Las introducciones de serie aparecen al inicio de tu artículo<li>La conclusión aparece al final (antes de las notas al pie, si las hay)</ul><p>Puedes controlar exactamente dónde aparecen usando <code>&lt;!-- series_intro --></code> y <code>&lt;!-- series_outro --></code> en tu Markdown:<pre class="language-markdown z-code" data-lang=markdown><code class=language-markdown data-lang=markdown><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">Este párrafo aparece antes de la introducción de la serie.
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-disable-markdown"><span class="z-comment z-block z-html"><span class="z-punctuation z-definition z-comment z-begin z-html">&lt;!--</span> series_intro <span class="z-punctuation z-definition z-comment z-end z-html">--></span></span></span><span class="z-meta z-disable-markdown">
</span></span><span class="z-text z-html z-markdown">
</span><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">Contenido principal del artículo.
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-disable-markdown"><span class="z-comment z-block z-html"><span class="z-punctuation z-definition z-comment z-begin z-html">&lt;!--</span> series_outro <span class="z-punctuation z-definition z-comment z-end z-html">--></span></span></span><span class="z-meta z-disable-markdown">
</span></span><span class="z-text z-html z-markdown">
</span><span class="z-text z-html z-markdown"><span class="z-meta z-block-level z-markdown"><span class="z-markup z-heading z-2 z-markdown"><span class="z-punctuation z-definition z-heading z-begin z-markdown">##</span> </span><span class="z-markup z-heading z-2 z-markdown"><span class="z-entity z-name z-section z-markdown">Recursos de aprendizaje</span><span class="z-meta z-whitespace z-newline z-markdown">
</span></span></span></span><span class="z-text z-html z-markdown">
</span><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">Contenido adicional...
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-paragraph z-markdown">
</span></span><span class="z-text z-html z-markdown"><span class="z-meta z-link z-reference z-def z-footnote z-markdown-extra"><span class="z-punctuation z-definition z-constant z-begin z-markdown">[</span><span class="z-entity z-name z-reference z-link z-markdown">^1</span><span class="z-punctuation z-definition z-constant z-end z-markdown">]</span><span class="z-punctuation z-separator z-key-value z-markdown">:</span> Las notas al pie siempre aparecerán al final.
</span></span></code></pre><h2 id=variables><a aria-label="Anchor link for: variables" class="header-anchor no-hover-padding" href=#variables><span aria-hidden=true class=link-icon></span></a> Variables</h2><p>Las plantillas de series usan un sistema flexible de variables que te permite:<ol><li>Hacer referencia a información de la serie (título, enlaces)<li>Añadir navegación entre artículos<li>Mostrar indicadores de progreso<li>Incluir información personalizada usando tus propias variables</ol><p>Las variables son marcadores que comienzan con <code>$</code> y se reemplazan con contenido real cuando se construye tu sitio. Por ejemplo, <code>$SERIES_HTML_LINK</code> se convierte en un enlace clicable a la página índice de tu serie.<p>Hay tres tipos de variables:<ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-basicas-de-serie>Variables básicas de serie</a>: Información general sobre la serie<li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-de-navegacion>Variables de navegación</a>: Enlaces a artículos anterior/siguiente<li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-personalizadas>Variables personalizadas</a>: Tus propios marcadores para información adicional</ul><h3 id=variables-basicas-de-serie><a aria-label="Anchor link for: variables-basicas-de-serie" class="header-anchor no-hover-padding" href=#variables-basicas-de-serie><span aria-hidden=true class=link-icon></span></a> Variables básicas de serie</h3><div class=full-width><table><thead><tr><th>Variable<th>Disponibilidad<th>Devuelve<th>Descripción<th>Ejemplo de uso<th>Ejemplo de salida<tbody><tr><td><code>$SERIES_TITLE</code><td>Siempre<td>Texto<td>Título de la serie en texto plano<td><code>Parte de $SERIES_TITLE</code><td>Parte de Aprendiendo Rust<tr><td><code>$SERIES_PERMALINK</code><td>Siempre<td>Texto<td>URL al índice de la serie<td><code>[Ver todas las publicaciones]($SERIES_PERMALINK)</code><td><a href=/series/learn-rust>Ver todas las publicaciones</a><tr><td><code>$SERIES_HTML_LINK</code><td>Siempre<td>HTML<td>Enlace listo para usar a la serie<td><code>¡Bienvenido a $SERIES_HTML_LINK!</code><td>¡Bienvenido a <a href=/series/learn-rust>Aprendiendo Rust</a>!<tr><td><code>$SERIES_PAGES_NUMBER</code><td>Siempre<td>Número<td>Total de artículos en la serie<td><code>Una serie de $SERIES_PAGES_NUMBER partes</code><td>Una serie de 5 partes<tr><td><code>$SERIES_PAGE_INDEX</code><td>Siempre<td>Número<td>Posición del artículo actual<td><code>Parte $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER</code><td>Parte 3 de 5<tr><td><code>$SERIES_PAGES_OLIST</code><td>Siempre<td>HTML<td>Lista ordenada de todos los artículos<td><code>Artículos en la serie: $SERIES_PAGES_OLIST</code><td>Artículos en la serie: <ol><li>Artículo actual<li><a href=...>Otros artículos</a></ol><tr><td><code>$SERIES_PAGES_ULIST</code><td>Siempre<td>HTML<td>Lista desordenada de todos los artículos<td><code>Artículos en la serie: $SERIES_PAGES_ULIST</code><td>Artículos en la serie: <ul><li>Artículo actual<li><a href=...>Otros artículos</a></ul></table></div><div class="admonition tip"><div class="admonition-icon admonition-icon-tip"></div><div class=admonition-content><strong class=admonition-title>CONSEJO: Texto personalizado con permalinks</strong><p>Los enlaces markdown como <code>[texto]($SERIES_PERMALINK)</code> serán marcados (y <a href=https://welpo.github.io/tabi/es/blog/mastering-tabi-settings/#indicador-enlaces-externos>estilizados</a>) como externos. Si necesitas texto personalizado y quieres evitar el estilo externo, usa HTML: <code>&lt;a href=\"$SERIES_PERMALINK\">tu texto&lt;/a></code>.</div></div><h3 id=variables-de-navegacion><a aria-label="Anchor link for: variables-de-navegacion" class="header-anchor no-hover-padding" href=#variables-de-navegacion><span aria-hidden=true class=link-icon></span></a> Variables de navegación</h3><div class=full-width><table><thead><tr><th>Variable<th>Disponibilidad<th>Devuelve<th>Descripción<th>Ejemplo de uso<th>Ejemplo de salida<tbody><tr><td><code>$PREV_TITLE</code><td>Existe anterior<td>Texto<td>Título del artículo anterior<td><code>Anteriormente: $PREV_TITLE</code><td>Anteriormente: Configurando tu entorno<tr><td><code>$PREV_PERMALINK</code><td>Existe anterior<td>Texto<td>URL al artículo anterior<td><code>[← Atrás]($PREV_PERMALINK)</code><td><a href=/series/learn-rust/setup>← Atrás</a><tr><td><code>$PREV_HTML_LINK</code><td>Existe anterior<td>HTML<td>Enlace listo para usar al anterior<td><code>Lee primero $PREV_HTML_LINK</code><td>Lee primero <a href=/series/learn-rust/setup>Configurando tu entorno</a><tr><td><code>$PREV_DESCRIPTION</code><td>Existe anterior<td>Texto<td>Descripción del artículo anterior<td><code>Resumen: $PREV_DESCRIPTION</code><td>Resumen: Configurando Rust<tr><td><code>$NEXT_TITLE</code><td>Existe siguiente<td>Texto<td>Título del siguiente artículo<td><code>Siguiente: $NEXT_TITLE</code><td>Siguiente: Patrones avanzados<tr><td><code>$NEXT_PERMALINK</code><td>Existe siguiente<td>Texto<td>URL al siguiente artículo<td><code>[Continuar →]($NEXT_PERMALINK)</code><td><a href=/series/learn-rust/patterns>Continuar →</a><tr><td><code>$NEXT_HTML_LINK</code><td>Existe siguiente<td>HTML<td>Enlace listo para usar al siguiente<td><code>Continúa con $NEXT_HTML_LINK</code><td>Continúa con <a href=/series/learn-rust/patterns>Patrones avanzados</a><tr><td><code>$NEXT_DESCRIPTION</code><td>Existe siguiente<td>Texto<td>Descripción del siguiente artículo<td><code>Próximamente: $NEXT_DESCRIPTION</code><td>Próximamente: Aprende sobre las características avanzadas de pattern matching en Rust</table></div><h3 id=referencia-al-primer-articulo><a aria-label="Anchor link for: referencia-al-primer-articulo" class="header-anchor no-hover-padding" href=#referencia-al-primer-articulo><span aria-hidden=true class=link-icon></span></a> Referencia al primer artículo</h3><div class=full-width><table><thead><tr><th>Variable<th>Disponibilidad<th>Devuelve<th>Descripción<th>Ejemplo de uso<th>Ejemplo de salida<tbody><tr><td><code>$FIRST_TITLE</code><td>Siempre<td>Texto<td>Título del primer artículo<td><code>Comienza con $FIRST_TITLE</code><td>Comienza con Introducción a Rust<tr><td><code>$FIRST_HTML_LINK</code><td>Siempre<td>HTML<td>Enlace listo para usar al primer artículo<td><code>Empieza en $FIRST_HTML_LINK</code><td>Empieza en <a href=/series/learn-rust/intro>Introducción a Rust</a></table></div><h3 id=ejemplo-de-plantilla><a aria-label="Anchor link for: ejemplo-de-plantilla" class="header-anchor no-hover-padding" href=#ejemplo-de-plantilla><span aria-hidden=true class=link-icon></span></a> Ejemplo de plantilla</h3><div class="admonition tip"><div class="admonition-icon admonition-icon-tip"></div><div class=admonition-content><strong class=admonition-title>Variables HTML vs texto</strong><p>Usa variables HTML (que terminan en <code>_HTML_LINK</code>) cuando quieras enlaces listos para usar. Usa variables de texto (que terminan en <code>_TITLE</code> o <code>_PERMALINK</code>) cuando quieras más control sobre el formato.</div></div><pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> Introducción.</span>
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_intro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">next_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">¡Bienvenido a $SERIES_HTML_LINK! Esta serie de $SERIES_PAGES_NUMBER partes te enseñará Rust desde cero.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Siguiente: $NEXT_HTML_LINK - $NEXT_DESCRIPTION
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">middle</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">📚 Parte $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER en $SERIES_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Anterior: $PREV_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Siguiente: $NEXT_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">prev_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">¡Bienvenido a la última parte de $SERIES_HTML_LINK!
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">¿Eres nuevo? Comienza con $FIRST_HTML_LINK para construir una base sólida.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Anterior: $PREV_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> Plantilla de respaldo.</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Este artículo es parte de la serie $SERIES_HTML_LINK.<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> Conclusión.</span>
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_outro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">next_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">¡Gracias por leer! 🙌
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Continúa tu viaje con $NEXT_HTML_LINK, donde $NEXT_DESCRIPTION
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">O revisa el esquema completo de la serie [$SERIES_TITLE]($SERIES_PERMALINK).
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">middle</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">---
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">📝 Navegación de la serie
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">- Anterior: $PREV_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">- Siguiente: $NEXT_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">- [Resumen de la serie]($SERIES_PERMALINK)
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">prev_only</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">🎉 ¡Felicidades! Has completado $SERIES_HTML_LINK.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">¿Quieres repasar? Aquí comenzamos: $FIRST_HTML_LINK
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">O revisa lo que acabamos de ver en $PREV_HTML_LINK.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> Respaldo.</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">---
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Este artículo es la parte $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER en $SERIES_HTML_LINK.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span></code></pre><h3 id=variables-personalizadas><a aria-label="Anchor link for: variables-personalizadas" class="header-anchor no-hover-padding" href=#variables-personalizadas><span aria-hidden=true class=link-icon></span></a> Variables personalizadas</h3><p>Las plantillas de series admiten variables personalizadas para incluir información adicional en toda tu serie. El proceso tiene dos pasos:<ol><li>Primero, define tus <strong>marcadores</strong> en la configuración de tu serie (<code>_index.md</code>):</ol><pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-constant z-language z-toml">true</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series_template_placeholders</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-punctuation z-definition z-array z-begin z-toml">[</span><span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>$POSITION<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-array z-toml">,</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>$TOPIC<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-array z-toml">,</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>$DIFFICULTY<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-definition z-array z-end z-toml">]</span>
</span></code></pre><ol start=2><li>Luego, en cada artículo de la serie, proporciona los valores para estos marcadores en <code>series_template_variables</code>:</ol><pre class="language-toml z-code" data-lang=toml data-name=series/article.md><code class=language-toml data-lang=toml data-name=series/article.md><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_template_variables</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">position</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>primero<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">topic</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Variables y tipos<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">difficulty</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Principiante<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span></code></pre><h3 id=uso-de-variables-personalizadas><a aria-label="Anchor link for: uso-de-variables-personalizadas" class="header-anchor no-hover-padding" href=#uso-de-variables-personalizadas><span aria-hidden=true class=link-icon></span></a> Uso de variables personalizadas</h3><p>Puedes usar tus variables personalizadas en cualquier plantilla, junto con las variables integradas:<pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_intro_templates</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Este es el artículo $POSITION en $SERIES_HTML_LINK.
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Tema de hoy: $TOPIC
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">Nivel de dificultad: $DIFFICULTY
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span></code></pre><div class="admonition warning"><div class="admonition-icon admonition-icon-warning"></div><div class=admonition-content><strong class=admonition-title>WARNING</strong><p>Aunque los marcadores se definen en mayúsculas (<code>$POSITION</code>), los nombres de variables en <code>series_template_variables</code> deben estar en minúsculas (<code>position</code>).</div></div><h3 id=ejemplo-con-variables-personalizadas><a aria-label="Anchor link for: ejemplo-con-variables-personalizadas" class="header-anchor no-hover-padding" href=#ejemplo-con-variables-personalizadas><span aria-hidden=true class=link-icon></span></a> Ejemplo con variables personalizadas</h3><pre class="language-toml z-code" data-lang=toml data-name=series/_index.md><code class=language-toml data-lang=toml data-name=series/_index.md><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> En la configuración de la serie.</span>
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-constant z-language z-toml">true</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series_template_placeholders</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-punctuation z-definition z-array z-begin z-toml">[</span><span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>$LEARNING_TIME<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-separator z-array z-toml">,</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>$KEY_CONCEPTS<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span><span class="z-punctuation z-definition z-array z-end z-toml">]</span>
</span><span class="z-source z-toml">
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">series_intro_templates</span><span class="z-punctuation z-separator z-key z-toml">.</span><span class="z-entity z-name z-tag z-toml">default</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"""</span>
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">📚 Parte $SERIES_PAGE_INDEX de $SERIES_PAGES_NUMBER
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">⏱️ Tiempo estimado: $LEARNING_TIME
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml">🔑 Conceptos clave: $KEY_CONCEPTS
</span></span><span class="z-source z-toml"><span class="z-string z-quoted z-triple z-basic z-block z-toml"><span class="z-punctuation z-definition z-string z-end z-toml">"""</span></span>
</span></code></pre><pre class="language-toml z-code" data-lang=toml data-name=series/02-learning-rust/index.md><code class=language-toml data-lang=toml data-name=series/02-learning-rust/index.md><span class="z-source z-toml"><span class="z-comment z-line z-number-sign z-toml"><span class="z-punctuation z-definition z-comment z-toml">#</span> En un artículo de la serie.</span>
</span><span class="z-source z-toml"><span class="z-punctuation z-definition z-table z-begin z-toml">[</span><span class="z-meta z-tag z-table z-toml"><span class="z-entity z-name z-table z-toml">extra</span><span class="z-punctuation z-separator z-table z-toml">.</span><span class="z-entity z-name z-table z-toml">series_template_variables</span></span><span class="z-punctuation z-definition z-table z-end z-toml">]</span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">learning_time</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>30 minutos<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span><span class="z-source z-toml"><span class="z-meta z-tag z-key z-toml"><span class="z-entity z-name z-tag z-toml">key_concepts</span></span> <span class="z-punctuation z-definition z-key-value z-toml">=</span> <span class="z-string z-quoted z-double z-basic z-toml"><span class="z-punctuation z-definition z-string z-begin z-toml">"</span>Funciones, manejo de errores, coincidencia de patrones<span class="z-punctuation z-definition z-string z-end z-toml">"</span></span>
</span></code></pre><p>Esto generará:<pre class="language-txt z-code" data-lang=txt><code class=language-txt data-lang=txt><span class="z-text z-plain">📚 Parte 2 de 5
</span><span class="z-text z-plain">⏱️ Tiempo estimado: 30 minutos
</span><span class="z-text z-plain">🔑 Conceptos clave: Funciones, manejo de errores, coincidencia de patrones
</span></code></pre><div class="admonition warning"><div class="admonition-icon admonition-icon-warning"></div><div class=admonition-content><strong class=admonition-title>Variables faltantes</strong><p>Si usas un marcador en tus plantillas pero no proporcionas su valor en <code>series_template_variables</code>, la compilación fallará con un error que lista las variables faltantes.</div></div></section><form action="https://vhiweeypifbwacashxjz.supabase.co/rest/v1/rpc/increment_hits?apikey=sb_publishable_EoB7MFJhCmb6PiAk-GPJ4w_PGhQ44Ru" class=iine-form method=post><input name=page_slug type=hidden value=/blog/series/><button aria-label="Me gusta esta publicación" title="Me gusta esta publicación" class=iine-button data-icon=thumbs_up data-slug=/blog/series/>👍</button></form><nav class="full-width article-navigation"><div></div><div><a aria-describedby=right_title aria-label=Anterior href=https://welpo.github.io/tabi/es/blog/mastering-tabi-settings/>Anterior <span class=arrow></span></a><p aria-hidden=true id=right_title>Domina la configuración de tabi: guía completa</div></nav></article></main><div id=button-container><div id=toc-floating-container><input class=toggle id=toc-toggle type=checkbox><label class=overlay for=toc-toggle></label><label title="Mostrar/ocultar la tabla de contenidos" class=button for=toc-toggle id=toc-button><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M414.82-193.094q-18.044 0-30.497-12.32-12.453-12.319-12.453-30.036t12.453-30.086q12.453-12.37 30.497-12.37h392.767q17.237 0 29.927 12.487 12.69 12.486 12.69 30.203 0 17.716-12.69 29.919t-29.927 12.203H414.82Zm0-244.833q-18.044 0-30.497-12.487Q371.87-462.9 371.87-480.45t12.453-29.92q12.453-12.369 30.497-12.369h392.767q17.237 0 29.927 12.511 12.69 12.512 12.69 29.845 0 17.716-12.69 30.086-12.69 12.37-29.927 12.37H414.82Zm0-245.167q-18.044 0-30.497-12.32t-12.453-30.037q0-17.716 12.453-30.086 12.453-12.369 30.497-12.369h392.767q17.237 0 29.927 12.486 12.69 12.487 12.69 30.203 0 17.717-12.69 29.92-12.69 12.203-29.927 12.203H414.82ZM189.379-156.681q-32.652 0-55.878-22.829t-23.226-55.731q0-32.549 23.15-55.647 23.151-23.097 55.95-23.097 32.799 0 55.313 23.484 22.515 23.484 22.515 56.246 0 32.212-22.861 54.893-22.861 22.681-54.963 22.681Zm0-245.167q-32.652 0-55.878-23.134-23.226-23.135-23.226-55.623 0-32.487 23.467-55.517t56.12-23.03q32.102 0 54.721 23.288 22.62 23.288 22.62 55.775 0 32.488-22.861 55.364-22.861 22.877-54.963 22.877Zm-.82-244.833q-32.224 0-55.254-23.288-23.03-23.289-23.03-55.623 0-32.333 23.271-55.364 23.272-23.03 55.495-23.03 32.224 0 55.193 23.288 22.969 23.289 22.969 55.622 0 32.334-23.21 55.364-23.21 23.031-55.434 23.031Z"/></svg></label><div class=toc-content><div class=toc-container><ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#inicio-rapido>Inicio rápido</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#como-funcionan-las-series>¿Cómo funcionan las series?</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#saltar-a-las-publicaciones>Saltar a las publicaciones</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#paginas-de-series-y-orden>Páginas de series y orden</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#opciones-de-orden>Opciones de orden</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#indexacion-de-paginas>Indexación de páginas</a></ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#plantillas-de-introduccion-y-conclusion>Plantillas de introducción y conclusión</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#tipos-de-plantillas>Tipos de plantillas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ubicacion-en-el-contenido>Ubicación en el contenido</a></ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables>Variables</a> <ul><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-basicas-de-serie>Variables básicas de serie</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-de-navegacion>Variables de navegación</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#referencia-al-primer-articulo>Referencia al primer artículo</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ejemplo-de-plantilla>Ejemplo de plantilla</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#variables-personalizadas>Variables personalizadas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#uso-de-variables-personalizadas>Uso de variables personalizadas</a><li><a href=https://welpo.github.io/tabi/es/blog/series/#ejemplo-con-variables-personalizadas>Ejemplo con variables personalizadas</a></ul></ul></div></div></div><a title="Ir al inicio de la página" class=no-hover-padding href=# id=top-button> <svg viewbox="0 0 20 20" fill=currentColor><path d="M3.293 9.707a1 1 0 010-1.414l6-6a1 1 0 011.414 0l6 6a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L4.707 9.707a1 1 0 01-1.414 0z"/></svg> </a></div><script defer src=https://welpo.github.io/tabi/js/mermaid.min.js></script><span class=hidden id=copy-success> Copiado! </span><span class=hidden id=copy-init> Copiar código al portapapeles </span><script defer src=https://welpo.github.io/tabi/js/copyCodeToClipboard.min.js></script><script defer src=https://cdn.jsdelivr.net/gh/welpo/iine@main/iine.mini.js></script></div><footer><section><nav class="socials nav-navs"><ul><li><a class="nav-links no-hover-padding social" href=https://welpo.github.io/tabi/es/atom.xml> <img alt=feed loading=lazy src=https://welpo.github.io/tabi/social_icons/rss.svg title=feed> </a><li class=js><a class="nav-links no-hover-padding social" data-encoded-email=dGFiaUBvc2MuZ2FyZGVu href=#><img alt=email loading=lazy src=https://welpo.github.io/tabi/social_icons/email.svg title=email> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://github.com/welpo/> <img alt=github loading=lazy src=https://welpo.github.io/tabi/social_icons/github.svg title=github> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://soundcloud.com/oskerwyld> <img alt=soundcloud loading=lazy src=https://welpo.github.io/tabi/social_icons/soundcloud.svg title=soundcloud> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://instagram.com/oskerwyld> <img alt=instagram loading=lazy src=https://welpo.github.io/tabi/social_icons/instagram.svg title=instagram> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://youtube.com/@oskerwyld> <img alt=youtube loading=lazy src=https://welpo.github.io/tabi/social_icons/youtube.svg title=youtube> </a><li><a class="nav-links no-hover-padding social" rel=" me" href=https://open.spotify.com/artist/5Hv2bYBhMp1lUHFri06xkE> <img alt=spotify loading=lazy src=https://welpo.github.io/tabi/social_icons/spotify.svg title=spotify> </a></ul></nav><nav class=nav-navs><small> <ul><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/about/> sobre mí </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/es/privacy/> política de privacidad </a><li><a class="nav-links no-hover-padding" href=https://tabi-stats.osc.garden/> estadísticas del sitio </a><li><a class="nav-links no-hover-padding" href=https://welpo.github.io/tabi/sitemap.xml> mapa del sitio </a></ul> </small></nav><div class=credits><small> Impulsado por <a href=https://www.getzola.org>Zola</a> y <a href=https://github.com/welpo/tabi>tabi</a><a href=https://github.com/welpo/tabi> Código del sitio </a></small></div></section><script async src=https://welpo.github.io/tabi/js/decodeMail.min.js></script><div class="search-modal js" aria-labelledby=modalTitle id=searchModal role=dialog><h1 class=visually-hidden id=modalTitle>Buscar</h1><div id=modal-content><div id=searchBar><div aria-hidden=true class=search-icon><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg></div><input aria-controls=results-container aria-expanded=false autocomplete=off id=searchInput placeholder=Buscar… role=combobox spellcheck=false><div class="close-icon interactive-icon" title="Borrar búsqueda" id=clear-search role=button tabindex=0><svg viewbox="0 -960 960 960" xmlns=http://www.w3.org/2000/svg><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg></div></div><div id=results-container><div id=results-info><span id=zero_results> No hay resultados</span><span id=one_results> $NUMBER resultado</span><span id=many_results> $NUMBER resultados</span><span id=two_results> $NUMBER resultados</span><span id=few_results> $NUMBER resultados</span></div><div id=results role=listbox></div></div></div></div></footer>