Due linguaggi in un solo listings

  • Creatore
    Topic
  • #106216
    Up
    0
    Down
    ::


    Salve a tutti,
    premetto che uso da poco LateX quindi non sono una cima 🙄 ! Sto scrivendo la tesi e dovrei riportare del codice usando listings. Il problema sorge dal fatto che il linguaggio è VRML (supportato dal listrings) che però prevede l’inserimento di altro linguaggio in particolare JavaScript! Ora io vorrei avere un unico listato e inserire i due codici cercando di differenziare lo stile per far capire che non è la stessa cosa, magari anche con l’highlight delle keywords. Ho provato a interrompere il listing e iniziarne uno nuovo con l’altro linguaggio ma ovviamente la numerazione non continua e si apre un nuovo frame dando l’impressione che le cose siano completamente staccate.
    Spero che qualcuno più esperto possa rispondere. Grazie infinite a chiunque lo farà 😀 😀 Buona giornata a tutti

    Di seguito riporto un esempio di codice in VRML con l’inserimento di funzioni in JavaScript (la parte tra i quote)!!
    `
    DEF Path Script {

    eventIn SFBool isActive
    eventIn SFVec3f trans
    eventOut MFVec3f Cordinat
    eventOut MFInt32 ind

    field SFInt32 i -1
    field MFInt32 index 0
    field MFVec3f Cord [0 0 0]
    field SFBool flag FALSE

    url “javascript:

    function initialize()
    {
    i = (-1 );
    index =new MFInt32 () ;
    Cord = new MFVec3f();
    }


    }
    `

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #106217
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        L_hyena” post=106306Salve a tutti,
        premetto che uso da poco LateX quindi non sono una cima 🙄 ! Sto scrivendo la tesi e dovrei riportare del codice usando listings. Il problema sorge dal fatto che il linguaggio è VRML (supportato dal listrings) che però prevede l’inserimento di altro linguaggio in particolare JavaScript! Ora io vorrei avere un unico listato e inserire i due codici cercando di differenziare lo stile per far capire che non è la stessa cosa, magari anche con l’highlight delle keywords. Ho provato a interrompere il listing e iniziarne uno nuovo con l’altro linguaggio ma ovviamente la numerazione non continua e si apre un nuovo frame dando l’impressione che le cose siano completamente staccate.
        Spero che qualcuno più esperto possa rispondere. Grazie infinite a chiunque lo farà 😀 😀 Buona giornata a tutti

        Di seguito riporto un esempio di codice in VRML con l’inserimento di funzioni in JavaScript (la parte tra i quote)!!
        `
        DEF Path Script {

        eventIn SFBool isActive
        eventIn SFVec3f trans
        eventOut MFVec3f Cordinat
        eventOut MFInt32 ind

        field SFInt32 i -1
        field MFInt32 index 0
        field MFVec3f Cord [0 0 0]
        field SFBool flag FALSE

        url “javascript:

        function initialize()
        {
        i = (-1 );
        index =new MFInt32 () ;
        Cord = new MFVec3f();
        }


        }
        `

        Ciao. Riporta per cortesia anche un esempio minimo compilabile, ovvero un sorgente con il codice che usi per comporre quel listato.
        Grazie.
        Mettendomi dalla parte del lettore, occorre tuttavia valutare l’effetto di un syntax highlighting con due linguaggi uno dentro l’altro. Potrebbe essere meno leggibile che non comporre tutto in nero con il classico pacchetto fancyvrb.
        R.

      • #106218
        Up
        0
        Down
        ::


        Ho controllato la documentazione del pacchetto. Al punto 5.3 viene citata l’opzione alsolanguage, in aggiunta a language, per specificare ulteriori sintassi da utilizzare.

      • #106219
        Up
        0
        Down
        ::


        Allora ho cercato di usare alsolanguage però a quanto pare non sembra riconoscere le parole chiave o i commenti, ora posto anche il codice LaTeX !
        `
        \definecolor{mygray}{rgb}{0.5,0.5,0.5}

        \lstdefinelanguage{JavaScript}{
        keywords={break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with},
        morecomment=[l]{//},
        commentstyle=\bfseries\color{mygray},
        sensitive=true
        }

        \lstset{ %
        basicstyle=\ttfamily,
        backgroundcolor=\color{white},
        breaklines=true,
        commentstyle=\bfseries\color{mygray},
        numbers=left,
        numberstyle=\color{mygray},
        alsolanguage=JavaScript,
        }

        \begin{lstlisting}[language={[97]VRML}, frame=single]
        ################# TCP TRACER ################

        DEF Linetrace Transform{
        children[
        Shape {
        appearance Appearance {
        lineProperties LineProperties {
        applied TRUE
        linetype 1
        linewidthScaleFactor 10 }
        material Material {
        diffuseColor 1 0 0
        emissiveColor 0 0 1 }
        }
        }

        geometry DEF Indline IndexedLineSet {
        coord DEF corr Coordinate { point [0 0 0] }
        coordIndex [ ]
        }
        ]
        }

        DEF Path Script {

        eventIn SFBool isActive
        eventIn SFVec3f trans

        eventOut MFVec3f Cordinat
        eventOut MFInt32 ind

        field SFInt32 i -1
        field MFInt32 index 0
        field MFVec3f Cord [0 0 0]
        field SFBool flag FALSE

        url “javascript:

        \\comment here
        function initialize()
        {
        i = (-1 );

        index =new MFInt32 () ;
        Cord = new MFVec3f();
        }

        function isActive(value)
        {
        if (value == true)
        {
        if (flag == false)
        flag = true;

        else
        flag = false;
        }
        }
        function trans(val)
        {

        if(flag==true){

        i += 1 ;
        index = i ;
        Cord[0]= val[0] ;
        Cord[1]= val[1] ;
        Cord[2]= val[2] ;

        ind = index ;
        Cordinat= Cord ;

        }
        else{
        initialize();
        }

        }

        }

        \end{lstlisting}

        `

        Non sembra succedere nulla!!

      • #106220
        Up
        0
        Down
        ::


        Al posto di keywords, nella definizione del linguaggio JavaScript, prova ad usare morekeywords

      • #106221
        Up
        0
        Down
        ::

        roberto.degiuli” post=106310Al posto di keywords, nella definizione del linguaggio JavaScript, prova ad usare morekeywords

        Ho appena provato e non va! Forse però ho capito il problema: il testo nelle ” ” viene visto come stringa e quindi non lo tratta con le keywords anche se aggiungo morekeywords. Infatti ho provato ad aggiungere una delle keyword del nuovo language al di fuori delle virgolette e la riconosce. A questo punto le possibilità sono:
        1) sfruttare `stringstyle=\normalfont,` e magari differenziare le due parti con un altro font però senza keyword highlight;
        2) banalmente eliminare le “” (modificando il codice) e far riconoscere le morekeywords però senza stile diverso per questo linguaggio;
        3) Definire proprio un nuovo linguaggio myVRML con tutto quello che voglio (soluzione più lunga e faticosa)

        Cosa mi consigliate?? 😀 😀

      • #106222
        Up
        0
        Down
        ::

        L_hyena” post=106311

        Al posto di keywords, nella definizione del linguaggio JavaScript, prova ad usare morekeywords

        Ho appena provato e non va! Forse però ho capito il problema: il testo nelle ” ” viene visto come stringa e quindi non lo tratta con le keywords anche se aggiungo morekeywords. Infatti ho provato ad aggiungere una delle keyword del nuovo language al di fuori delle virgolette e la riconosce. A questo punto le possibilità sono:
        1) sfruttare `stringstyle=\normalfont,` e magari differenziare le due parti con un altro font però senza keyword highlight;
        2) banalmente eliminare le “” (modificando il codice) e far riconoscere le morekeywords però senza stile diverso per questo linguaggio;
        3) Definire proprio un nuovo linguaggio myVRML con tutto quello che voglio (soluzione più lunga e faticosa)

        Cosa mi consigliate?? 😀 😀

        Sempre nella definizione del linguaggio JavaScript, prova ad inserire:
        `
        morestring=“,
        morestring='
        `

      • #106223
        Up
        0
        Down
        ::


        Ci ho provato purtroppo nessun risultato!

      • #106224
        Up
        0
        Down
        ::

        L_hyena” post=106314Ci ho provato purtroppo nessun risultato!

        Faccio qualche prova e ti aggiorno, al momento non riesco a capire nemmeno io, mi dispiace.

        Aggiornamento: mi dispiace, ma non riesco a trovare una soluzione. Spero che qualcuno più esperto di me riesca ad aiutarti.

    Visualizzazione 7 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top