📚 Plantilla TFG/TFM - Escuela Politécnica Superior

July 12, 2026 · View on GitHub

Universidad de Alicante

LaTeX License: MIT Version DOI listed on awesome-comunitat-valenciana

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íaDescripción
📝 Código FuenteInsertar y resaltar código con minted (40+ lenguajes)
📊 Figuras y GráficasCrear gráficos con pgfplots y TikZ
🖼️ Imágenes y SubfigurasIncluir imágenes, subfiguras y posicionamiento
📋 TablasTablas profesionales con booktabs
✍️ Texto y ListasFormato de texto, listas y descripciones
🔢 EcuacionesFórmulas matemáticas con amsmath
📖 BibliografíaGestión de referencias con BibLaTeX
📓 Glosarios y AcrónimosTérminos, siglas y símbolos
🔗 Referencias CruzadasEtiquetas, referencias y hyperref
Accesibilidad PDFPDFs accesibles (PDF/UA-2)
🤖 Contexto IAReferencia técnica completa para asistentes de IA
🔄 Flujos de trabajo IAGuí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:

ArchivoPropósito
AGENTS.mdInstrucciones para agentes de código autónomos (Codex, Devin, etc.)
CLAUDE.mdInstrucciones específicas para Claude
.github/copilot-instructions.mdInstrucciones para GitHub Copilot
docs/AI_CONTEXT.mdReferencia técnica completa
docs/AI_WORKFLOWS.mdFlujos de trabajo paso a paso para tareas comunes

Agentes especializados

AgentePara CopilotPara ClaudePrompts
Instalación guiada.github/agents/instalacion.mddocs/agents/instalacion-claude.mddocs/agents/prompts-instalacion.md
Redacción de capítulos.github/agents/redaccion.mddocs/agents/redaccion-claude.mddocs/agents/prompts-redaccion.md
Revisor tipo tribunal.github/agents/revisor.mddocs/agents/revisor-claude.mddocs/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:

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

IDTitulación
telecoIngeniería en Sonido e Imagen en Telecomunicación
civilIngeniería Civil
quimicaIngeniería Química
informaticaIngeniería Informática
multimediaIngeniería Multimedia
arquitectura-tecnicaArquitectura Técnica
arquitecturaArquitectura
roboticaIngeniería Robótica

Másteres

IDTitulación
master-telecoIngeniería de Telecomunicación
master-caminosCaminos, Canales y Puertos
master-edificacionGestión de la Edificación
master-webDesarrollo de Aplicaciones y Servicios Web
master-materialesMateriales, Agua y Terreno
master-informaticaIngeniería Informática
master-roboticaAutomática y Robótica
master-prevencionPrevención de Riesgos Laborales
master-aguaGestión Sostenible y Tecnologías del Agua
master-movilesSoftware para Dispositivos Móviles
master-quimicaIngeniería Química
master-ciberseguridadCiberseguridad
master-geologicaIngenierí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

Grado en Arquitectura Grado en Arquitectura Técnica Grado en Ingeniería Civil Grado en Ingeniería Informática Grado en Ingeniería Multimedia Grado en Ingeniería Química Grado en Ingeniería Robótica Grado en Ingeniería en Sonido e Imagen en Telecomunicación

Másteres

Máster Universitario en Gestión Sostenible y Tecnologías del Agua Máster Universitario en Ingeniería de Caminos, Canales y Puertos Máster Universitario en Ciberseguridad Máster Universitario en Gestión de la Edificación Máster Universitario en Ingeniería Geológica Máster Universitario en Ingeniería Informática Máster Universitario en Ingeniería de los Materiales, del Agua y del Terreno Máster Universitario en Desarrollo de Software para Dispositivos Móviles Máster Universitario en Prevención de Riesgos Laborales Máster Universitario en Ingeniería Química Máster Universitario en Automática y Robótica Máster Universitario en Ingeniería de Telecomunicación Máster Universitario en Desarrollo de Aplicaciones y Servicios Web

Ejemplo: Portada a color y B/N

Portada a color - Grado en Ingeniería en Sonido e Imagen en Telecomunicación Portada en blanco y negro - Grado en Ingeniería en Sonido e Imagen en Telecomunicación

