El lenguaje de marcado y el sistema de preparación de documentos para crear la próxima generación de libros de texto. Y la generación posterior a esta.
Esta es una propuesta y ejemplo base con los requerimientos necesarios para editar un libro, publicación o algún documento genérico, con PreTeXt. Usando Codespace de GitHub y asociándolo a este repositorio, permite tener en la nube de GitHub todo lo necesario para la edición y publicación en diversos formatos: LaTeX, PDF, HTML, EPUB, Jupyter Notebook, Braille, entre otros.
👉 Ejemplo en producción: Libro Web
PreTeXt es un lenguaje de marcado semántico que permite estructurar documentos académicos y técnicos de manera lógica. Captura la estructura de libros de texto y trabajos de investigación y facilita su conversión a múltiples formatos.
- Formato de archivo:
.ptxo.xml. - Editor recomendado: Visual Studio Code con complementos para PreTeXt.
sudo apt update
sudo apt install python3.12-venv
python3 -m venv --helppython3 -m venv editorial
source ./editorial/bin/activate
⚠️ Verifique si tiene Python instalado:
$ python --versiono$ python3 --version
Al momento (21/3/2025), la versión oficial de Pretext es: 2.15.0
pip install pretextModifique para castellanizar el resultado PDF. EPUB, KINDLE y WEB.
Desde la raíz del repositorio:
cp ./otros_necesarios/es-ES.xml ~/.ptx/2.10.1/core/xsl/localizations/Puedes personalizar los logos modificando la plantilla pretext-html en la instalación local ~\.ptx\2.10.1\core\xsl:
Personaliza con tu logo personal, comenta las siguientes secciones y sustituye con el código adecuado:
<!-- Comentado por RJCG -->
<!-- <xsl:template name="runestone-link">
<a class="runestone-link" href="proxy.php?url=https%3A%2F%2Frunestone.academy" title="Runestone Academy">
<img class="logo" src="proxy.php?url=https%3A%2F%2Frunestone.academy%2Frunestone%2Fstatic%2Fimages%2FRAIcon_cropped.png" alt="Runstone Academy logo"/>
</a>
</xsl:template> -->
<xsl:template name="runestone-link">
<a class="runestone-link" href="https://efemeridescumana.blogspot.com/" title="Academia de GeoHistoria del Estado Sucre">
<img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/6/61/Logo_3_AGHES.jpg" />
</a>
</xsl:template>
<!-- <xsl:template name="mathjax-link">
<a class="mathjax-link" href="proxy.php?url=https%3A%2F%2Fwww.mathjax.org" title="MathJax">
<img class="logo" src="proxy.php?url=https%3A%2F%2Fwww.mathjax.org%2Fbadge%2Fbadge-square-2.png" alt="MathJax logo"/>
</a>
</xsl:template> -->
<xsl:template name="mathjax-link">
<a class="mathjax-link" href="https://bit.ly/m/rommelcontreras" title="Pagina del Autor">
<img class="logo" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdLU0qim6ueyYXDBgN5FRxXwoJKswnW41aeXSUDbPpUDGOlo7kmlzOYNreYGPsX_fMRhXiAV-fwfy0zJUySgyXOP9QrEPI83CkvCejk6DhhBm2k5C_FxKv1pHpKYC0ResNGR5sQJ1mUiZC/s800/que_puede_hacer_un_fisico_trasparente.png" />
</a>
</xsl:template>📦 libro-pretext-generico
.
├── .devcontainer.json
├── .git
├── .github
├── .gitignore
├── .vscode
├── README.md
├── project.ptx
├── requirements.txt
├── codechat_config.yaml
├── assets
├── output
├── publication
└── source
pretext build webpretext view webpretext deploy📌 Nota:
Para generar salidas en otros formatos, en el manifiesto del proyecto project.ptx deben declararse las referencias sobre cómo y con qué construir esos formatos, a partir de Pretext 2.14.0. Verifique que el archivo publication.ptx, tenga la estructura recomendada
Ejemplo del archivo project.ptx:
<?xml version="1.0" encoding="utf-8"?>
<!-- This file was automatically generated by PreTeXt 2.13.4. -->
<!-- If you modify this file, PreTeXt will no longer automatically update it.-->
<!-- This file, the project manifest, provides the overall configuration for your PreTeXt project. To edit the content of your document, open `source/main.ptx`. See https://pretextbook.org/doc/guide/html/processing-CLI.html#cli-project-manifest. -->
<project ptx-version="2">
<targets>
<target name="web" format="html" />
<target name="print" format="pdf" latex-engine = "xelatex" />
<target name="print2" format="pdf" latex-engine = "pdflatex" output-filename= "main2.pdf"/>
<target name="latex" format="latex" />
<target name="epub" format="epub" />
<target name="kindle" format="kindle" />
<target name="braille" format="braille" />
</targets>
</project>EPUB es el formato estándar para libros electrónicos. Los libros en formato EPUB se pueden leer mediante aplicaciones en una variedad de plataformas. Los dispositivos Kindle de Amazon utilizan un formato propietario que se deriva de EPUB.
sudo apt-get install texlive-latex-base
sudo apt-get install texlive-fonts-recommended
sudo apt-get install texlive-fonts-extra
sudo apt-get install texlive-science
sudo apt-get install texlive-latex-extraSiempre es conveniente mantener el sistema operativo actualizado, mantener Actualiza el índice de paquetes:
sudo apt updatepip install pretext --upgradesudo apt install python3-pippretext --version⚠ Recordatorio:
No olvidar realizar nuevamente los Ajustes Opcionales para personaliza Pretext.
🛑 Hasta aquí se explica la configuración funcional de PreTeXt, lo necesario para trabajar, por ejemplo, un libro de texto.
Para que XeLaTeX maneje correctamente el idioma español en PreTeXt, es necesario asegurarse de que el paquete polyglossia esté correctamente configurado y de que se utilicen fuentes compatibles.
Polyglossia es la alternativa a babel para XeLaTeX y maneja correctamente la separación de palabras en español
Para usar XeLaTeX es necesario instalar además de los Paquetes Básicos:
sudo apt install texlive-xetex
sudo apt install texlive-xetex texlive-lang-spanishVerifica que polyglossia esté instalado ejecutando el siguiente comando:
kpsewhich polyglossia.styLuego de instalar polyglossia, se utiliza añadiendo las siguientes configuraciones en main.ptx, específicamente dentro de la sección <docinfo>.
<!-- Para usar estas fuentes, ejecuta "pretext build print" para compilar con XeLaTeX -->
<latex-image-preamble>
<!-- Cargar TikZ para gráficos -->
\usepackage{tikz}
<!-- Configuración de idioma con polyglossia -->
\usepackage{polyglossia}
\setmainlanguage{spanish}
\setotherlanguage{english}
<!-- Uso de fontspec para definir fuentes -->
\usepackage{fontspec}
<!-- Configurar la fuente principal (serif) -->
\setmainfont[
Path=/usr/share/fonts/opentype/cabin/,
Extension=.otf,
UprightFont=*-Regular,
BoldFont=*-Bold,
ItalicFont=*-Italic,
BoldItalicFont=*-BoldItalic
]{Cabin}
<!-- Configurar la fuente para títulos y secciones -->
\setsansfont[
Path=/usr/share/fonts/truetype/lato/,
Extension=.ttf,
UprightFont=Lato-Medium,
BoldFont=Lato-Bold,
ItalicFont=Lato-Italic,
BoldItalicFont=Lato-BoldItalic
]{Lato}
<!-- Configurar la fuente monoespaciada correctamente -->
\setmonofont[
Path=/usr/share/fonts/truetype/dejavu/,
Extension=.ttf,
UprightFont=DejaVuSansMono,
BoldFont=DejaVuSansMono-Bold,
ItalicFont=DejaVuSansMono-Oblique,
BoldItalicFont=DejaVuSansMono-BoldOblique
]{DejaVu Sans Mono}
<!-- Asegurar codificación UTF-8 -->
\defaultfontfeatures{Ligatures=TeX,Mapping=tex-text}
<!-- Corrección de nombres de capítulos y secciones en español -->
\renewcommand{\chaptername}{Capítulo}
\renewcommand{\contentsname}{Índice}
\renewcommand{\figurename}{Figura}
\renewcommand{\tablename}{Tabla}
</latex-image-preamble>⚠ Advertencia
Antes de compilar conXeLaTeX, verifica que las fuentes necesarias (de tu preferencia) están instaladas en tu sistema ejecutando los siguientes comandos:fc-list | grep "Cabin" fc-list | grep "Lato" fc-list | grep "DejaVu"Si alguna de estas fuentes no aparece en la lista, es posible que necesites instalarlas manualmente o especificar una ruta correcta en la configuración de
fontspec.
📌 Nota: El uso de otros fones de los muchos disponibles en
XeLaTeX, se puede hacer quitando el comentario del ejemplo sugerido en el archivomain.ptx.
- How To Install "texlive-latex-base" Package on Ubuntu
- LaTeX: instalación TeXLive + Texmaker (Ubuntu)
El vocabulario de PreTeXt se define mediante un esquema RELAX NG, un lenguaje de validación para XML.
Un esquema es un conjunto de patrones que describen cómo se pueden combinar los elementos de un lenguaje.
- ✅ Especifica la estructura y contenido del documento.
- 🔍 Permite la validación de documentos XML.
- ✍️ Facilita la edición y conversión, proporcionando una guía clara sobre elementos y atributos permitidos.
- Legible y escribible por humanos.
- Compatible con múltiples formatos.
- Respetuoso de las buenas prácticas editoriales.
- Gratuito y de código abierto.
- Enfocado en la accesibilidad y la experiencia del usuario.
- Capacidad de exportación a formatos como LaTeX, HTML, PDF, EPUB, entre otros.
- Documentación de PreTeXt
- Repositorio de PreTeXt en GitHub
- RELAX NG: A Simpler Schema Language for XML
¡Las contribuciones son bienvenidas! Puedes abrir un issue o enviar un pull request.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.