Este archivo define las reglas de trabajo para agentes de código autónomos (Codex, Devin, OpenHands, Jules, etc.) y para cualquier asistente de IA que opere sobre este repositorio.
Para instrucciones específicas por herramienta:
- Claude / claude.ai: ver
CLAUDE.md- GitHub Copilot: ver
.github/copilot-instructions.md- Referencia técnica completa: ver
docs/AI_CONTEXT.md- Flujos de trabajo: ver
docs/AI_WORKFLOWS.md
Plantilla LaTeX para Trabajos de Fin de Grado (TFG) y Máster (TFM) de la Escuela Politécnica Superior (EPS) de la Universidad de Alicante (UA).
- Versión: 2.2.2 (2026)
- Motor de compilación: LuaLaTeX (obligatorio, nunca pdfLaTeX)
- Clase principal:
cls/eps-tfg.cls(basada en KOMA-Scriptscrbook) - Bibliografía: BibLaTeX + Biber, estilo APA 7
- Código fuente: paquete
minted3.x conlatexminted - Idiomas soportados: español, valenciano, inglés
| Archivo / Directorio | Propósito |
|---|---|
configuracion.tex |
Datos del autor, título, titulación, idioma |
contenido/capitulos/*.tex |
Contenido de cada capítulo |
contenido/anexos/*.tex |
Anexos (excepto acronimos.tex con cuidado) |
contenido/frontmatter/preliminares.tex |
Agradecimientos, resumen, abstract |
referencias.bib |
Entradas bibliográficas |
main.tex |
Solo para: añadir/quitar \input{} de capítulos, activar módulos de componentes, añadir \addbibresource |
| Archivo | Razón |
|---|---|
cls/eps-tfg.cls |
Clase principal; cambios rompen toda la plantilla |
sty/*.sty |
Paquetes de estilo; requieren conocimiento profundo |
sty/componentes/*.sty |
Módulos especializados |
cls/eps-metadata.tex |
Solo cambiar lang= si se cambia el idioma |
.latexmkrc |
Configuración de compilación |
Makefile |
Automatización de compilación |
.github/workflows/*.yml |
CI/CD |
scripts/instalar.py |
Script de instalación; requiere coherencia con el agente |
scripts/revision-rapida.py |
Revisor estático; lógica de análisis sensible |
Si se cambia idioma en configuracion.tex, siempre actualizar también
cls/eps-metadata.tex:
idioma = espanol → lang=es-ES
idioma = valenciano → lang=ca-ES
idioma = ingles → lang=en-GB
make # Compilación completa (lualatex + biber + 2× lualatex)
make quick # Una sola pasada de lualatex (para verificar sintaxis)
make clean # Eliminar archivos auxiliares
make watch # Compilación continua con latexmkPara verificar que el documento compila sin errores tras un cambio:
make quick 2>&1 | tail -20Si hay errores de bibliografía o referencias cruzadas, usar make completo.
TFG-TFM_EPS/
├── main.tex # Archivo raíz (no escribir contenido aquí)
├── configuracion.tex # Variables del usuario
├── referencias.bib # Bibliografía
├── cls/
│ ├── eps-tfg.cls # Clase principal
│ └── eps-metadata.tex # Metadatos PDF y accesibilidad
├── sty/
│ ├── eps-codigo.sty # Entornos de código (minted)
│ ├── eps-componentes.sty # Cargador modular de componentes
│ ├── eps-portadas.sty # Generación de portadas
│ └── componentes/ # Módulos especializados por disciplina
├── contenido/
│ ├── capitulos/ # Un .tex por capítulo
│ ├── anexos/ # Anexos y acrónimos
│ └── frontmatter/ # Preliminares (resumen, agradecimientos)
├── recursos/
│ └── logos/ # Logotipos institucionales
└── docs/ # Documentación técnica
Toda la configuración se hace en configuracion.tex mediante \EPSsetup{...}.
\EPSsetup{
titulo = {Título del trabajo},
autor = {Nombre Apellido1 Apellido2},
tutor = {Dr./Dra. Nombre Apellido},
tutor-departamento = {Departamento de ...},
titulacion = informatica, % ver tabla de titulaciones
fecha = {Junio 2026},
}Grados (TFG): arquitectura, arquitectura-tecnica, civil,
informatica, multimedia, quimica, robotica, teleco
Másteres (TFM): master-agua, master-caminos, master-ciberseguridad,
master-edificacion, master-geologica, master-informatica,
master-materiales, master-moviles, master-prevencion, master-quimica,
master-robotica, master-teleco, master-web
Activar en main.tex según la titulación:
\usepackage[software]{eps-componentes} % Informática / Multimedia
\usepackage[telecom]{eps-componentes} % Telecomunicaciones
\usepackage[arquitectura]{eps-componentes} % Arquitectura / Civil
\usepackage[quimica]{eps-componentes} % Química
\usepackage[all]{eps-componentes} % Todos (más lento)\begin{infobox}{Título} ... \end{infobox}
\begin{warningbox}{Título} ... \end{warningbox}
\begin{dangerbox}{Título} ... \end{dangerbox}
\begin{successbox}{Título} ... \end{successbox}
\begin{tipbox}{Título} ... \end{tipbox}
\begin{notebox}{Título} ... \end{notebox}
\begin{definitionbox}{Título} ... \end{definitionbox}
\begin{examplebox}{Título} ... \end{examplebox}\begin{terminal}[title={bash}]
$ comando --opcion
\end{terminal}
\begin{apiendpoint}{GET}{/api/v1/recurso}{Descripción}
...
\end{apiendpoint}
\begin{jsoncode}
{ "clave": "valor" }
\end{jsoncode}Definidos en sty/eps-codigo.sty. Usar siempre estos en lugar de verbatim
o lstlisting.
\begin{pythoncode}[title={script.py}]
def funcion():
return True
\end{pythoncode}
\begin{jscode}
console.log("JavaScript");
\end{jscode}
\begin{cppcode}
int main() { return 0; }
\end{cppcode}Variantes disponibles: pythoncode, jscode, cppcode, javacode,
matlabcode, bashcode, sqlcode, jsoncode, yamlcode, htmlcode,
csscode, rcode, rustcode, gocode, phpcode.
Sufijo Dark para tema oscuro: pythoncodeDark, jscodeDark, etc.
\begin{table}[htbp]
\centering
\caption{Título de la tabla.}
\label{tab:nombre}
\begin{tabular}{lcc}
\toprule
Columna 1 & Columna 2 & Columna 3 \\
\midrule
Dato & 100 & 50\% \\
\bottomrule
\end{tabular}
\end{table}\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{recursos/figuras/imagen}
\caption{Descripción.}
\label{fig:nombre}
\end{figure}Prefijos de etiquetas a respetar:
| Prefijo | Tipo de elemento |
|---|---|
chap: |
Capítulo |
sec: |
Sección |
fig: |
Figura |
tab: |
Tabla |
eq: |
Ecuación |
cod: |
Bloque de código |
anexo: |
Anexo |
Formato de cita en el texto:
\parencite{clave} % (Autor, 2024)
\textcite{clave} % Autor (2024)
\parencite[p.~50]{clave} % (Autor, 2024, p. 50)Formato de entrada en referencias.bib:
@article{apellido2024,
author = {Apellido, Nombre},
title = {Título del artículo},
journal = {Nombre de la revista},
year = {2024},
volume = {10},
pages = {1--15},
doi = {10.xxxx/xxxxx},
}- ❌ Usar
pdflatexoxelatex. Solo LuaLaTeX. - ❌ Usar
\usepackage[utf8]{inputenc}. LuaLaTeX maneja UTF-8 nativamente. - ❌ Usar
\usepackage{subfigure}. Usarsubcaption(ya incluido). - ❌ Usar
\usepackage{subfig}. Usarsubcaption. - ❌ Usar paquetes obsoletos:
utf8x,t1enc,ae,times,mathptmx. - ❌ Usar
\begin{verbatim}para código. Usar los entornos*code. - ❌ Usar
\begin{lstlisting}. Usar los entornos*codede minted. - ❌ Escribir contenido en
main.tex. Solo estructura. - ❌ Crear portadas manualmente. Usar
\generarportada[ambas]. - ❌ Usar
\include{}para capítulos si no se quiere salto de página forzado. Usar\input{}. - ❌ Modificar
cls/eps-tfg.clspara ajustes menores de formato. - ❌ Usar
\bibliographystyle{}+\bibliography{}. Usar BibLaTeX con\printbibliography. - ❌ Usar tablas sin
booktabs(\hlineen lugar de\toprule/\midrule/\bottomrule).
Error en .log |
Causa | Solución |
|---|---|---|
TeX capacity exceeded [main memory size=5000000] |
Casi siempre, motor incorrecto (XeLaTeX/pdfLaTeX, de memoria fija); si el motor ya es LuaLaTeX, revisar el contexto en main.log (macro recursiva, documento enorme) |
Compilar con LuaLaTeX; en Overleaf, Menu → Compiler → LuaLaTeX (docs/OVERLEAF.md) |
ESTA PLANTILLA REQUIERE LuaLaTeX |
Guard de motor de la plantilla: el motor no es LuaTeX | Compilar con LuaLaTeX (make) |
Undefined control sequence \EPSsetup |
configuracion.tex cargado antes de la clase |
Verificar orden en main.tex |
You must invoke LaTeX with -shell-escape |
Falta flag en compilación | Usar make o añadir -shell-escape |
Pygments not found |
latexminted no instalado |
pip install latexminted |
Citation 'X' undefined |
Biber no ejecutado | Ejecutar make completo |
Font ... not found |
TeX Live incompleto | Instalar TeX Live completo |
File 'X.sty' not found |
Paquete no instalado | tlmgr install X |
Además de las instrucciones generales de este archivo, existen agentes especializados para las tareas más comunes:
Ayuda a un estudiante sin experiencia a instalar y configurar el entorno completo (LaTeX, Python, latexminted, make) en Windows, macOS o Linux.
- GitHub Copilot:
.github/agents/instalacion.md - Claude:
docs/agents/instalacion-claude.md - Prompts listos:
docs/agents/prompts-instalacion.md
Flujos cubiertos: instalación desde cero, diagnóstico tras ejecutar
scripts/instalar.py, errores de compilación, instalación en Windows sin
experiencia, configuración de verificación de plagio.
Ayuda a redactar secciones y capítulos completos en LaTeX respetando las convenciones de la plantilla.
- GitHub Copilot:
.github/agents/redaccion.md - Claude:
docs/agents/redaccion-claude.md - Prompts listos:
docs/agents/prompts-redaccion.md
Flujos cubiertos: capítulo desde cero, expandir esquema, mejorar fragmento, resumen/abstract, conclusiones, introducción.
Evalúa el documento completo en 8 dimensiones y genera un informe de revisión estructurado antes de la defensa.
- GitHub Copilot:
.github/agents/revisor.md - Claude:
docs/agents/revisor-claude.md - Prompts listos:
docs/agents/prompts-revisor.md
Dimensiones: estructura, coherencia, bibliografía, lenguaje, formato LaTeX, figuras/tablas, plagio semántico, normativa EPS UA.
Comprobación e instalación del entorno:
python3 scripts/instalar.py # Linux / macOS
python scripts/instalar.py # WindowsDetecta dependencias faltantes (LaTeX, Python, latexminted, make) y ofrece
instalarlas automáticamente. Acepta --auto para ejecución no interactiva.
Revisión estática del documento:
python3 scripts/revision-rapida.py # Linux / macOS
python scripts/revision-rapida.py # WindowsAnálisis estático que detecta referencias rotas, comandos prohibidos, citas
sin entrada .bib y más. Genera informe-revision.md. También se ejecuta
automáticamente como GitHub Action en cada push/PR que modifique archivos .tex.
Verificación de plagio (opcional):
Copiar .env.example a .env y rellenar las claves de Copyleaks o Turnitin.
El revisor las detecta automáticamente y añade el resultado al informe.
Si un usuario quiere pegar contexto en un chat de IA externo (ChatGPT, Gemini,
etc.), debe copiar el contenido de docs/AI_CONTEXT.md, que contiene la
referencia técnica completa de la plantilla.