### Comandos de Portada
% 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

TemaDescripciónSufijo
VS Code LightFondo blanco, ideal para impresión(ninguno)
VS Code DarkFondo oscuro, ideal para presentacionesDark

Variantes de Numeración

VarianteDescripciónSufijo
Con númerosMuestra números de línea(ninguno)
Sin númerosOculta números de líneaNN

Lenguajes con Entornos Predefinidos

LenguajeEntorno LightEntorno DarkIcono
PythonpythoncodepythoncodeDark🐍
JavaScriptjscodejscodeDark📜
TypeScripttscodetscodeDark📜
JavajavacodejavacodeDark
CccodeccodeDark©
C++cppcodecppcodeDark©
C#csharpcodecsharpcodeDark🪟
GogocodegocodeDark🔵
RustrustcoderustcodeDark🦀
PHPphpcodephpcodeDark🐘
RubyrubycoderubycodeDark💎
RrcodercodeDark📊
SwiftswiftcodeswiftcodeDark🍎
KotlinkotlincodekotlincodeDark🤖
HTMLhtmlcodehtmlcodeDark🌐
CSScsscodecsscodeDark🎨
SQLsqlcodesqlcodeDark🗃️
JSONjsoncodejsoncodeDark📋
YAMLyamlcodeyamlcodeDark📄
BashbashcodebashcodeDark💻
DockerdockercodedockercodeDark🐳
LaTeXlatexcode📝
Gitgitcode🔀

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

  1. Sube todos los archivos del proyecto a Overleaf
  2. Configura el compilador como LuaLaTeX
  3. Activa shell-escape en la configuración del proyecto
  4. 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:

  1. Copia tu contenido a los nuevos archivos en contenido/
  2. Adapta la configuración al nuevo formato \EPSsetup{}
  3. Convierte tu bibliografía al formato BibLaTeX si usabas apacite
  4. Actualiza los entornos de código a los nuevos (ej: lstlistingpythoncode)

🔧 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:

  1. El documento compilará con fuentes alternativas (DejaVu Sans)
  2. 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:

  1. Haz fork del repositorio
  2. Crea una rama para tu feature (git checkout -b feature/nueva-funcionalidad)
  3. Commit tus cambios (git commit -am 'Añade nueva funcionalidad')
  4. Push a la rama (git push origin feature/nueva-funcionalidad)
  5. Abre un Pull Request

Consulta la Guía de Contribución para más detalles.


🛠️ Herramientas y Recursos

Herramientas incluidas en el proyecto

HerramientaCómo ejecutarPara qué sirve
scripts/instalar.pypython3 scripts/instalar.pyComprueba e instala dependencias del entorno
scripts/revision-rapida.pypython3 scripts/revision-rapida.pyAnálisis estático del documento; genera informe-revision.md
.env.exampleCopiar a .env y rellenarCredenciales 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

EditorPlataformaDescripción
VS Code + LaTeX WorkshopWin/Mac/LinuxEditor moderno con excelente soporte LaTeX
TeXstudioWin/Mac/LinuxEditor dedicado a LaTeX, muy completo
TexmakerWin/Mac/LinuxSimilar a TeXstudio, más sencillo
OverleafWebEditor online, sin instalación

Herramientas útiles

HerramientaPara qué sirve
DetexifyDibuja un símbolo → obtén el comando LaTeX
Tables GeneratorCrea tablas visualmente
MathpixConvierte imágenes de ecuaciones a LaTeX
doi2bibGenera BibTeX desde DOI
Zotero + Better BibTeXGestión bibliográfica
JabRefGestor de bibliografía BibLaTeX
arXiv TeX Live InfoCompatibilidad con arXiv

Documentación y tutoriales

RecursoDescripción
Overleaf LearnTutoriales completos (EN/ES)
LaTeX WikibookReferencia exhaustiva
TeX StackExchangePreguntas y respuestas
CTANRepositorio de paquetes LaTeX
LaTeX ProjectDocumentación oficial de LaTeX
TikZ & PGF ManualDocumentación oficial de TikZ
PGFPlots ManualManual oficial de PGFPlots
BibLaTeX ManualDocumentació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! 🎓