Comando personalizzato in Texstudio

  • Creatore
    Topic
  • #110295
    Up
    0
    Down
    ::


    Ciao a tutti,

    vorrei creare un nuovo comando in Texstudio, che chiamerei “Crea pdf ridotto”, che utilizzi Ghostscript con opzioni idonee a ridurre la dimensione del file pdf.
    Si tratta di un’operazione che oggi eseguo manualmente con un comando tipo:

    `gs -sDEVICE=pdfwrite -dMaxSubsetPct=100 -dPDFSETTINGS=/printer -sOutputFile=outfile.pdf -dNOPAUSE -dBATCH inputfile.pdf`

    Immagino si possa creare un nuovo comando che concateni pdflatex con gs tramite pipe ma non riesco a metterlo a punto.
    Mi date una mano?

    Grazie anticipatamente,

    Marco

Visualizzazione 17 filoni di risposte
  • Autore
    Risposte
    • #110296
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Marco, quello che chiedi mi sorprende; non sono mai riuscito ad ottenere da un PDF con certe dmensioni una altro PDF di dimensioni minori, spesso molto maggiori, qualche volta un po’ più piccole, ma con differenze trascurabili, dell’odrine dll’1% o del 2%. Non escludo che lo si possa trattare come un output per stampante con una piccola densità di pixel al pollice, ma il risultato è generalmente penoso, nel senso che perde al sua natura vettoriale, o meglio, la conserva ma con una granulosità inaccettabile dei contorni visto che i nodi delle spline che definiscono i contorni vengono attribuiti a coordinate intere e vengono ridotti di numero.

        No, il formato PDF non è di per sé verboso come il linguaggio postscript, pur essendone una derivazione e riduzione, ma è compresso, molto compresso; piuttosto vedi di impostare i tuoi programmi che producono file PDF in modo che usino il massimo grado di compressione (che tra l’altro, se non vado errato, a differenza della compressione dei file JPG, basati sulla trasformata di Fourier bidimensionale discreta, è una compressine lossless, e quindi non perde nessuna informazione.

        Poi certo, per esigenze particolari si può anche pensare a bozze di bassa definizione, purché il file finale, a lavoro finito, sia di definizione sufficientemente elevata.

        Ricordati il principio fondamentale della teoria dell’informazione; se vuoi una riduzione del numero di bit contenuti in un determinato file, puoi lavorare solo sulla ridondanza dell’informazione che vi è contenuta; se vai oltre, perdi informazione.

      • #110297
        Up
        0
        Down
        ::


        Carissimo Claudio,

        capisco la tua sorpresa dovuta al fatto che io non ho spiegato la finalità della mia richiesta, in realtà non lo ritenevo attinente.
        Ma certo, stai tranquillo, non porterei mai quel file in tipografia! È invece destinato all’interscambio con i vari coautori del testo su cui lavoro.
        La mia rete aziendale non è velocissima e io aggiorno spesso il file in corso d’opera. L’originale pesa oltre 120 MB, non ha senso chiedere ai colleghi di scaricare ogni volta un file del genere, e nemmeno per me fare upload frequenti. In realtà col metodo che ho descritto sopra riesco ad ottenere un file che pesa circa 1/5–1/6 dell’originale (attorno ai 20 MB) e ciò semplifica molto le cose. Quindi l’operazione di compressione che ti dicevo per me è almeno giornaliera (ma spesso pluri-giornaliera) e mi serve molto. Non ho nessun problema a farla da riga di comando sia in Windows che al terminale di Ubuntu, ma se esiste modo di creare un comando personalizzabile in Texstudio, questo mi interesserebbe molto. Inoltre è anche istruttivo imparare queste cose, non trovi?
        Ho visto un bel post di Ivan sul suo sito, molto attinente a questo argomento ma non mi è stato sufficiente a risolvere il problema. Eppure sono quasi certo che si può fare.

        Il tuo intervento comunque solleva altre questioni interessanti, ma ne riparleremo più avanti: voglio affrontare un problema alla volta.

        Un saluto,

        Marco

      • #110298
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Ciao.
          Credo che si possa fare con uno script interno a TeXstudio in Javascript.
          Alcune notizie le puoi trovare qui.
          Alcuni suggerimenti che potrebbero essere utili:
          un comando esterno pare si possa eseguire con:
          `buildManager.runCommand()`
          Inoltre il nome del file è restituito dalla funzione:
          `editor.fileName()`

          Se lo script funziona, potrai associarlo a una combinazione di tasti.

          L’alternativa è usare una macro simile in TeX works, dove è possibile usare Lua.
          R.

        • #110299
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Marco, capisco le tue esigenze; immaginavo che si trattasse di una cosa del tipo di quella che descrivi. ma ci sono altri metodi, forse più efficienti di quello che stai facendo ora.

            1) nel lavoro cooperativo, se il progetto è costruito bene, esso si appoggia a più cartelle, una delle quali contiene le immagini; queste non vengono cambiate ad ogni aggiornamento, sono una specie di dato fisso. Generalmente sono molto ingombranti come numero di byte, talvolta di alcini mega ciascuna. È chiaro che ognuna occupa spazio due volte, una volta nella cartella delle immagini, e una volta nel PDF composto.
            2) se componi con l’opzione draft, nessuna immagine viene effettivamente inserita nel file, ma il suo spazio viene occupato da un semplice riquadro dentro il quale viene scritto il nome del file grafico che contiene l’immagine.
            3) condividere con i collaboratori il file sorgente e/o il file composto con draft, vuol dire scambiare file di solo testo o poco più.
            4) ogni collaboratore che voglia vedere il tutto completo, può ricomporsi il file togliendo l’opzione draft.

            Mi rendo conto che questa procedura, efficientissima, è usabile solo fra collaboratori che dispongono del sistema TeX. Giustamente puoi controbattermi che i tuoi collaboratori non dispongono tutti del sistema TeXo, peggio ancora, che tu sei l’unico in grado di usare il sistema TeX.

            In questo caso direi che non stai componendo un documento in collaborazione con altri; stai lavorando da solo, e i collaboratori sono quelli che “ti fanno le pulci”; non sono collaboratori ma, caso mai, nel migliore dei casi, revisori. O semplicemente dei tuoi superiori d’ufficio a cui devi rendere conto di quello che stai facendo. Be’, la soluzione di mandare loro un file PDF senza immagini non funzionerebbe e l’idea di comprimere il tutto con il procedimento che hai indicato resta la tua unica salvezza.

          • #110300
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::


              Uhm, ottima idea risolvere all’interno del sistema TeX.
              Basta tenere due versioni dei file delle immagini, una alla risoluzione piena nella cartella image_fullres (per esempio).
              Con image magick da linea di comando si riduce in un colpo solo la risoluzione di tuute le immagini e le si salva in image_lowres, ma con gli stessi nomi.

              All’interno del sorgente poi, basterà selezionare all’inizio il graphic path per ottenere la versione con le immagini pesanti o leggere.
              La compilazione dovrebbe, nel caso lowres, essere anche più veloce e non è necessario alcuna ulteriore elaborazione.
              Una macro con un condizionale (tipo \iffullres), potrebbe fare da “interfaccia utente”.
              😉
              R.

            • #110301
              Up
              0
              Down
              ::


              Sì Claudio, hai capito il contesto in cui opero. Sono io l’unico a trattare con TeX.
              Ricevo i capitoli e le segnalazioni dei coautori e faccio la revisione e la composizione.
              Quindi aggiorno spesso il file “leggero” affinché tutti possano verificare lo stato di avanzamento dei lavori e avere la versione aggiornata.

              Ringrazio entrambi per i suggerimenti ma lavorare con due cartelle di immagini non mi semplificherebbe il lavoro rispetto al metodo che uso ora.
              Continuo a pensare che debba esserci un modo per costruire un comando composto che prima lanci pdflatex e poi diriga il file a ghostscript per la compressione.
              Se mi sbaglio, continuerò a lavorare come sto facendo: non è un grosso problema.

              Saluti.

              Marco

            • #110302
              claudio
              Partecipante
                Up
                0
                Down
                ::


                provato a guardare qui ?
                ciao
                claudio

              • #110303
                Up
                0
                Down
                ::


                Certo Claudio,

                sto provando a costruire un comando personalizzato a partire dalla guida, ma finora ho ottenuto solo un bel…mal di testa.

                Grazie comunque.

                Marco

              • #110304
                OldClaudio
                Partecipante
                  Up
                  0
                  Down
                  ::

                  Non mi sono spiegato bene; non devi lavorare cn due cartelle di immagini; devi lavorare solo con una cartella, ma metti l’opzione draft alla classe; componendo con qualunque programma basato su LaTeX (pdf-, xe-, lua-latex) le immagini non ti vengono incluse nel PDF, ma viene comunque riservato il posto per quando le metterai per davvero alla fine del lavoro; controlla il PDF; vedrai che da 120MiB ti scenderà, probabilmente sotto i 5MiB, forse anche sotto il’1MiB.

                  Comunque va benissimo come stai facendo creati lo script bash comprimi; e aggiungi un altra voce alla lista di motiri di TeXstudio, che contenga la riga pdflatex -errorstopmode -synctex=1 $1 | comprimi $1 (o qualcosa del genere $1 sta per il nome del mainfile, forse va scritto in un altro modo…) Naturalmente comprimi deve avere il bit di eseguibilità impostato e deve essere in una cartella che sia sul path. Questo è quello che farie io, poi magari, se non funziona ci lavorerei sopra per capire perché e provvederei in merito.

                  Oppure usa arara a cui dici di compilare il file tex e poi di eseguire comprimi; le due azioni restano separate, ma le fa arara; la guida di arara si legge con texdoc arara da terminale. Non è male, per niente, gli si riescono a far fare cose molto belle e piuttosto complesse. Io abitualmente non lo uso, ma certamente tu lo troverai molto utile per questi scopi.

                • #110305
                  Up
                  0
                  Down
                  ::


                  A quanto pare sono riuscito a ottenere qualche successo:

                  [attachment=1879]texstudioscrn.jpg[/attachment]

                  Configura Texstudio
                  Compila
                  Comandi definiti dall’utente
                  a sinistra la stringa che definisce il nome del nuovo comando, ad esempio “txs:///PDF ridotto”
                  a destra il comando singolo o concatenato, nel mio caso:
                  `txs:///compile | gs -sDEVICE=pdfwrite -dMaxSubsetPct=100 -dPDFSETTINGS=/printer -sOutputFile=?am)MIN.pdf -dNOPAUSE -dBATCH ?am.pdf
                  `
                  Forse ho risolto. Il file così generato pesa 19,6 MB, l’originale ad alta definizione 137,5 MB.

                  Marco
                  🙂

                  Attachments:
                  You must be logged in to view attached files.
                • #110306
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Bene, sono contento anch’io, perché vedo usata una cosa che avevo immaginato, ma tiravo solo a immaginare:)

                  • #110307
                    robitex
                    Amministratore del forum
                      Up
                      0
                      Down
                      ::


                      Spezzo una lancia a favore della doppia cartella 😉
                      R.

                    • #110308
                      Up
                      0
                      Down
                      ::

                      robitex” post=110547Spezzo una lancia a favore della doppia cartella 😉
                      R.

                      Ciao Robi,

                      sì, ho capito che ti piace quel sistema ma vorrei sapere se questa tua preferenza deriva da un confronto fra la qualità dei file ottenuti coi due metodi o da cos’altro. Se devo giudicare la semplicità dell’operazione, direi che l’uso della conversione tramite Ghostscript è senz’altro la cosa più semplice.
                      Ci ho messo un po’ a capire come scrivere il comando, ma ne valeva la pena.

                      Inoltre devo dire che sono molto contento del risultato che ottengo, sia in termini di rapporto fra dimensione iniziale e finale, sia come qualità assoluta del file ottenuto. Tanto che sono persuaso a destinarlo non solo a bozza di interscambio fra collaboratori, ma addirittura a file ottimizzato per la lettura a schermo.
                      Infatti il lavoro che sto curando è destinato sì alla tipografia (che riceverà il file della massima qualità) ma anche a essere ospitato su internet per tutti coloro che (beati loro!) riescono a studiare direttamente su pc, tablet, etc. Che senso ha per costoro scaricare un file di 130 e oltre MB? Ne potrebbero apprezzare la migliore qualità? Penso proprio di no…

                      Fatemi sapere il vostro parere anche su questo argomento, cioè come vi comportate quando dovete un produrre un libro ottimizzato per la lettura a schermo, mi interessa molto.

                      Marco

                    • #110309
                      sergio
                      Partecipante
                        Up
                        0
                        Down
                        ::


                        Ciao Marco,
                        ho provato il tuo approccio (apro la parentesi solo per precisare, a favore di altri neofiti come me, che ho dovuto modificare il comando “gs” con “gswin64” perchè quella è la mia istallazione di Ghostscript e di controllare che il percorso del comando sia incluso nella variabile di sistema PATH di windows) ed alla fine ho ottenuto il risultato senza errori. Tuttavia avendo sperimentato su un file non molto corposo (circa 4Mb con qualche immagine un pò di matematica) ho rilevato, come anticipato in questa discussione in un precedente post di OldClaudio, di non aver ottenuto alcuna riduzione di dimensione del pdf ma anzi un leggero incremento. Ovviamente dovrei provare su altro materiale prima di dare un responso definitivo e, del resto, non mi permetto di dubitare del tuo ottimo risultato.

                        sergio

                      • #110310
                        Up
                        0
                        Down
                        ::


                        Ciao Sergio

                        mi rendo conto che l’efficienza dipende moltissimo dal tipo di file su cui si lavora.
                        Il mio contiene molte immagini, alcune piuttosto pesanti ed evidentemente in questi casi la conversione è molto vantaggiosa.

                        Per fare un altro esperimento ho provato con la nostra cara guida del Guit, la splendida “Introduzione all’arte
                        della composizione tipografica” che guarda caso sto leggendo in questi giorni. Nella sua versione completa in formato A4 il file guidaguit-a4.pdf pesa 11,1 MB. Compresso con Ghostscript (questa volta usando l’opzione -dPDFSETTINGS=/ebook) si riduce a 7,5 MB, con un alleggerimento del 33%.
                        Non è poco, a mio parere, considerando che è un file con una larga preponderanza di testo e sicuramente ottimizzato in partenza da chi con LaTeX sa lavorare al meglio.
                        Eppure ti assicuro che nella lettura a schermo io non riuscirei a distinguerlo facilmente dall’originale, e forse nemmeno la maggior parte dei lettori. A stampa sarebbe tutta un’altra musica ovviamente…

                        Comunque io non voglio certamente convincere nessuno che questa operazione che mi serve, ripeto ancora, per degli scopi ben precisi, sia consigliabile per tutti. Però può tornare utile in certi casi.

                        Saluti

                        Marco

                      • #110311
                        OldClaudio
                        Partecipante
                          Up
                          0
                          Down
                          ::



                          @MisterMandarino
                          , il tuo intervento è ottimo, ma soffre di un piccolo neo, al quale dovresti stare attento, perché gli utenti del sistema TeX non dovrebbero avere questi piccolissimi, quasi trascurabili nei.

                          $Mb non viol dire niente; il simbolo b non esiste nel sistema internazionale e l’informatica non è esente dal rispetto delle norme relative alle unità di misura; il bit non si semplifica in b, e il byte non si semplifica in B; entrambi si scrivono per disteso.
                          Inoltre i prefissi decimali sono diversi: quelli decimali sono k, M, G, T, eccetera; quelli binari sono Ki, Mi, Gi, Ti, eccetera.

                          Sono diversi r che quelli decimali sono le successive potenze 3, 6, 9, 12, eccetera di 10; mentre quelle binarie sono le successive potenze 30, 60, 90, 120, eccetera di 2; e siccome 2^{10}=1024 e questo è diverso da 10^{3}=1000, usare i prefissi binari o quelli decimali non è affatto la stessa cosa, anche se a spanne non sono molto diversi. 😉

                        • #110312
                          sergio
                          Partecipante
                            Up
                            0
                            Down
                            ::


                            @HoldClaudio,

                            oltre a ringraziarti per la precisione devo ammettere che queste informazioni non le conoscevo proprio (8) se non la definizione, all’acqua di rose, di bit e byte. Devo approfondire la questione… perchè sono scarso.

                            sergio

                          • #110313
                            sergio
                            Partecipante
                              Up
                              0
                              Down
                              ::


                              Ok i dettagli sull’uso delle unità in notazione binaria (compreso l’uso coretto dei prefissi) si trovano anche nella sezione 5.11 del pacchetto “siunitx”

                              sergio

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

                          Go to top