Stampa B&N e colori separate

  • Creatore
    Topic
  • #8063
    Up
    0
    Down
    ::


    Saluti a tutti.
    E’ da poco che uso LaTeX e lo trovo uno strumento estremamente interessante.
    Mi sono imbattuto in un problema non banale (spero) e, per la prima volta, credo di essere riuscito a giungere da solo ad una soluzione soddisfacente: ora vorrei un vostro giudizio perché non si smette mai di imparare… 😀

    Il problema: ho un voluminoso testo contenente immagini e qualche altro dettaglio a colori (qualche parola nel testo, testatine, titoli…) e vorrei stamparlo. A questo punto vengono i guai. Le soluzioni possibili:
    -stampare tutto con una stampante a getto di inchiostro. Enorme spreco del prezioso inchiostro nero.
    -stampare tutto con una stampante laser. Mancherebbero i colori…
    -stampare tutto con una stampante laser a colori. Oggetto troppo costoso e non alla portata di tutte le tasche.
    -far stampare da un servizio di stampa commerciale. Hanno prezzi esorbitanti per le pagine a colori, anche di un ordine di grandezza superiori a quelli delle pagine monocromatiche, già troppo alti….

    Ho ritenuto quindi che fosse necessario trovare il modo di “separare” un documento in due file: uno contenente il solo testo nero, da stampare con la stampante laser; uno contenente immagini e parole colorate, da stampare con la mia ottima stampante a getto di inchiostro.

    Qui di seguito il codice che ho usato:
    `
    \usepackage{ifthen}
    \usepackage{color}
    \usepackage{graphicx}
    \usepackage{verbatim}
    `
    I pacchetti utilizzati.
    `
    \definecolor{coloretesto}{rgb}{0,0,0}
    \definecolor{coloreuser1}{rgb}{1,0,0}
    \definecolor{coloreuser2}{rgb}{0,1,0}
    \definecolor{coloreuser3}{rgb}{0,0,1}
    %…
    `
    Qui sono definiti tutti i colori utilizzati nel documento. E’ un modo, ritengo, flessibile per modifiche successive nonché necessario al mio scopo… 😳
    `
    \newcommand{\myincludegraphics}[1]{\includegraphics{#1}}
    `
    Definisco un nuovo comando, da modificare poi, per inserire le figure poichè non so bene come agisce \renewcommand… 😳
    `
    %\begin{comment} % togliere il commento qui per ottenere tutto il documento
    \newboolean{onlyblack}
    \setboolean{onlyblack}{false} % mettere “true” o “false” se si vuole stampare il nero o il colore rispettivamente
    `
    Qui inserisco una variabile booleana modificando la quale nel sorgente si controlla se stampare il nero oppure il colore.
    `
    \ifthenelse{\boolean{onlyblack}}%

    {\definecolor{coloreuser1}{rgb}{1,1,1}%
    \definecolor{coloreuser2}{rgb}{1,1,1}%
    \definecolor{coloreuser3}{rgb}{1,1,1}%
    \renewcommand{\myincludegraphics}[1]{\phantom{\includegraphics{#1}}}}

    {\definecolor{coloretesto}{rgb}{1,1,1}}

    %\end{comment} % togliere il commento qui per ottenere tutto il documento
    `
    Qui il codice verifica il valore dato alla variabile booleana di cui sopra e ridefinisce i colori utilizzati dall’utente dando loro i valori del bianco.
    Inoltre, per far “sparire” le immagini ma conservare lo spazio loro necessario ho ridefinito il commando \myincludegraphics utilizzando il comando \phantom. Qui in particolare vi chiedo se può essere considerata una procedura corretta.
    `
    \begin{document}
    \color{coloretesto}

    Una frase scritta in nero, un'immagine colorata.

    \begin{figure}
    \begin{center}
    \myincludegraphics{immagine.jpg}
    \end{center}
    \end{figure}

    Una \textcolor{coloreuser1}{parola} di un \textcolor{coloreuser2}{colore} ed una \textcolor{coloreuser3}{seconda} dell'altro\ldots

    \end{document}
    `

    Infine, se si vuole ottenere il documento originale è sufficiente togliere i commenti dalle righe \begin{comment} e \end{comment}, fornite dal pacchetto verbatim.

    L’unico fatto seccante è quello di aver definito un nuovo comando invece di aver ridefinito \includegraphics, rendendo di fatto necessario modificare il sorgente di documenti già scritti, ma ho preferito non inoltrarmi in territori TeXani che ancora non conosco… 😀

    LuCa

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #8064
      Up
      0
      Down
      ::

      Saluti a tutti.
      E’ da poco che uso LaTeX e lo trovo uno strumento estremamente interessante.
      Mi sono imbattuto in un problema non banale (spero) e, per la prima volta, credo di essere riuscito a giungere da solo ad una soluzione soddisfacente: ora vorrei un vostro giudizio perché non si smette mai di imparare… 😀

      L’unico fatto seccante è quello di aver definito un nuovo comando invece di aver ridefinito \includegraphics, rendendo di fatto necessario modificare il sorgente di documenti già scritti, ma ho preferito non inoltrarmi in territori TeXani che ancora non conosco… 😀

      Niente di male ad aver definito un comando diverso. Puoi però evitarlo così:`\let\origincludegraphics\includegraphics`dove dai \newcommand{\myincludegraphics} e poi`\renewcommand{\includegraphics}[2][]{%
      \phantom{\origincludegraphics[#1]{#2}}}`quando daresti \renewcommand{\myincludegraphics}.

      Con il tuo modo non puoi dare argomenti opzionali a \myincludegraphics, ma se osservi la mia definizione, capisci come si può fare.

      Per il resto, va più che bene, anche se devi stare attento a eventuali comandi di colorazione dentro al testo. Il fatto di definirti colori personalizzati è utilissimo al riguardo.

      Una parola di spiegazione su \let, che si rivela spesso insostituibile:`\let\xxx\yyy`definisce il comando \xxx con l’attuale significato di \yyy. Se poi cambi la definizione di \yyy, il significato di \xxx non viene modificato. Con il modo un po’ intricato che ti ho suggerito eviti tutte le circolarità, perché quando ridefinisci \includegraphics, richiami un comando (\origincludegraphics) che ha il significato originale di \includegraphics, ma non usa questo comando.

      Ultimissima osservazione: dentro all’ambiente figure usa \centering invece di \begin{center} (e togli \end{center}:D)

      Ciao
      Enrico

    • #8065
      Up
      0
      Down
      ::


      Grazie mille delle correzioni, funziona tutto molto bene, e soprattutto della “lezione” sul comando \let…
      Saluti

      LuCa

    • #8066
      Up
      0
      Down
      ::


      Non ho capito una cosa… usando il pacchetto graphicx, mi risulta che la sintassi del comando sia la seguente:
      `
      \includegraphics[]{}
      `

      mentre nella tua definizione appare una coppia di parentesi quadre in più…
      ininfluente errore di battitura oppure hanno un significato che mi sfugge? 😳

      `
      \renewcommand{\includegraphics}[2][]{%
      ^^
      \phantom{\origincludegraphics[#1]{#2}}}`

      LuCa

    • #8067
      Up
      0
      Down
      ::

      Non ho capito una cosa… usando il pacchetto graphicx, mi risulta che la sintassi del comando sia la seguente:`\includegraphics[]{}`mentre nella tua definizione appare una coppia di parentesi quadre in più…
      ininfluente errore di battitura oppure hanno un significato che mi sfugge? 😳 `\renewcommand{\includegraphics}[2][]{%
      ^^
      \phantom{\origincludegraphics[#1]{#2}}}`

      Sono parentesi quadre che si riferiscono a \renewcommand, servono per ridefinire \includegraphics in modo che abbia un argomento opzionale (come l’originale). L’effetto finale è che il nuovo \includegraphics ha la stessa sintassi dell’originale.`\includegraphics{xxx} \phantom{\origincludegraphics[]{xxx}}

      \includegraphics[scale=.5]{xxx} \phantom{\origincludegraphics[scale=.5]{xxx}}`A sinistra della freccia c’è come scriveresti nel documento, a destra ciò che risulta. E quindi puoi scrivere il documento come faresti normalmente.

      Ciao
      Enrico

    • #8068
      Up
      0
      Down
      ::


      Ho testato un po’ più a fondo questo procedimento e ovviamente è saltato fuori un bug… 😆 …le didascalie alle figure.

      Ridefinendo \includegraphics come indicato sopra le immagini spariscono ma le didascalie restano. Otterei quindi il risultato di stamparle due volte, con pessime conseguenze.

      Mi era necessario trovare un modo per assegnare loro un colore in modo da farle sparire al momento opportuno.

      La prima idea che mi è venuta è stata quella di ridefinire lo stile della caption.
      In particolare ho usato il seguente codice per modificare il colore della parola “Figura” e del numero della figura, imitando quanto ha fatto il prof. Gregorio un paio di messaggi sopra con il comando \let
      `\renewcommand{\figurename}{\color{mycolor}Figura}
      \let\mythefigure\thefigure
      \renewcommand{\thefigure}{\color{mycolor}\mythefigure}`

      Il problema sono i due punti che dividono questo comando dal testo seguente che rimangono in nero.

      Ho pensato allora di ridefinire l’ambiente figure assegnando un colore al testo in esso compreso; invano. Cercavo di far funzionare una cosa del tipo:
      `\newenvironment{myfigure}[1][]{\begin{figure}[#1]}{\end{figure}}
      \renewenvironment{figure}[1][]{\begin{myfigure}[#1]\color{mycolor}}{\end{myfigure}}
      `
      La compilazione si conclude ma il dvi prodotto è completamente bianco (ed è composto solo da n pagine, con n uguale al numero di pagina ove viene usato per la prima volta l’ambiente).

      L’ultimo tentativo che ho fatto è stato quello di spulciare il file book.cls alla ricerca del punto in cui viene definito l’ambiente. Credo che la parte interessante sia la seguente:
      `
      \newcounter{figure}[chapter]
      \renewcommand \thefigure
      {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
      \def\fps@figure{tbp}
      \def\ftype@figure{1}
      \def\ext@figure{lof}
      \def\fnum@figure{\figurename\nobreakspace\thefigure}
      \newenvironment{figure}
      {\@float{figure}}
      {\end@float}
      `

      Pur sapendo che non è una procedura formalmente corretta, ho cercato di inserire in questa definizione dei comandi per controllare il colore del testo. In particolare ho modificato le ultime righe:
      `
      \newenvironment{figure}
      {\@float{figure}\color{mycolor}}
      {\end@float}
      `
      …non dimenticandomi di aggiungere \RequirePackage{color} all’inizio del file
      Apparentemente funziona, ma non riesco più a passare all’ambiente opzioni quali [htb].

      Alla fine mi sono rassegnato ad usare l’ambiente myfigure introdotto sopra, ma ho dovuto modificare il documento, cosa che volevo evitare…

      Spero vorrete perdonare il fatto che ho modificato così il file di classe, senza troppa cognizione di causa ma ero curioso di vedere quello che c’è scritto… 😆
      Luca

    • #8069
      DMW
        Up
        0
        Down
        ::


        Mai modificare il file originale è vivamente sconsigliato.

        Basta mettere nel preambolo
        `
        \makeatletter
        newenvironment{figure}
        {\@float{figure}\color{mycolor}}
        {\end@float}

        ….
        \makeatother
        `

        Ciao

        Andrea

      • #8070
        Up
        0
        Down
        ::


        Beh. ma certo… ovviamente avevo preparato un file mybook.cls 8)

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

    Go to top