Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    7

    Problema Javascritp-Latex =>RegExp

    Salve a tutti.
    Ho un problema di integrazione del codice Latex con una funzione Javascript. Per chi nn lo sapesse il linguaggio Latex è un linguaggio per la scrittura di formule matematiche. Una formula di questo tipo:
    \sum_{1}^{5}(\int_{3}^{2}\frac{\partial^2 2}{\partial x^2})
    da come risultato:


    Ora il mio problema è che memorizzando la formula in modo testuale, e poi riprendendola dal DB, devo x forza raddoppiare i '\\', poichè la formula per la visualizzazzione passa per un DOM, e quindi attraverso il javascript che interpreta il '\\' x i caratteri speciali.

    l'unico modo di aumentare i \ è attraverso una semplice espressione regolare:
    codice:
    var txt="@";
    var latex = txt+document.getElementById("latex_formula").value+txt;
    latex.replace(/\\/g,"\\\\");
    dove @ è il carattere di controllo che uso x individuare la formula, e codificarla attraverso la libreria MathJax (serve a fare il render immediato delle formule Latex, senza avere la necessità di usare le immagini).

    La mia formula memorizzata nel DB quindi dovrebbe essere del tipo:
    @\\sum_{1}^{5}(\\int_{3}^{2}\\frac{\\partial^2 2}{\\partial x^2})

    Ma la funzione di prima proprio nn ne vuole sapere di sostituire i '\\' con '\\\'.
    Se metto replace(/\\\\/g,"\\\\\\\\") per cercare '\\\' ed avere '\\\\\' non ho nessun problema.

    Qlk mi sa spiegare il perchè? Come posso fare?

    Ho trovato questo tool online per la verifica delle RegExp, e qui funziona alla perfezzione, o almeno mi sembra che funzioni.

    Grazie a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    7
    Ho risolto il problema a priori, al momento della memorizzazione nel DB. in Php è presente la funzione apposita addslashes().
    Cercando in giro ho trovato l'equivalente in Javascript

    function addslashes (str) {
    return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\u0000/g, "\\0");
    }

    Funziona. Ma ritengo che x me sia + utile farlo in Php.
    Grazie lo stesso. Spero che questa mia disavventura possa essere utile a qlk, visto che ci ho perso praticamente la giornata.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.