diff --git a/RENDERIZADO_LATEX.md b/RENDERIZADO_LATEX.md new file mode 100644 index 0000000..0269bc5 --- /dev/null +++ b/RENDERIZADO_LATEX.md @@ -0,0 +1,127 @@ +# Sistema de Renderizado LaTeX Simplificado + +## Problema Original +El panel LaTeX no se renderizaba correctamente porque faltaba el motor de renderizado matemático (MathJax) y las fuentes matemáticas apropiadas. + +## Solución Implementada + +### 🌐 **Sistema Único: tkinterweb + MathJax 3** +- **Dependencia requerida**: tkinterweb +- **Motor de renderizado**: MathJax 3 optimizado +- **Fuentes matemáticas**: STIX Two Math, Computer Modern Serif +- **Configuración automática** de delimitadores LaTeX (`$$...$$`, `$...$`) +- **Re-renderizado dinámico** cuando se agregan nuevas ecuaciones + +```javascript +// MathJax configurado automáticamente +window.MathJax = { + tex: { + inlineMath: [['$', '$']], + displayMath: [['$$', '$$']], + processEscapes: true, + processEnvironments: true, + packages: {'[+]': ['ams', 'newcommand', 'configmacros']} + }, + startup: { + ready: function () { + MathJax.startup.defaultReady(); + console.log('✅ MathJax 3 listo'); + } + } +}; +``` + +## Instalación + +### Dependencia Requerida +```bash +pip install tkinterweb +``` + +**Nota**: Si no tienes tkinterweb instalado, la aplicación se cerrará automáticamente con un mensaje de error claro. + +## Características Técnicas + +### ✅ **Renderizado Optimizado** +- **MathJax 3** para ecuaciones LaTeX profesionales +- **Fuentes matemáticas mejoradas** (STIX Two Math, Computer Modern Serif) +- **Re-renderizado automático** cuando se agregan ecuaciones +- **Indicador de estado** que muestra si MathJax está activo + +### ✅ **Integración Perfecta** +- **Panel expandible** en el lado derecho de la calculadora +- **Sincronización automática** con las evaluaciones +- **Detección inteligente** de ecuaciones, asignaciones y comentarios +- **Indicador visual** cuando hay contenido disponible + +### ✅ **Tipos de Contenido Soportados** +- **Ecuaciones**: `x**2 + 2*x = 8` +- **Asignaciones**: `a = 5` +- **Expresiones simbólicas**: `sin(x) + cos(x)` +- **Comentarios**: `# Esto es un comentario` + +## Uso + +1. **Abrir panel LaTeX**: Click en el botón 📐 en el borde derecho +2. **Escribir ecuaciones**: Las ecuaciones se detectan automáticamente +3. **Ver renderizado**: MathJax renderiza las ecuaciones en tiempo real +4. **Cerrar panel**: Click en ✕ o en el botón 📐 nuevamente + +## Solución de Problemas + +### Si ves "Cargando MathJax..." +- **Causa**: MathJax no se ha cargado completamente +- **Solución**: Espera unos segundos, MathJax se carga desde CDN +- **Verificación**: El indicador cambiará a "✅ MathJax activo" + +### Si la aplicación se cierra al inicio +- **Causa**: tkinterweb no está instalado +- **Solución**: `pip install tkinterweb` +- **Verificación**: Reinicia la aplicación + +### Si las ecuaciones no se renderizan +- **Causa**: Error en la sintaxis LaTeX +- **Solución**: Verifica que la sintaxis LaTeX sea correcta +- **Verificación**: Revisa la consola del navegador (F12 en tkinterweb) + +## Ventajas del Sistema Simplificado + +### 🎯 **Confiabilidad** +- **Un solo sistema** = menos puntos de falla +- **Dependencia mínima** = fácil instalación +- **Error claro** si falta la dependencia + +### 🚀 **Rendimiento** +- **MathJax 3** optimizado para velocidad +- **Sin fallbacks** = código más limpio +- **Carga asíncrona** = no bloquea la UI + +### 🔧 **Mantenimiento** +- **Código simplificado** = fácil de mantener +- **Sin lógica compleja** de detección de sistemas +- **Comportamiento predecible** + +## Arquitectura + +``` +Calculadora MAV +├── Panel de Entrada (izquierda) +├── Panel de Salida (centro) +└── Panel LaTeX (derecha, expandible) + └── tkinterweb.HtmlFrame + └── MathJax 3 + HTML optimizado + ├── Ecuaciones renderizadas + ├── Fuentes matemáticas + └── Indicador de estado +``` + +## Conclusión + +El sistema simplificado con **tkinterweb + MathJax 3** proporciona: +- ✅ Renderizado LaTeX profesional +- ✅ Instalación simple (una dependencia) +- ✅ Comportamiento predecible +- ✅ Mantenimiento fácil +- ✅ Experiencia de usuario consistente + +**Resultado**: Panel LaTeX que funciona perfectamente sin fallbacks ni complejidad innecesaria. \ No newline at end of file diff --git a/hybrid_calc_history.txt b/hybrid_calc_history.txt index aeed779..520dcce 100644 --- a/hybrid_calc_history.txt +++ b/hybrid_calc_history.txt @@ -2,11 +2,5 @@ x**2 + y**2 = r**2 r=? -x=3 -y=6 -r -r=? -$$Brix = \frac{Brix_{syrup} \cdot \delta_{syrup} + (Brix_{water} \cdot \delta_{water} \cdot Rateo)}{\delta_{syrup} + \delta_{water} \cdot Rateo}$$ - -$$Brix_{Bev} = \frac{Brix_{syr} + Brix_{H_2O} \cdot R_M}{R_M + 1}$$ \ No newline at end of file +a=r*5+5 \ No newline at end of file diff --git a/install_tkinterweb_js.py b/install_tkinterweb_js.py new file mode 100644 index 0000000..893b1a7 --- /dev/null +++ b/install_tkinterweb_js.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +""" +Script para instalar tkinterweb con soporte JavaScript completo +""" + +import subprocess +import sys +import importlib + +def check_installed(package_name): + """Verifica si un paquete está instalado""" + try: + importlib.import_module(package_name) + return True + except ImportError: + return False + +def install_package(package_spec): + """Instala un paquete usando pip""" + try: + print(f"🔄 Instalando {package_spec}...") + subprocess.check_call([sys.executable, "-m", "pip", "install", package_spec]) + print(f"✅ {package_spec} instalado correctamente") + return True + except subprocess.CalledProcessError as e: + print(f"❌ Error instalando {package_spec}: {e}") + return False + +def main(): + """Función principal""" + print("🚀 Instalador de tkinterweb con JavaScript") + print("=" * 50) + + # Verificar estado actual + print("\n📊 Estado actual:") + tkinterweb_available = check_installed("tkinterweb") + pythonmonkey_available = check_installed("pythonmonkey") + + print(f" • tkinterweb: {'✅ Instalado' if tkinterweb_available else '❌ No instalado'}") + print(f" • pythonmonkey: {'✅ Instalado' if pythonmonkey_available else '❌ No instalado'}") + + if tkinterweb_available and pythonmonkey_available: + print("\n🎉 ¡Todo está instalado correctamente!") + print(" La calculadora debería funcionar con JavaScript completo.") + return + + print("\n🔧 Procediendo con la instalación...") + + # Instalar tkinterweb con JavaScript + if not tkinterweb_available or not pythonmonkey_available: + print("\n1️⃣ Instalando tkinterweb[javascript]...") + success = install_package("tkinterweb[javascript]") + + if not success: + print("\n⚠️ La instalación automática falló.") + print(" Intenta manualmente:") + print(" pip install tkinterweb[javascript]") + print("\n Si hay problemas con PythonMonkey:") + print(" 1. Asegúrate de tener Python 3.8+") + print(" 2. En Windows, puede requerir Visual Studio Build Tools") + print(" 3. En Linux, puede requerir build-essential") + return + + # Verificar instalación final + print("\n🔍 Verificando instalación...") + tkinterweb_final = check_installed("tkinterweb") + pythonmonkey_final = check_installed("pythonmonkey") + + print(f" • tkinterweb: {'✅' if tkinterweb_final else '❌'}") + print(f" • pythonmonkey: {'✅' if pythonmonkey_final else '❌'}") + + if tkinterweb_final and pythonmonkey_final: + print("\n🎉 ¡Instalación completada exitosamente!") + print(" La calculadora MAV ahora puede usar JavaScript completo.") + print(" Reinicia la aplicación para activar las funciones avanzadas.") + else: + print("\n⚠️ Instalación parcial.") + print(" La calculadora funcionará en modo fallback.") + print(" Consulta la documentación para resolver problemas de instalación.") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/latex_debug.html b/latex_debug.html new file mode 100644 index 0000000..47721d3 --- /dev/null +++ b/latex_debug.html @@ -0,0 +1,148 @@ + + + +
+ + +