Script per le righe magiche in TeXworks

  • Creatore
    Topic
  • #77248
    Up
    0
    Down
    ::


    Ringraziando Claudio e Tommaso per la nuova guida tematica sulle codifiche (complimenti, l’idea mi è piaciuta molto!), ne approfitto per dare un contributo.

    Vi si dice che in TeXworks le righe magiche vanno purtroppo inserite a mano, e così facendo si sbaglia più facilmente. Fortunatamente è un problema facilmente risolvibile 🙂 e ci stavo lavorando proprio qualche giorno fa. Per chi voglia darci un’occhiata, lo script è qui:

    È un semplice script che si attiva tenendo premuto Ctrl e cliccando in sequenza K e M (oppure dal menu Script). Appare una finestrella che presenta le quattro chiavi e suggerisce alcuni valori.

    1. encoding: come codifiche suggerisce UTF-8, ISO-8859-1 e Apple Roman, e per ognuna di esse mostra tra parentesi la corrispondente opzione di inputenc.
    2. program: riconosce anche la chiave TS-program ma usa sempre la più semplice program; mostra una lista statica con i motori di default (al momento non esiste un modo per ricavare da script l’elenco dei motori disponibili in TeXworks).
    3. root: presenta l’elenco dei file aperti in TeXworks (percorso relativo rispetto al file corrente); inoltre sostituisce automaticamente le barre rovesciate ([tt]\[/tt], stile Windows) con quelle dritte ([tt]/[/tt], stile Unix): le prime sono accettate solo su Windows, le seconde su tutte le piattaforme.
    4. spellcheck: mostra l’elenco dei dizionari installati.

    A dire il vero, non avendo io un Mac, non mi sono mai posto il problema della compatibilità con TeXShop (per di più, preferisco la sintassi di TeXworks), ma vedo che qui è tenuta in seria considerazione. Per ora quello script è poco più che una bozza, se qualcuno mi indirizza lo posso migliorare proprio nel senso della compatibilità con TeXShop.

    Per esempio, TW riconosce sia “UTF-8” che “UTF-8 Unicode”: TS invece solo il secondo? E per le altre codifiche? Inoltre, TW riconosce come valori per “program” non il nome effettivo del programma (texexec) ma il profilo (ConTeXt (pdfTeX)). Ad ogni programma possono essere associati più profili, per esempio io ne uso due con makeindex per compilare i “.dtx”. Con TeXShop come funziona?

    Ciao,
    Antonio

