📚 Plantilla TFG/TFM - Escuela Politécnica Superior
July 12, 2026 · View on GitHub
Universidad de Alicante
Plantilla LaTeX moderna y profesional para la elaboración de Trabajos de Fin de Grado (TFG) y Trabajos de Fin de Máster (TFM) de la Escuela Politécnica Superior de la Universidad de Alicante.
✨ Características
- 🎨 Portadas oficiales a color y en blanco/negro con diseño profesional
- 🎓 21 titulaciones preconfiguradas (8 grados + 13 másteres)
- ⚙️ Configuración simple mediante un único archivo
- 📝 Bibliografía APA 7 con BibLaTeX + Biber
- 💻 Resaltado de código para 25+ lenguajes con Minted
- 📊 Gráficas y diagramas con TikZ/PGFPlots
- 📖 Glosarios y acrónimos integrados
- 🚀 Optimización TikZ con caché de figuras
- 🔧 Compatible con Overleaf y editores locales
🆕 ¿Primera vez con LaTeX?
Si nunca has usado LaTeX, no te preocupes. Hemos preparado una guía completa para principiantes:
📖 Guía de LaTeX para Principiantes
Incluye:
- Qué es LaTeX y por qué usarlo
- Instalación paso a paso (Windows, macOS, Linux)
- Elegir un editor
- Tu primera compilación
- Errores comunes y soluciones
- Recursos de aprendizaje
� Documentación Especializada
Esta plantilla incluye una documentación exhaustiva para cada aspecto de tu TFG/TFM. Puedes acceder al índice completo o ir directamente a las guías específicas:
👉 ÍNDICE DE DOCUMENTACIÓN (Empieza aquí si tienes dudas)
Ver lista de guías disponibles
| Guía | Descripción |
|---|---|
| 📝 Código Fuente | Insertar y resaltar código con minted (40+ lenguajes) |
| 📊 Figuras y Gráficas | Crear gráficos con pgfplots y TikZ |
| 🖼️ Imágenes y Subfiguras | Incluir imágenes, subfiguras y posicionamiento |
| 📋 Tablas | Tablas profesionales con booktabs |
| ✍️ Texto y Listas | Formato de texto, listas y descripciones |
| 🔢 Ecuaciones | Fórmulas matemáticas con amsmath |
| 📖 Bibliografía | Gestión de referencias con BibLaTeX |
| 📓 Glosarios y Acrónimos | Términos, siglas y símbolos |
| 🔗 Referencias Cruzadas | Etiquetas, referencias y hyperref |
| ♿ Accesibilidad PDF | PDFs accesibles (PDF/UA-2) |
| 🤖 Contexto IA | Referencia técnica completa para asistentes de IA |
| 🔄 Flujos de trabajo IA | Guías paso a paso para tareas comunes |
🤖 Ayuda con IA
¿Usas ChatGPT, Claude, Copilot u otro asistente de IA? Este proyecto incluye archivos de contexto para que las IAs te ayuden mejor:
| Archivo | Propósito |
|---|---|
| AGENTS.md | Instrucciones para agentes de código autónomos (Codex, Devin, etc.) |
| CLAUDE.md | Instrucciones específicas para Claude |
| .github/copilot-instructions.md | Instrucciones para GitHub Copilot |
| docs/AI_CONTEXT.md | Referencia técnica completa |
| docs/AI_WORKFLOWS.md | Flujos de trabajo paso a paso para tareas comunes |
Agentes especializados
| Agente | Para Copilot | Para Claude | Prompts |
|---|---|---|---|
| Instalación guiada | .github/agents/instalacion.md | docs/agents/instalacion-claude.md | docs/agents/prompts-instalacion.md |
| Redacción de capítulos | .github/agents/redaccion.md | docs/agents/redaccion-claude.md | docs/agents/prompts-redaccion.md |
| Revisor tipo tribunal | .github/agents/revisor.md | docs/agents/revisor-claude.md | docs/agents/prompts-revisor.md |
Revisión automática: python3 scripts/revision-rapida.py genera un informe estático sin necesidad de IA.
Tip: Si usas ChatGPT, Gemini u otra IA sin integración directa, copia el contenido de docs/AI_CONTEXT.md en el chat para obtener respuestas precisas sobre esta plantilla.
🚀 Inicio Rápido
Instalación automática (recomendado)
La forma más sencilla de preparar el entorno es ejecutar el script de instalación incluido:
# Linux / macOS
python3 scripts/instalar.py
# Windows
python scripts/instalar.py
El script detecta qué falta, ofrece instalarlo automáticamente cuando es posible y guía paso a paso cuando requiere intervención manual. Si Python no está instalado aún, consulta la Guía para Principiantes.
Para ayuda interactiva, usa el agente de instalación:
- GitHub Copilot: carga
.github/agents/instalacion.mden Copilot Chat - Claude: consulta docs/agents/instalacion-claude.md o usa los prompts listos
Requisitos
- TeX Live 2024 o superior (recomendado: TeX Live 2025)
- LuaLaTeX como motor de compilación
- Biber para bibliografía
- Python + latexminted para resaltado de código (minted 3.x)
# Ubuntu/Debian (instalación manual)
sudo apt install texlive-full
pip3 install latexminted
# macOS con Homebrew
brew install --cask mactex
pip3 install latexminted
# Windows con MiKTeX
# Descargar desde https://miktex.org/download
pip install latexminted
Compilación
# Opción 1: Usando Make (recomendado)
make # Compilación completa
make quick # Compilación rápida (sin bibliografía)
make clean # Limpiar archivos auxiliares
make view # Abrir PDF generado
# Opción 2: Usando latexmk (compilación continua)
latexmk main.tex # Compilar una vez
latexmk -pvc main.tex # Compilar automáticamente al guardar
# Opción 3: Compilación manual
lualatex -shell-escape main.tex
biber main
lualatex -shell-escape main.tex
lualatex -shell-escape main.tex
📁 Estructura del Proyecto
TFG-TFM_EPS/
├── main.tex # Documento principal
├── configuracion.tex # Configuración del usuario
├── referencias.bib # Bibliografía
├── Makefile # Comandos de compilación
├── .latexmkrc # Configuración de latexmk
├── .env.example # Plantilla de credenciales (Copyleaks/Turnitin)
│
├── scripts/
│ ├── instalar.py # Script de instalación y diagnóstico del entorno
│ └── revision-rapida.py # Revisor estático del documento
│
├── cls/
│ └── eps-tfg.cls # Clase principal
│
├── sty/
│ ├── eps-portadas.sty # Paquete de portadas
│ ├── eps-codigo.sty # Estilos de código
│ └── ... # Otros paquetes de estilo
│
├── contenido/
│ ├── frontmatter/
│ │ └── preliminares.tex # Agradecimientos, resumen...
│ ├── capitulos/
│ │ ├── introduccion.tex
│ │ ├── marco-teorico.tex
│ │ ├── objetivos.tex
│ │ ├── metodologia.tex
│ │ ├── desarrollo.tex
│ │ ├── resultados.tex
│ │ └── conclusiones.tex
│ └── anexos/
│ ├── acronimos.tex
│ └── anexo-X.tex # Tus anexos
│
├── recursos/
│ ├── logos/ # Logos institucionales (PDF)
│ ├── fuentes/ # Fuentes tipográficas
│ ├── figuras/ # Tus figuras e imágenes
│ └── ejemplos/ # Ejemplos de código fuente
│
├── docs/ # Documentación detallada
│ ├── GUIA_PRINCIPIANTES.md
│ ├── CODIGO_FUENTE.md
│ ├── ECUACIONES.md
│ ├── agents/ # Agentes IA y prompts listos
│ └── ... # Más guías especializadas
│
├── .github/
│ ├── agents/ # Agentes para GitHub Copilot
│ └── workflows/
│ ├── build.yml # CI: compilar PDF
│ └── revision.yml # CI: revisión estática automática en PR
│
├── .vscode/ # Tareas y configuración para VS Code
├── AGENTS.md # Contexto para asistentes IA
├── CLAUDE.md # Instrucciones para Claude
├── CHANGELOG.md # Historial de cambios
└── CONTRIBUTING.md # Guía de contribución
⚙️ Configuración
Toda la configuración se realiza en el archivo configuracion.tex:
\EPSsetup{
% Información del trabajo
titulo = {Mi Título del Trabajo},
subtitulo = {Subtítulo opcional},
% Autor
autor = {Nombre Apellido1 Apellido2},
genero = m, % m = masculino, f = femenino, n = neutro
email = nombre@alu.ua.es,
% Tutor/es
tutor = {Dr. Nombre Apellido},
tutor-genero = m, % m = masculino, f = femenino, n = neutro
tutor-departamento = {Departamento de Ejemplo},
% cotutor = {Dra. Nombre Apellido}, % Opcional
% cotutor-genero = f,
% Titulación (ver lista completa abajo)
titulacion = informatica,
% Opciones
optimizar-tikz = true,
borrador = true, % Muestra notas TODO
}
Titulaciones Disponibles
Grados
| ID | Titulación |
|---|---|
teleco | Ingeniería en Sonido e Imagen en Telecomunicación |
civil | Ingeniería Civil |
quimica | Ingeniería Química |
informatica | Ingeniería Informática |
multimedia | Ingeniería Multimedia |
arquitectura-tecnica | Arquitectura Técnica |
arquitectura | Arquitectura |
robotica | Ingeniería Robótica |
Másteres
| ID | Titulación |
|---|---|
master-teleco | Ingeniería de Telecomunicación |
master-caminos | Caminos, Canales y Puertos |
master-edificacion | Gestión de la Edificación |
master-web | Desarrollo de Aplicaciones y Servicios Web |
master-materiales | Materiales, Agua y Terreno |
master-informatica | Ingeniería Informática |
master-robotica | Automática y Robótica |
master-prevencion | Prevención de Riesgos Laborales |
master-agua | Gestión Sostenible y Tecnologías del Agua |
master-moviles | Software para Dispositivos Móviles |
master-quimica | Ingeniería Química |
master-ciberseguridad | Ciberseguridad |
master-geologica | Ingeniería Geológica |
🎨 Portadas
La plantilla genera automáticamente portadas a color y en blanco/negro según la titulación seleccionada.
Galería de Portadas
Cada titulación tiene su propio diseño con colores y logotipos oficiales:
Grados
Másteres
Ejemplo: Portada a color y B/N
% Ambas portadas (por defecto)
\generarportada[ambas]
% Solo portada a color
\generarportada[solo-color]
% Solo portada en blanco y negro
\generarportada[solo-bn]
% Portadas individuales
\portadacolor
\portadabn
💻 Código Fuente
La plantilla incluye estilos de código basados en Visual Studio Code con temas Light y Dark, números de línea opcionales e iconos de lenguajes.
Temas Disponibles
| Tema | Descripción | Sufijo |
|---|---|---|
| VS Code Light | Fondo blanco, ideal para impresión | (ninguno) |
| VS Code Dark | Fondo oscuro, ideal para presentaciones | Dark |
Variantes de Numeración
| Variante | Descripción | Sufijo |
|---|---|---|
| Con números | Muestra números de línea | (ninguno) |
| Sin números | Oculta números de línea | NN |
Lenguajes con Entornos Predefinidos
| Lenguaje | Entorno Light | Entorno Dark | Icono |
|---|---|---|---|
| Python | pythoncode | pythoncodeDark | 🐍 |
| JavaScript | jscode | jscodeDark | 📜 |
| TypeScript | tscode | tscodeDark | 📜 |
| Java | javacode | javacodeDark | ☕ |
| C | ccode | ccodeDark | © |
| C++ | cppcode | cppcodeDark | © |
| C# | csharpcode | csharpcodeDark | 🪟 |
| Go | gocode | gocodeDark | 🔵 |
| Rust | rustcode | rustcodeDark | 🦀 |
| PHP | phpcode | phpcodeDark | 🐘 |
| Ruby | rubycode | rubycodeDark | 💎 |
| R | rcode | rcodeDark | 📊 |
| Swift | swiftcode | swiftcodeDark | 🍎 |
| Kotlin | kotlincode | kotlincodeDark | 🤖 |
| HTML | htmlcode | htmlcodeDark | 🌐 |
| CSS | csscode | csscodeDark | 🎨 |
| SQL | sqlcode | sqlcodeDark | 🗃️ |
| JSON | jsoncode | jsoncodeDark | 📋 |
| YAML | yamlcode | yamlcodeDark | 📄 |
| Bash | bashcode | bashcodeDark | 💻 |
| Docker | dockercode | dockercodeDark | 🐳 |
| LaTeX | latexcode | — | 📝 |
| Git | gitcode | — | 🔀 |
Ejemplos de Uso
% ===== TEMA LIGHT (fondo blanco) =====
% Python con números de línea
\begin{pythoncode}
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
\end{pythoncode}
% Python SIN números de línea
\begin{pythoncodeNN}
print("Hola mundo")
\end{pythoncodeNN}
% JavaScript con título personalizado
\begin{jscode}[title={Validación de email}]
function validateEmail(email) {
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}
\end{jscode}
% ===== TEMA DARK (fondo oscuro) =====
% Python Dark con números
\begin{pythoncodeDark}
import numpy as np
resultado = np.array([1, 2, 3])
\end{pythoncodeDark}
% Python Dark SIN números
\begin{pythoncodeDarkNN}
print("Sin números de línea")
\end{pythoncodeDarkNN}
% ===== ENTORNO GENÉRICO (cualquier lenguaje) =====
% Light con números
\begin{codigo}{swift}
let mensaje = "Hola desde Swift"
print(mensaje)
\end{codigo}
% Light sin números
\begin{codigoNN}{kotlin}
fun main() = println("Hola")
\end{codigoNN}
% Dark con números
\begin{codigoDark}{scala}
object Main extends App {
println("Hola Scala")
}
\end{codigoDark}
% Dark sin números
\begin{codigoDarkNN}{haskell}
main = putStrLn "Hola Haskell"
\end{codigoDarkNN}
Resumen de Sufijos
entorno → Light + números de línea
entornoNN → Light + sin números
entornoDark → Dark + números de línea
entornoDarkNN → Dark + sin números
📚 Bibliografía
La plantilla usa BibLaTeX con Biber y estilo APA 7.
Archivo referencias.bib
@book{autor2024,
author = {García, María},
title = {Título del Libro},
publisher = {Editorial},
year = {2024},
isbn = {978-0000000000}
}
@article{ejemplo2024,
author = {López, Juan},
title = {Título del Artículo},
journal = {Revista Científica},
year = {2024},
volume = {10},
pages = {1--15},
doi = {10.1234/ejemplo}
}
Citar en el texto
Según \textcite{autor2024}, el tema es importante...
Esto ha sido estudiado previamente \parencite{ejemplo2024}.
📝 Acrónimos
Define acrónimos en contenido/anexos/acronimos.tex:
\newacronym{api}{API}{Application Programming Interface}
\newacronym{ml}{ML}{Machine Learning}
Usa en el texto:
La \gls{api} permite... % Primera vez: Application Programming Interface (API)
Usando \gls{api}... % Después: API
La \acrlong{ml} es... % Machine Learning
🔧 Personalización
Añadir Nueva Titulación
Para añadir una titulación que no esté incluida, contacta con el mantenedor o edita cls/eps-tfg.cls:
% En la sección de definición de titulaciones
\__eps_define_titulacion:nnnnnnn {mi-titulacion}
{Nombre Completo de Mi Titulación}
{tfg} % o tfm
{mi-color} % definir color previamente
{blanco} % o negro, según el fondo
{Blanco} % variante del logo para portada
{Negro} % variante del logo normal
Cambiar Colores
Los colores de las titulaciones se definen en la clase. Para personalizar:
% En configuracion.tex, después de \EPSsetup
\definecolor{mi-color}{RGB}{100,150,200}
🌐 Uso en Overleaf
- Sube todos los archivos del proyecto a Overleaf
- Configura el compilador como LuaLaTeX
- Activa shell-escape en la configuración del proyecto
- Compila
main.tex
⚠️ Nota: Algunas funcionalidades como minted requieren shell-escape habilitado.
📋 Cambios respecto a v1.x
Novedades en v2.0
- ✅ Motor actualizado a LuaLaTeX
- ✅ Bibliografía migrada a BibLaTeX + Biber
- ✅ Sistema de configuración key-value moderno
- ✅ Código con Minted (25+ lenguajes)
- ✅ Logos convertidos a PDF
- ✅ Estructura de carpetas reorganizada
- ✅ Eliminado conflicto babel/polyglossia
- ✅ Clase modular con paquetes separados
- ✅ Soporte mejorado para personalización
Migración desde v1.x
Si tienes un documento con la versión anterior:
- Copia tu contenido a los nuevos archivos en
contenido/ - Adapta la configuración al nuevo formato
\EPSsetup{} - Convierte tu bibliografía al formato BibLaTeX si usabas
apacite - Actualiza los entornos de código a los nuevos (ej:
lstlisting→pythoncode)
🔧 Solución de Problemas
Error: "File 'minted.sty' not found"
Instalar el paquete de Python latexminted:
pip3 install latexminted
Error: "You must invoke LaTeX with -shell-escape"
Asegúrate de usar la opción -shell-escape:
lualatex -shell-escape main.tex
# O simplemente usa:
make
Error: "Font not found"
La plantilla usa fuentes del sistema con fallbacks. Si aparecen warnings sobre fuentes:
- El documento compilará con fuentes alternativas (DejaVu Sans)
- Para mejores resultados, instala las fuentes del sistema
La bibliografía no aparece
Ejecuta Biber entre compilaciones:
lualatex -shell-escape main.tex
biber main
lualatex -shell-escape main.tex
El código fuente no tiene colores
Verifica que latexminted esté instalado:
latexminted --version
# Si no está: pip3 install latexminted
Compilación muy lenta
Activa la caché de figuras TikZ en configuracion.tex:
\EPSsetup{
optimizar-tikz = true,
}
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Añade nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Consulta la Guía de Contribución para más detalles.
🛠️ Herramientas y Recursos
Herramientas incluidas en el proyecto
| Herramienta | Cómo ejecutar | Para qué sirve |
|---|---|---|
scripts/instalar.py | python3 scripts/instalar.py | Comprueba e instala dependencias del entorno |
scripts/revision-rapida.py | python3 scripts/revision-rapida.py | Análisis estático del documento; genera informe-revision.md |
.env.example | Copiar a .env y rellenar | Credenciales para Copyleaks y Turnitin (opcional) |
La revisión estática también se ejecuta automáticamente en cada push/PR mediante el workflow de GitHub Actions (.github/workflows/revision.yml).
Editores recomendados
| Editor | Plataforma | Descripción |
|---|---|---|
| VS Code + LaTeX Workshop | Win/Mac/Linux | Editor moderno con excelente soporte LaTeX |
| TeXstudio | Win/Mac/Linux | Editor dedicado a LaTeX, muy completo |
| Texmaker | Win/Mac/Linux | Similar a TeXstudio, más sencillo |
| Overleaf | Web | Editor online, sin instalación |
Herramientas útiles
| Herramienta | Para qué sirve |
|---|---|
| Detexify | Dibuja un símbolo → obtén el comando LaTeX |
| Tables Generator | Crea tablas visualmente |
| Mathpix | Convierte imágenes de ecuaciones a LaTeX |
| doi2bib | Genera BibTeX desde DOI |
| Zotero + Better BibTeX | Gestión bibliográfica |
| JabRef | Gestor de bibliografía BibLaTeX |
| arXiv TeX Live Info | Compatibilidad con arXiv |
Documentación y tutoriales
| Recurso | Descripción |
|---|---|
| Overleaf Learn | Tutoriales completos (EN/ES) |
| LaTeX Wikibook | Referencia exhaustiva |
| TeX StackExchange | Preguntas y respuestas |
| CTAN | Repositorio de paquetes LaTeX |
| LaTeX Project | Documentación oficial de LaTeX |
| TikZ & PGF Manual | Documentación oficial de TikZ |
| PGFPlots Manual | Manual oficial de PGFPlots |
| BibLaTeX Manual | Documentación de bibliografía |
📄 Licencia
Este proyecto está bajo la licencia MIT.
Puedes:
- ✅ Usar la plantilla para tu TFG/TFM
- ✅ Modificar y adaptar a tus necesidades
- ✅ Compartir con otros estudiantes
- ✅ Usarla en proyectos privados o comerciales
Debes:
- 📝 Mantener el aviso de copyright y la licencia en las copias
⭐ Agradecimientos
- A la Escuela Politécnica Superior de la Universidad de Alicante
- A todos los estudiantes que han usado y mejorado esta plantilla
- A la comunidad LaTeX por las herramientas utilizadas
¡Buena suerte con tu TFG/TFM! 🎓