El sistema de compilación de SJTUThesis, la plantilla LaTeX para tesis de la Universidad Jiao Tong de Shanghai, utiliza Makefile y scripts de lote para ofrecer una solución de construcción de documentos interplataforma. Esta explicación profundiza en cómo funcionan estos scripts para facilitar la compilación eficiente de tesis.
Componentes principales del sistema de compilación
El sistema se compone de dos scripts específicos para cada plataforma:
- Makefile: Herramienta de automatización para Linux/macOS.
- Compile.bat: Script optimizado para Windows.
Ambos scripts se encuentran en el directorio raíz del proyecto y proporcionan comandos unificados para compilar, limpiar y realizar estadísticas de palabras, garantizando una experiencia de usuario consistente en todos los sistemas operativos.
Makefile para Linux/macOS: Análisis detallado
Parámetros de configuración principal
El Makefile define parámetros clave a partir de la línea 3:
# Nombre base del documento de tesis
DOCUMENTO = texto_principal
# Opciones para latexmk
OPCIONES_LATEXMK = -time -file-line-error -halt-on-error -interaction=nonstopmode
Establece el documento principal como texto_principal.tex y configura opciones de latexmk, incluyendo detención en errores y modo no interactivo.
Diseño compatible entre plataformas
Las líneas 11-17 manejan la compatibilidad entre Windows y sistemas tipo Unix:
ifdef SystemRoot
BORRAR = del /Q
ABRIR = start
else
BORRAR = rm -f
ABRIR = open
endif
Detecta variables de entorno del sistema para cambiar automáticamente los comandos de eliminación de archivos y apertura de PDF, asegurando la portabilidad del script.
Objetivos de funcionalidad principales
El Makefile define cinco objetivos clave:
- all (objetivo predeterminado): Ejecuta el flujo completo de compilación para generar
texto_principal.pdf. - pvc: Inicia modo de vista previa en tiempo real, recompilando automáticamente al modificar archivos.
- view: Abre el documento PDF generado.
- wordcount: Cuenta palabras de la tesis, con detección automática de chino e inglés.
- clean/cleanall: Limpia archivos intermedios o todos los archivos generados.
Compile.bat para Windows: Análisis del script de lote
Configuración de codificación y entorno
El script de lote comienza con configuraciones esenciales:
chcp 65001 >nul # Establece codificación UTF-8
call :configurarESC # Configura secuencias de escape ANSI para salida coloreada
Estas configuraciones garantizan una visualización correcta del chino y preparan la base para mensajes con color.
Diseño con soporte para múltiples parámetros
Las líneas 9-44 implementan un mecanismo flexible de procesamiento de parámetros, admitiendo las siguientes opciones de comando:
tesis(predeterminado): Compila la tesis completa.limpiar: Limpia archivos intermedios.limpiartodo: Limpia todos los archivos generados, incluido el PDF.contarpalabras: Cuenta palabras.ayuda: Muestra información de ayuda.
Este diseño permite a los usuarios cambiar entre funcionalidades mediante comandos simples, como Compile.bat contarpalabras para obtener estadísticas rápidas.
Mecanismo de manejo de errores
Las líneas 17-25 implementan un manejo de errores robusto:
if ERRORLEVEL 1 (
echo %ESC%[31m¡Error! Consulta el archivo %ESC%[7m'%TESIS%.log'%ESC%[0;31m para más detalles . . .%ESC%[0m
pause
) else (
call :limpiar
echo %ESC%[32m¡Completado!%ESC%[0m
pause
)
Cuando ocurre un error de compilación, el script muestra una alerta destacada y se pausa, facilitando al usuario la revisión del archivo de registro para identificar problemas.
Técnicas de compilación eficiente y mejores prácticas
Principio de compilación incremental
Ambos scripts utilizan la herramienta latexmk para implementar compilación incremental, procesando solo archivos modificados. Parámetros clave incluyen:
-time: Registra la hora de modificación de archivos.- Manejo automático de referencias cruzadas y bibliografías.
Este mecanismo acelera las compilaciones posteriores en un factor de 3 a 5 en comparación con la compilación inicial, mejorando significativamente la eficiencia de escritura.
Detalles de la funcionalidad de conteo de palabras
Las líneas 32-38 del Makefile y 76-108 del Compile.bat implementan un conteo inteligente de palabras:
- Detección automática del idioma de la tesis (chino/inglés).
- Conteo separado de caracteres chinos puros, caracteres en inglés y palabras totales.
- Exclusión de comentarios y comandos TeX para contar solo contenido real.
Modo de uso:
# Linux/macOS
make contarpalabras
# Windows
Compile.bat contarpalabras
Guía para usar comandos de limpieza
Seleccione el comando de limpieza adecuado según las necesidades:
- Limpieza ligera (conserva PDF):
make limpiaroCompile.bat limpiar. - Limpieza completa (elimina PDF):
make limpiartodooCompile.bat limpiartodo.
Se recomienda realizar una limpieza completa antes de enviar al control de versiones, conservando solo los archivos fuente.
Flujo de compilación y relación con el archivo principal
Los scripts de compilación colaboran estrechamennte con el documento principal, texto_principal.tex, en puntos clave como:
- Definición de estructura del documento: La declaración
\documentclassen la línea 6 de texto_principal.tex determina los parámetros de compilación. - Contenido modular: Se importan capítulos mediante
\input{capitulos/...}, y el script gestiona automáticamente las dependencias. - Referencias cruzadas: El script ejecuta LaTeX múltiples veces para resolver referencias.
El flujo de compilación típico es: LaTeX → BibTeX → LaTeX → LaTeX, asegurando que todas las referencias y numeraciones se generen correctamente.
Selección del método de compilación adecuado
El sistema de compilación de SJTUThesis ofrece soluciones consistentes y eficientes para usuarios en diferentes plataformas:
- Usuarios de Linux/macOS: Utilicen el comando
makedirectamente para disfrutar de una experiencia de terminal concisa y potente. - Usuarios de Windows: Ejecuten Compile.bat haciendo doble clic o desde la línea de comandos para obtener indicaciones intuitivas en chino.
Independientemente de la elección, el sistema gestiona automáticamente el complejo flujo de compilación de LaTeX, permitiendo a los investigadores enfocarse en la creación de contenido en lugar del manejo de formatos.