Visualizzazione 16 filoni di risposte
  • Autore
    Risposte
    • #77249
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Ottima idea; ti ho mandato per posta elettronica due screen shot con le codifiche e i motori riconosciuti da TeXshop.

        Bravo; i tuoi script risolvono un problema importante per TeXworks. Ora ci applichiamo tutti a collaudarli e a vedere se si possono fare ulteriori miglioramenti.

        Ciao
        Claudio

      • #77250
        Doc
        Partecipante
          Up
          0
          Down
          ::


          Continuando dalla discussione di sopra, lo script viene visto, ma semplicemente non parte la UI.

          Abilitando il debug, ecco cosa mi dice:
          `Uncaught exception at /home/domenico/.TeXworks/scripts/magicComments.js:142: TypeError: Result of expression 'reFileName.exec(d)' [null] is not an object.
          142 return result.map(function(o) { return reFileName.exec(d)[1]; });`
          Se hai bisogno di altro, non esitare a chiedere!

          Ripeto come promemoria: Debian Sid 32bit.

          P.S.: ma chi te lo ha fatto fare? 😛

        • #77251
          Up
          0
          Down
          ::

          OldClaudio” post=76437Ottima idea; ti ho mandato per posta elettronica due screen shot con le codifiche e i motori riconosciuti da TeXshop.

          Bravo; i tuoi script risolvono un problema importante per TeXworks. Ora ci applichiamo tutti a collaudarli e a vedere se si possono fare ulteriori miglioramenti.

          Ciao
          Claudio

          Ciao Claudio, e grazie!

          Era da un po’ che non intervenivo sul forum, ma è sempre un piacere. 🙂

          Sulle codifiche:
          dovrei usare “UTF-8 Unicode”, “MacOSRoman” e “IsoLatin”, giusto? Ho verificato che TeXworks le riconosce. Sono fortemente restio ad aggiungerne altre.

          Sui motori:
          TW vuole il nome del profilo (lo chiama “processing tool”: secondo me più che “motore” o il generico “strumento” andrebbe chiamato profilo), che spesso contiene caratteri in maiuscolo. Per fortuna TW esegue un confronto case-insensitive, per questo accetta correttamente anche il nome del programma ([tt]pdflatex[/tt], [tt]latex[/tt], in minuscolo) quando questo coincide col nome del profilo.

          Trovo invece un po’ caotica la lista degli “engine” in TeXshop, alcuni in maiuscolo (“XeTeX”, “XeLaTeX”) altri in minuscolo (“pdftex”, “pdflatex”). TeXShop è case-insensitive?
          @Claudio: quelli dello screenshot sono i motori predefiniti?

          Certamente, l’ideale sarebbe usare per davvero il nome del programma (xetex, pdflatex, context, in minuscolo, perché universali), ma (per esempio) TW ha di default due profili che usano [tt]texexec[/tt] (ConTeXt (pdfTeX) e ConTeXt (XeTeX)). Per questo nello script vengono elencati i nomi dei profili. Inoltre chi mi assicura la corrispondenza tra i profili di TeXworks e quelli di TeXshop (accettatemi il termine profilo)? Secondo voi come bisogna comportarsi?

          Sui dizionari:
          TW richiede il nome del file o semplice un alias (it_IT, it-IT). Mi pare di aver letto che TS accetta anche “Italian”, “German” o simili. Ma se TS ormai riconosce la lingua in automatico, allora poco ci importa: io lascerei la sintassi di TW. Con un appunto: mi è sembrato che TeXworks preferisca it_IT invece di it-IT: la sintassi corretta secondo gli standard sarebbe la seconda, mentre la prima spesso corrisponde al nome del file del dizionario. A TeXshop “piace” anche la prima (it_IT) o solo la seconda (it-IT)?

        • #77252
          Up
          0
          Down
          ::

          Doc” post=76442Continuando dalla discussione di sopra, lo script viene visto, ma semplicemente non parte la UI.

          Abilitando il debug, ecco cosa mi dice:
          `Uncaught exception at /home/domenico/.TeXworks/scripts/magicComments.js:142: TypeError: Result of expression 'reFileName.exec(d)' [null] is not an object.
          142 return result.map(function(o) { return reFileName.exec(d)[1]; });`
          Se hai bisogno di altro, non esitare a chiedere!

          Ripeto come promemoria: Debian Sid 32bit.

          Oops che svista! Quella [tt]d[/tt] va sostituita con una [tt]o[/tt] (minuscola):

          142	      return result.map(function(o) { return reFileName.exec(o)[1]; });

          P.S.: ma chi te lo ha fatto fare? 😛

          😀
          È da un po’ che mi interessa aiutare TeXworks. 😉 Questo script è niente, è (stato) decisamente più arduo contribuire con il logParser!

        • #77253
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::

            @Claudio: quelli dello screenshot sono i motori predefiniti?

            Quello è l’elenco degli engine che ti propone ma macro Program; occhio e croce sembrerebbero tutti; comunque per aggiungere altri motori c’è una procedura apposita.

            Per i dizionari ho il sospetto che la riga magina che li riguarda non venga nemmeno letta da TeXshop e considerata un semplice commento; tutte le volte che ho composto un file predisposto inizialemte su TeXworks e dove era presente la riga magica del dizionario, c’era sempre it_IT e tutto filava liscio con TeXshop, che comunque usa il dizionario corrispondente alla lingua in usa in quel momento nel file sorgente. Almeno così è sul Mac Lion.

            Ciao
            Claudio

          • #77254
            Doc
            Partecipante
              Up
              0
              Down
              ::


              Perfetto! Funziona perfettamente!

              Inutile dire che scherzavo! 😉

            • #77255
              OldClaudio
              Partecipante
                Up
                0
                Down
                ::


                Antonio, con questa correzione funziona perfettamente con “mela”+M; “mela+K sembra non fare nulla.

                Per altro sarebbe importante che tutte le righe dei magici commenti siano almeno compatibili con TeXshop, visto che sono gli unici editor che per ora capiscono quelle righe(o meglio, TeXworks capisce quelle di TeXshop, quindi nel più sta il meno, nel senso che il più deve adattarsi a far capire anche il meno).

              • #77256
                Up
                0
                Down
                ::

                OldClaudio” post=76446

                @Claudio: quelli dello screenshot sono i motori predefiniti?

                Quello è l’elenco degli engine che ti propone ma macro Program; occhio e croce sembrerebbero tutti; comunque per aggiungere altri motori c’è una procedura apposita.

                A sinistra i profili/motori predefiniti in TeXworks, a destra quelli di TeXShop:

                `pdfLaTeX
                XeLaTeX
                LuaLaTeX
                pdfTeX
                XeTeX
                LuaTeX
                ConTeXt (LuaTeX)
                ConTeXt (pdfTeX)
                ConTeXt (XeTeX)
                BibTeX
                MakeIndex`
                `pdftex
                pdflatex
                tex
                latex
                personaltex
                personallatex
                bibtex
                makeindex
                metapost
                context

                `

                Io ho aggiunto Biber e Latexmk, ma penso di toglierli.

                Per entrambi gli editor, corrispondono in gran parte al nome effettivo del programma, ignorando le minuscole/maiuscole. Dando una veloce lettura al sorgente, sembra che anche TeXShop sia case-insensitive. Tuttavia sono condivisi solo pdftex, pdflatex, bibtex e makeindex, e su questo posso farci poco. Io lascerei i motori di TeXworks (con le maiuscole), sostituendo però la chiave “program” con “TS-program”.

                OldClaudioPer i dizionari ho il sospetto che la riga magina che li riguarda non venga nemmeno letta da TeXshop e considerata un semplice commento; tutte le volte che ho composto un file predisposto inizialemte su TeXworks e dove era presente la riga magica del dizionario, c’era sempre it_IT e tutto filava liscio con TeXshop, che comunque usa il dizionario corrispondente alla lingua in usa in quel momento nel file sorgente. Almeno così è sul Mac Lion.

                Bene: significa che va bene così!

                OldClaudioNell’elenco che ti ho mandato io, screen shot di TeXshop, l’elenco dei motori è molto più ampio (circa il doppio) e ci sono molti più programmi che coincidono, per esempio LuaLaTeX, XeLaTeX, XeTeX, ci sono due Context, ma non conosco abbastanza quei motori per dire che relazione abbiano con quelli di TeXworks.

              • #77257
                Up
                0
                Down
                ::

                OldClaudio” post=76437Ottima idea…

                Ciao
                Claudio

                A onor del vero, devo riconoscere che se n’è parlato diverse volte sul forum: io semplicemente me lo sono appuntato e ora che posso ci sto mettendo mano. 🙂

              • #77258
                Up
                0
                Down
                ::


                Ho appena “pushato” una nuova versione.

                Maggiore compatibilità con TeXShop, sia per i nomi delle codifiche, sia per la chiave “TS-program”.

                La modalità di compatibilità con TeXShop è regolata da una variabile booleana che di default è vera. Chi non la vuole, e sa cosa fa, può disattivarla. 🙂

                Sono sempre aperto a suggerimenti e modifiche. 😉

                Ciao,
                Antonio

              • #77259
                Up
                0
                Down
                ::

                antonio.macrì” post=76501Ho appena “pushato” una nuova versione.

                Maggiore compatibilità con TeXShop, sia per i nomi delle codifiche, sia per la chiave “TS-program”.

                La modalità di compatibilità con TeXShop è regolata da una variabile booleana che di default è vera. Chi non la vuole, e sa cosa fa, può disattivarla. 🙂

                Sono sempre aperto a suggerimenti e modifiche. 😉

                Ciao,
                Antonio

                Ciao Antonio, faccio miei i ringraziamenti degli altri amici per il tuo lavoro. 🙂
                Qualche osservazione. Io non vedo la necessità di uniformare le due sintassi: se io uso TeXShop i pulsanti mi permettono di mettere le righe magiche senza errori e con la sintassi riconosciuta da TeXShop. Lo stesso con TeXworks. Se il tuo lavoro è facilitare l’utente, allora non mi preoccuperei tanto. Se invece il tuo lavoro va nella direzione della massima portabilità dei file sorgenti, allora ci potrebbe stare. Ma fino a un certo punto: dove mettiamo le righe di Emacs?

                In soldoni: io farei lo script per mettere le righe di TeXworks con la sintassi di TeXworks:

                % !TeX encoding =
                % !TeX program = % !TeX spellcheck =
                % !TeX root = .tex

                Il punto è trovare la corretta scrittura di programmi, codifiche e codici lingua che TeXworks riconosce.

                Ciao
                Tommaso

              • #77260
                Up
                0
                Down
                ::

                illinguista1972″ post=76502Ciao Antonio, faccio miei i ringraziamenti degli altri amici per il tuo lavoro. 🙂
                Qualche osservazione. Io non vedo la necessità di uniformare le due sintassi: se io uso TeXShop i pulsanti mi permettono di mettere le righe magiche senza errori e con la sintassi riconosciuta da TeXShop. Lo stesso con TeXworks. Se il tuo lavoro è facilitare l’utente, allora non mi preoccuperei tanto. Se invece il tuo lavoro va nella direzione della massima portabilità dei file sorgenti, allora ci potrebbe stare. Ma fino a un certo punto: dove mettiamo le righe di Emacs?

                La questione della compatibilità con TeXshop o altri editor credo che dipenda molto dall’utente e dal documento. Personalmente non userò mai TS e perciò i documenti che scrivo da me avranno sempre sintassi TeXworks. Ma sto anche scrivendo un testo con un collega che usa TeXShop: non ho mai impostato le righe magiche (sappiamo entrambi come evitare i problemi), ma ora comincerò a farlo, per scrupolo.

                Il mio obiettivo è esattamente facilitare l’utente: il fatto è che anche la compatibilità può significare facilitare l’utente, perché gli si evitano problemi (come quelli ben noti di codifica).

                Sulle righe di Emacs: me l’ha accennato anche Claudio, ma dopo averci pensato direi di no per due o tre motivi. Primo: l’obiettivo dello script è assicurare che le righe magiche inserite siano riconosciute da TeXworks; bonus se sono riconosciute anche da TeXShop. TeXworks non riconosce mica le righe di Emacs. Secondo: TeXworks e TeXShop sono abbastanza simili, può darsi che siano usati dallo stesso utente, mentre vedo difficile che chi usa TW usi anche Emacs. E se il file va condiviso con un collega utente Emacs, pensare di facilitargli in questo modo la vita fa un po’ sorridere. 😛

                In soldoni: io farei lo script per mettere le righe di TeXworks con la sintassi di TeXworks:

                % !TeX encoding =
                % !TeX program = % !TeX spellcheck =
                % !TeX root = .tex

                Penso che la soluzione più democratica sia usare una variabile per gestire la compatibilità:
                `var TeXShopCompatibility = true;`
                Il punto è: di default andrebbe lasciata attiva o no? ❓

                Il punto è trovare la corretta scrittura di programmi, codifiche e codici lingua che TeXworks riconosce.

                Ciao
                Tommaso

                Giusto: vediamo.

              • Codifica: non serve riempire la lista di codifiche inutili, per me basta mettere a mano quelle tre codifiche con la sintassi preferita (TW o TS), ormai nota e facilmente verificabile.
              • Program: come ho detto, qui non è lo script che può assicurare la compatibilità (può solo usare [tt]TS-program[/tt] invece di [tt]program[/tt]). Secondo me l’obiettivo dello script è garantire all’utente TeXworks che, se sceglie una voce dalla lista che gli viene presentata, quel motore gli viene riconosciuto (in TW). Per fare questo dovrò chiedere a Stefan di rendere disponibile da script l’elenco dei “processing tools” disponibili. La compatibilità si avrà per quei motori che esistono anche in TeXShop con lo stesso nome (ignorando minuscole/maiuscole).
              • Root: qui non ci sono problemi, purché si usino barre dritte e non rovesciate (per compatibilità tra Windows e Linux sullo stesso TeXworks).
              • Spellcheck: anche qui l’obiettivo primario è garantire all’utente che il dizionario che sceglie dall’elenco viene riconosciuto. Per questo motivo, vengono mostrati solamente i dizionari installati. TeXworks confronta il valore estratto dalla riga magica con i nomi dei file *.dic installati, che di solito sono nella forma “it_IT” (con l’underscore, invece del trattino “it-IT”). Credo che TeXshop li riconosca (ma servirebbe una conferma), ammesso che gli interessino, dato che come dice Claudio dovrebbe essere più intelligente e riconoscere la lingua corrente nelle diverse porzioni di documento.
              • Grazie e ciao,
                Antonio

          • #77261
            Up
            0
            Down
            ::

            OldClaudioNell’elenco che ti ho mandato io, screen shot di TeXshop, l’elenco dei motori è molto più ampio (circa il doppio) e ci sono molti più programmi che coincidono, per esempio LuaLaTeX, XeLaTeX, XeTeX, ci sono due Context, ma non conosco abbastanza quei motori per dire che relazione abbiano con quelli di TeXworks.

            Sì, giusto. Credo sia dovuto al fatto che quelli che ho elencato io risiedano in una cartella, mentre quelli tuoi siano l’unione di due cartelle. O qualcosa del genere. 😀 Ma non ho capito se quelli tuoi aggiuntivi vengono elencati sin dall’installazione di TS o serve abilitarli in qualche modo. Per questo mi son tenuto conservativo. 🙂

            Comunque, appurato che sono entrambi (TW e TS) case-insensitive e che per la maggior parte (tranne ConTeXt) i motori coincidono con il nome del programma associato, io starei abbastanza tranquillo. 😉

          • #77262
            Up
            0
            Down
            ::

            antonio.macrì” post=76531

            Nell’elenco che ti ho mandato io, screen shot di TeXshop, l’elenco dei motori è molto più ampio (circa il doppio) e ci sono molti più programmi che coincidono, per esempio LuaLaTeX, XeLaTeX, XeTeX, ci sono due Context, ma non conosco abbastanza quei motori per dire che relazione abbiano con quelli di TeXworks.

            Sì, giusto. Credo sia dovuto al fatto che quelli che ho elencato io risiedano in una cartella, mentre quelli tuoi siano l’unione di due cartelle. O qualcosa del genere. 😀 Ma non ho capito se quelli tuoi aggiuntivi vengono elencati sin dall’installazione di TS o serve abilitarli in qualche modo. Per questo mi son tenuto conservativo. 🙂

            Mi correggo: come deduco da qui, quelli che ho scritto io sono i motori impostati di default e scritti già nel codice di TS. A questi si aggiungono quelli presenti nella cartella ~/Library/TeXShop/Engines.

            Per popolare l’elenco di [tt]program[/tt] con i motori disponibili ho appena fatto richiesta di una funzione “getEngineList” (ma non sarà certo disponibile oggi o domani).

          • #77263
            Up
            0
            Down
            ::


            Dalla release r1024 di TeXworks è disponibile la funzione TW.getEngineList. 😉
            Per le versioni precedenti lo script mostra una lista con i motori predefiniti.

            Ho riscritto il codice. L’altra modifica importante è una casella di controllo (checkbox) da selezionare se si vuole la compatibilità con TeXshop.

          • #77264
            Up
            0
            Down
            ::


            Ho aggiunto nel repository un README con le istruzioni (in inglese) per l’installazione.

            Grazie a Claudio (OldClaudio), che mi ha fatto notare questa mancanza.

            Ciao,
            Antonio

          • #77265
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              Grazie a me? Ci mancherebbe. Grazie a te che hai scritto questi script che io trovo utilissimi.
              Claudio

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

              Go to top