Arte del banner 418 de la identidad visual de Dídac Llorens
canal visual / 418

01A / PROYECTO

P3CTeX

El proyecto que construí para que maquetar una PEC dejara de competir con el trabajo de ingeniería que había dentro.

Logotipo de P3CTeX

SEÑAL DEL PROYECTO

Una clase documental extensible y una suite de paquetes para trabajo UOC: estructura de estilo oficial, listados de código, capturas resilientes, tablas basadas en datos, modelos de clases UML, metadatos reutilizables y builds deterministas.

  • LaTeX2e
  • expl3
  • Programación TeX
  • UML
  • Herramientas documentales

Abrir repositorio ↗

PROYECTO

P3CTeX nació de un problema muy práctico: no quería pasar la última hora antes de una entrega de la UOC corrigiendo márgenes, portadas, tamaños de capturas, tablas, bloques de código o los mismos metadatos de siempre. Quería escribir el contenido, compilarlo y obtener un documento que me gustara entregar.

Empezó como una plantilla LaTeX orientada a la UOC y acabó convirtiéndose en el proyecto del que más orgulloso estoy aquí: una clase documental, un paquete core, librerías de funcionalidad independientes, código interno en expl3, manuales, ejemplos, tests de regresión y una TeX Directory Structure que puede registrarse como un árbol local de paquetes de verdad.

El resultado práctico es sencillo: puedo producir PECs e informes técnicos muy rápido manteniendo tipografía consistente, estructura reutilizable, referencias, figuras, código fuente, diagramas y un resultado pulido. La ingeniería interesante es todo lo que hay debajo de esa comodidad.

Un pequeño ecosistema de software TeX

P3CTeX.cls controla el comportamiento a nivel de documento y los metadatos UOC. pxCORE actúa como capa de agregación, mientras que varias librerías enfocadas aportan funcionalidad de forma independiente:

  • pxGDX — el sistema de diseño: colores, tipografía y convenciones visuales compartidas.
  • pxSRC — inclusión robusta de figuras y capturas, pares de imágenes y secuencias numeradas. Los assets que todavía faltan pueden mostrarse como placeholders en vez de romper un documento en curso.
  • pxTAB — tablas generadas desde datos en forma de listas, con presets reutilizables para cabeceras, grids, stripes, anchos, captions y layout.
  • pxPRP — mapas de propiedades con nombre y registros que permiten manejar estado estructurado desde comandos LaTeX normales.
  • pxUML — modelado UML de clases y objetos sobre TikZ/pgf-umlcd, con un registro que separa el modelo de dónde y cómo se dibuja.

Las APIs públicas siguen siendo utilizables desde documentos LaTeX2e normales; los internals pueden usar expl3, token lists, familias de keys y estructuras de datos cuando eso hace la implementación más limpia.

UML que se comporta como un modelo

pxUML es una de mis partes favoritas del proyecto. Una clase se registra con atributos, operaciones, herencia, tipo de objeto (class, interface, enumclass, etc.) e información opcional de implementación. Después, la misma definición almacenada puede dibujarse en posiciones o estilos distintos sin volver a escribir el modelo.

Eso hace que el trabajo de orientación a objetos sea mucho menos mecánico. Clases, interfaces, herencia y relaciones como asociaciones, composición o agregación se describen una vez y se renderizan como un diagrama UML propiamente dicho. Se parece mucho más a trabajar con un modelo de objetos que a dibujar cajas manualmente en un editor de diagramas.

Pensado para cómo se escriben de verdad las PECs

Gran parte del trabajo académico es iterativo: las capturas llegan tarde, los diagramas cambian, las tablas crecen y el informe tiene que seguir compilando mientras aún faltan piezas. P3CTeX tiene funciones diseñadas específicamente para ese workflow en lugar de tratar el documento como una página final e inmutable.

Por eso pxSRC puede conservar el espacio de una figura cuando la imagen todavía no está lista, las listas de imágenes pueden consumir capturas secuenciales, la configuración de metadatos y portada vive en keys reutilizables, y las tablas y estructuras UML se expresan como datos en lugar de repetir markup visual.

Programar en TeX también es muy distinto de programar aplicaciones convencionales. La expansión de macros, los streams de tokens y la frontera entre LaTeX2e y expl3 obligan a pensar APIs y estado de otra manera. Construir algo mantenible en ese entorno es una parte importante de por qué todavía disfruto trabajando en P3CTeX.

Verlo funcionando

El repositorio contiene los sources de los paquetes, manuales, ejemplos y suites de tests. Los ejemplos compilados son la forma más rápida de entender por qué existe el proyecto; los archivos .sty, .cls y .code.tex muestran la profundidad que hay detrás del resultado.

© Dídac Llorens. Este sitio es un portfolio personal y un índice de proyectos. AgenticCareerBoost, incluido el diseño y la implementación de esta página, está desarrollado con asistencia de IA y dirección humana.

El código fuente y los materiales de cada proyecto sólo están licenciados cuando el repositorio o archivo enlazado indica una licencia. Los principales repositorios activos se publican bajo GNU GPL v3.0 salvo que se indique lo contrario.

Las fotografías personales, dibujos y materiales visuales originales de Dídac Llorens se comparten bajo una licencia Creative Commons de atribución y reutilización no comercial, salvo que un archivo indique otra cosa. La marca personal, el contenido del CV, los textos del portfolio y la presentación de identidad no forman parte de la licencia del software.