%% grfguide.tex Copyright (C) 1994 1995 1996 1998 1999 David Carlisle %% %% This file is part of the Standard LaTeX `Graphics Bundle'. %% It may be distributed under the terms of the LaTeX Project Public %% License, as described in lppl.txt in the base LaTeX distribution. %% Either version 1.0 or, at your option, any later version. %% %% %% Modificato da Tommaso Pecorella %% Modifiche: traduzione in Italiano %% \ifx\pdfoutput\undefined % if we are not running pdftex \begin{filecontents*}{a.ps} %! %%BoundingBox:100 100 172 172 100 100 moveto 72 72 rlineto 72 neg 0 rlineto 72 72 neg rlineto stroke 100 100 moveto /Times-Roman findfont 72 scalefont setfont (A) show showpage \end{filecontents*} \else % if we are running pdftex \begin{filecontents*}{a.pdf} %PDF-1.3 %glda 5 0 obj <> stream 0.1 0 0 0.1 0 0 cm q 1 i 10 w 0 0 m 720 720 l 0 720 l 720 0 l S q 10 0 0 10 0 0 cm BT /R8 72 Tf 1 0 0 1 0 0 Tm (A)Tj ET Q Q endstream endobj 6 0 obj 124 endobj 9 0 obj <> endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 8 0 obj <> endobj 7 0 obj <> endobj 2 0 obj <>endobj xref 0 10 0000000000 65535 f 0000000426 00000 n 0000000608 00000 n 0000000367 00000 n 0000000237 00000 n 0000000015 00000 n 0000000189 00000 n 0000000547 00000 n 0000000474 00000 n 0000000208 00000 n trailer << /Size 10 /Root 1 0 R /Info 2 0 R >> startxref 664 %%EOF \end{filecontents*} \fi \documentclass[a4paper]{ltxguide} %%% No driver option specified %%% set up the files color.cfg and graphics.cfg for your site. %%% for example: %%% %%% \ExecuteOptions{dvips} %%% \usepackage{color,graphicx,shortvrb} \usepackage[italian]{babel} \usepackage{url} \ifx\pdfoutput\undefined % if we are not running pdftex \usepackage[T1]{fontenc} \else % if we are running pdftex \usepackage{ae,aecompl} \usepackage[pdftex]{thumbpdf} \pdfcompresslevel=9 \usepackage[pdftex,linktocpage,colorlinks,% pdftitle={Pacchetti del gruppo `graphics'},% pdfauthor={D. P. Carlisle}]{hyperref} \fi %% Just as an example, and to make sure, in case some %% driver option has not declared a default rule for %% .ps files: %%\DeclareGraphicsRule{.ps}{eps}{.ps}{} %%\DeclareGraphicsExtensions{.ps} %% Which means: %% .ps files are (to be treated as) EncapsulatedPostScript %% files. The .ps file is to be read for the BoundingBox. %% No `special' commands need to be applied by the driver. \newcommand{\ndt}[1]{\footnote{#1 [N.d.T.].}} \renewcommand\star{{\ttfamily*}} \newcommand{\package}[1]{\textsf{#1}} \newlength{\gxlen} \settowidth{\gxlen}{\package{graphicx}: } \newcommand\gs{\makebox[\gxlen][l]{\package{graphics}:}} \newcommand\gx{\makebox[\gxlen][l]{\package{graphicx}:}} \MakeShortVerb{\|} \renewcommand{\NEWfeature}[1]{% \hskip 1sp \marginpar{\small\sffamily\raggedright Nuova caratteristica\\#1}} \renewcommand{\NEWdescription}[1]{% \hskip 1sp \marginpar{\small\sffamily\raggedright Nuova descrizione\\#1}} \begin{document} \title{Pacchetti del gruppo `graphics'} \author{D. P. Carlisle} \date{13/01/1999} \maketitle \tableofcontents \section{Introduzione} Questo documento serve come manuale utente per i pacchetti \package{color}, \package{graphics} e \package{graphicx}. Si pu\`{o} ottenere ulteriore documentazione compilando i file sorgenti (|dtx|) di ciascun pacchetto (la documentazione risultante sar\`{a} in inglese). %%% Nota del traduttore \subsubsection*{Nota alla traduzione italiana} Una copia di questo documento e altre traduzioni in italiano di manuali \LaTeX\ sono reperibili presso: \begin{itemize} \item\url{http://guild.prato.linux.it} \item\url{ftp://lorien.prato.linux.it/pub/guild} \end{itemize} e su ogni sito CTAN nella directory \url{/info/italian}. Per un elenco aggiornato dei siti mirror CTAN consultate \url{http://www.ctan.org/} alla voce ``CTAN mirror''. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Supporto del \emph{driver}}\label{drivers} Tutti questi pacchetti fanno uso di funzionalit\`{a} che non sono fornite dal \TeX\ stesso, ma dal \emph{driver} usato per stampare il file |dvi|. Sfortunatamente non tutti i \emph{driver} supportano le stesse funzionalit\`{a}, e anche il metodo interno di accesso a queste estensioni varia tra i \emph{driver}. Come conseguenza tutti questi pacchetti hanno delle opzioni, come ad esempio `|dvips|', per specificare quale \emph{driver} deve essere usato. In genere \`{e} bene specificare un'opzione di \emph{default}, che indichi il \emph{driver} che normalmente viene usato. Supponendo che per il pacchetto \package{color}, normalmente, si vogliano usare i comandi speciali definiti nel \emph{driver} PostScript |dvipsone|, allora si deve creare un file |color.cfg| che contiene la linea:\\ |\ExecuteOptions{dvipsone}|\\ Di solito si crea anche un file |graphics.cfg|, per impostare un'opzione analoga per il pacchetto \package{graphics}. Nei pacchetti sono dichiarate le seguenti opzioni per i \emph{driver}: \begin{quote}\raggedright |dvips|, |xdvi|, |dvipdf|, |dvipdfm|, |pdftex|, |dvipsone|, |dviwindo|, |emtex|, |dviwin|, |pctexps|, |pctexwin|, |pctexhp|, |pctex32|, |truetex|, |tcidvi|, |vtex|, |oztex|, |textures| \end{quote} Se si vuole usare un \emph{driver} che non \`{e} presente nella lista precedente, si pu\`{o} aggiungere un'opzione per quel \emph{driver} inserendo una riga di tipo |\DeclareOption| adatta in |graphics.cfg| e |color.cfg|, prima di renderla l'opzione predefinita tramite |\ExecuteOptions| come descritto in precedenza. Per esempio, per aggiungere l'opzione `|dvi2ps|' per il \emph{driver} originario Unix di traduzione da |dvi| a |ps|, e per renderla l'opzione standard, bisogna che i file di configurazione contengano: \begin{verbatim} \DeclareOption{dvi2ps}{\def\Gin@driver{dvi2ps.def}} \ExecuteOptions{dvi2ps} \end{verbatim} C'\`{e} un apposito file |dvi2ps.def| nella distribuzione standard. Non \`{e} abilitato normalmente, dal momento che non \`{e} stato controllato a fondo, poich\'{e} il \emph{driver} non \`{e} pi\`{u} disponibile. Analogamente, i seguenti file per \emph{driver} sono distribuiti, ma normalmente disabilitati. \begin{quote}\raggedright |dvi2ps|, |dvialw|, |dvilaser|, |dvitops|, |psprint|, |pubps|, |ln| \end{quote} La maggior parte di questi file per \emph{driver} sono generati dal file sorgente |drivers.dtx|. Questo file contiene i sorgenti per altre versioni dei \emph{driver} (per esempio vecchie versioni di dvips e textures) che non sono normalmente generati. Se si usa un \emph{driver} che non \`{e} coperto da nessuna di queste possibilit\`{a}, si pu\`{o} provare a scrivere un file |.def| per analogia con uno dei \emph{driver} esistenti e poi specificare un'opportuna opzione in |graphics.cfg| e |color.cfg|, come per l'esempio precedente riguardante |dvi2ps|. \section{Colore} Il supporto per il colore \`{e} basato sull'idea di un sistema di \emph{modelli di colore}. I modelli di colore supportati da ciascun \emph{driver} sono diversi, ma tipicamente includono: \begin{description} \item[rgb] Rosso [G]Verde Blu: una lista di tre numeri, compresi tra~0 e~1, separati da virgole, che indicano le componenti del colore. \item[cmyk] Ciano Magenta [Y]Giallo [K]Nero: una lista di quattro numeri, compresi tra~0 e~1, separati da virgole, che indicano le componenti del colore in accordo con il modello additivo usato in molte stampanti. \item[gray] Toni di grigio: un solo numero compreso tra~0 e~1. \item[named] Colori scelti per nome, per esempio `JungleGreen'. Non tutti i \emph{driver} supportano questo modello. Il nome deve essere `noto' al \emph{driver} o aggiunto usando i comandi descritti in |color.dtx|. Alcuni \emph{driver} supportano una forma estesa del modello \textbf{named}, in cui si pu\`{o} anche specificare un'intensit\`{a} del colore, cosicch\'{e} `\mbox{JungleGreen, 0.5}' indicher\`{a} quel colore con intensit\`{a} dimezzata. \end{description} Occorre notare come il modello \textbf{named} sia in realt\`{a} solo un esempio di un modello di colore che usa nomi al posto di specifiche numeriche. Altre opzioni possono essere fornite localmente per avere differenti modelli di colore, per esempio \textbf{pantone} (un set di colori standard industriale), \textbf{x11} (nomi di colori del sistema X Window), etc. La distribuzione standard al momento non ha questi modelli, ma il modello \textbf{named} pu\`{o} essere usato come esempio di come definire un nuovo modello di colore. I nomi usati nel modello \textbf{named} sono quelli suggeriti da Jim Hafner nei suoi pacchetti \package{colordvi} e \package{foiltex}, e implementati in origine nell'header file |color.pro| del \emph{driver} \texttt{dvips}. \subsection{Opzioni del pacchetto} La maggior parte delle opzioni del pacchetto \package{color} serve solamente a specificare il \emph{driver}, ad esempio |dvips|, come discusso nel paragrafo~\ref{drivers}. Un'interessante opzione speciale per il pacchetto \package{color} \`{e} |monochrome.| Se si seleziona questa opzione, tutti i comandi per il colore vengono disabilitati, in modo che non generino errori, ma nemmeno colori. Questo pu\`{o} essere utile se si usa un sistema di visualizzazione che non gestisce i colori. Altre tre opzioni del pacchetto controllano l'uso del modello \textbf{named}. Il \emph{driver} |dvips| (di \emph{default}) predefinisce 68 nomi di colori. L'opzione |dvips|, normalmente, rende questi nomi disponibili nel modello di colore \textbf{named}. Se non si vuole che questi nomi siano definiti in questo modello (risparmiando cos\`{\i} un po' di memoria \TeX) si pu\`{o} usare l'opzione |nodvipsnames|. Al contrario, se si usa un \emph{driver} differente, si pu\`{o} voler aggiungere questi nomi al modello \textbf{named} di quel \emph{driver} (specialmente se si sta lavorando ad un documento originariamente prodotto con |dvips|); in questo caso si pu\`{o} usare l'opzione |dvipsnames|. Infine l'opzione |usenames| rende tutti i nomi del modello \textbf{named} direttamente disponibili, come descritto in seguito. \subsection{Definire i colori} I colori |black| (nero), |white| (bianco), |red| (rosso), |green| (verde), |blue| (blu), |cyan| (ciano), |magenta| e |yellow| (giallo) sono predefiniti, ma si possono creare nuove definizioni di colori tramite il comando |\definecolor|. \begin{decl} |\definecolor|\arg{nome}\arg{modello}\arg{specifica del colore} \end{decl} Questo comando definisce \m{nome} come un colore che pu\`{o} essere usato nei successivi comandi di colore. Ad esempio: \begin{verbatim} \definecolor{light-blue}{rgb}{0.8,0.85,1} \definecolor{mygrey}{gray}{0.75} \end{verbatim} \definecolor{light-blue}{rgb}{0.8,0.85,1} \definecolor{mygrey}{gray}{0.75} Ora |light-blue| e |mygrey| possono essere usati in aggiunta ai colori definiti precedentemente. \subsection{Usare i colori} \subsubsection{Usare i colori predefiniti} La sintassi per cambiare colore ricalca quella del cambio di font. La sintassi base \`{e}: \begin{decl} |\color|\arg{nome} \end{decl} Questa \`{e} una \emph{dichiarazione}, come |\bfseries|. Cambia il colore corrente in \m{nome} fino alla fine del gruppo o ambiente corrente. Un metodo alternativo \`{e} quello di usare una forma di tipo \emph{comando} che prende come \emph{argomento} il testo da colorare. Questo \`{e} simile ai comandi dei font come |\textbf|: \begin{decl} |\textcolor|\arg{nome}\arg{testo} \end{decl} Quindi il comando precedente \`{e} sostanzialmente equivalente a:\\ |{\color|\arg{nome}\emph{testo}|}|. \subsubsection{Usare direttamente le specifiche di colore} \begin{decl} |\color|\oarg{modello}\arg{specifica}\\ |\textcolor|\oarg{modello}\arg{specifica}\arg{testo} \end{decl} Normalmente si dichiarano tutti i colori da usare successivamente in un pacchetto o nel preambolo del documento, ma a volte \`{e} conveniente usare direttamente un colore senza prima definirlo. Per rendere questo possibile, |\color| (e tutti gli altri comandi per il colore) hanno un argomento opzionale per specificare il modello. Se si usa questo argomento opzionale, allora l'argomento obbligatorio deve contenere una \m{specifica di colore} al posto di un \m{nome}. Per esempio:\\ |\color[rgb]{1,0.2,0.3}|\\ selezioner\`{a} direttamente quel colore. Questo metodo \`{e} particolarmente utile per accedere al modello \textbf{named}:\\ |\color[named]{BrickRed}|\\ seleziona il colore |dvips| BrickRed. Piuttosto che usare ripetutamente |[named]|, si pu\`{o} usare |\definecolor| per creare opportuni alias:\\ |\definecolor{myred}{named}{WildStrawberry}| \ldots\ |\color{myred}|\ \ldots In alternativa, se si vogliono usare i nomi originali del modello \textbf{named}, si pu\`{o} usare l'opzione di pacchetto |usenames|, che in realt\`{a} attiva una |\definecolor| per ciascun colore del modello \textbf{named}, rendendo cos\`{\i} |\color{WildStrawberry}| equivalente a |\color[named]{WildStrawbery}|. \subsection{Colori con nomi} L'uso del modello di colore \textbf{named} presenta alcuni vantaggi rispetto ad usare gli altri modelli. Per prima cosa, dal momento che il file |dvi| contiene una richiesta di colore fatta per \emph{nome}, la miscela di colori primari che viene realmente usata per ottenere il colore richiesto pu\`{o} essere tarata sulle caratteristiche di una particolare stampante. Nel \emph{driver} |dvips| il significato dei nomi dei colori \`{e} definito nel file di intestazione |color.pro|. Gli utenti sono invitati a creare versioni differenti di questo file per ogni stampante che usano. In questa maniera lo stesso file dvi produrr\`{a} colori simili anche se stampato su stampanti con differenti caratteristiche cromatiche. In secondo luogo, oltre ai cosiddetti `colori di processo' che sono prodotti miscelando colori primari durante la fase di stampa, si possono usare colori `spot' o `custom'. In questo caso un particolare nome di colore non si riferisce ad un mix di colori primari, ma ad un particolare inchiostro. Le parti di un documento che usano questo colore saranno stampate separatamente usando l'inchiostro che \`{e} rappresentato da quel nome di colore. \subsection{Colore di pagina} \begin{decl} |\pagecolor|\arg{nome}\\ |\pagecolor|\oarg{modello}\arg{specifica} \end{decl} Si pu\`{o} impostare il colore dello sfondo di un'intera pagina tramite |\pagecolor|. Questo comando usa lo stesso tipo di argomenti di |\color|, ma imposta il colore dello sfondo della pagina corrente e di tutte le successive. \`{E} una dichiarazione globale, quindi occorre usare |\pagecolor{white}| per `ritornare alla normalit\`{a}'. \subsection{Sfondi dei riquadri} Esistono due comandi simili a |\fbox| per produrre riquadri con lo sfondo colorato. \begin{decl} |\colorbox|\arg{nome}\arg{text}\\ |\colorbox|\oarg{modello}\arg{specifica}\arg{testo}\\ |\fcolorbox|\arg{nome1}\arg{nome2}\arg{testo}\\ |\fcolorbox|\oarg{modello}% \arg{specifica1}\arg{specifica2}\arg{testo} \end{decl} Il primo crea una scatola colorata con \m{nome}, \colorbox{mygrey}{come questa}. Il terzo \`{e} simile, ma mette un bordo di colore \m{nome1} attorno a una scatola di colore \m{nome2}. Questi comandi usano i parametri di |\fbox|, |\fboxrule| e |\fboxsep|, per determinare lo spessore della linea e la dimensione dell'area colorata. \subsection{Possibili problemi} \TeX\ non \`{e} stato concepito con il colore in mente, e produrre colori richiede un grande aiuto da parte del \emph{driver}. Perci\`{o}, a seconda del \emph{driver}, potrebbero non essere disponibili tutte le possibilit\`{a} del pacchetto \package{color}. Alcuni \emph{driver} non mantengono uno speciale `stack dei colori'. Questi \emph{driver}, con tutta probabilit\`{a}, produrranno strani risultati se si annidano cambi di colore, o se si usano colori in ambienti flottanti\ndt{ambienti |figure|, |table| e similari}. Alcuni \emph{driver} non mantengono i colori durante i salti di pagina, quindi se la pagina finisce in mezzo ad un capoverso colorato, l'ultima parte del testo sar\`{a} stampata, erroneamente, in nero. C'\`{e} inoltre un altro tipo di problema che si presenta con tutti i \emph{driver}. A causa di certe difficolt\`{a} tecniche\footnote{Almeno due le cause: 1) La presenza di uno \texttt{\char`\\special} \m{qualcosa} impedisce a \texttt{\char`\\addvspace} di `vedere' lo spazio della lista verticale corrente, causando quindi un'incorretta aggiunta di spazio verticale. 2) Un \m{qualcosa} come primo elemento in un \texttt{\char`\\vtop} fa spostare il punto di riferimento della scatola.}% , \`{e} possibile che, nei punti di cambio di colore, la spaziatura sia diversa dal normale. Per questo motivo l'opzione |monochrome| non disabilita completamente i comandi di colore, ma li ridefinisce in modo che scrivano su un file di log. In questo modo si otterr\`{a} lo stesso effetto sulla spaziatura, in modo da ottenere un documento in bianco e nero che per\`{o} ha la stessa spaziatura del documento finale a colori. \section{I pacchetti grafici} Ci sono due pacchetti grafici: \begin{description} \item[\package{graphics}] Il pacchetto grafico `standard'. \item[\package{graphicx}] Il pacchetto grafico `esteso', o `potenziato'. \end{description} I due differiscono solo nel formato degli argomenti opzionali dei vari comandi; i nomi dei comandi e gli argomenti obbligatori sono gli stessi in tutti e due i pacchetti. \subsection{Opzioni del pacchetto} Come osservato nel paragrafo~\ref{drivers}, i pacchetti grafici condividono il \emph{driver} con il pacchetto \package{color}. Come per il colore, \`{e} bene impostare un \emph{driver} predefinito nel file |graphics.cfg| che conterr\`{a} la linea (per usare |dvips|, ad esempio):\\ |\ExecuteOptions{dvips}| I pacchetti grafici hanno altre opzioni per controllare quali caratteristiche abilitare: \begin{description} \item[draft] sopprime tutte le funzionalit\`{a} di tipo `special'. In particolare non saranno inserite le figure (ma saranno ugualmente lette per determinarne le dimensioni); al loro posto verr\`{a} stampato un riquadro della giusta dimensione, contenente il nome del file. \item[final] L'opposto di |draft|. Utile per annullare l'effetto di un'opzione globale |draft| specificata nel comando |\documentclass|. \item[hiderotate] Non fa vedere il testo ruotato (presumibilmente perch\'{e} il \emph{driver} non pu\`{o} effettuare la rotazione). \item[hidescale] Non fa vedere il testo ridimensionato (presumibilmente perch\'{e} il \emph{driver} non pu\`{o} effettuare il ridimensionamento). \item[hiresbb] Cerca le indicazioni di dimensione nelle linee |%%HiResBoundingBox| invece che nelle linee standard |%%BoundingBox|.% \NEWfeature{29/10/1996} \end{description} \subsection{Rotazione} \begin{decl} \gs |\rotatebox|\arg{angolo}\arg{testo}\\ \gx |\rotatebox|\oarg{lista valori chiave}\arg{angolo}\arg{testo} \end{decl} Questo comando mette \m{testo} in una scatola, come |\mbox|, ma ruota la scatola di \m{angolo} gradi, \rotatebox{15}{come questo}. La versione standard esegue la rotazione sempre attorno al punto di riferimento della scatola, ma la versione \package{keyval} accetta le seguenti chiavi: \begin{decl} |origin|=\m{etichetta}\\ |x|=\m{dimensioni}\\ |y|=\m{dimensioni}\\ |units|=\m{numero} \end{decl} Si possono, quindi, specificare |x| e |y|, che indicano le coordinate del centro di rotazione relativamente al punto di riferimento della scatola, per esempio |[x=2mm, y=5mm]|. Alternativamente, per i punti pi\`{u} comuni, si pu\`{o} usare |origin| con una \m{etichetta} contenente uno o pi\`{u} dei seguenti dati: |lrctbB|\ndt{l=sinistra (left), r=destra (right), c=centro, t=alto (top), b=basso} (|B| indica la \emph{baseline}, come nel pacchetto \package{PSTricks}). Per esempio, si osservi la differenza tra una rotazione standard di $180^\circ$ \ldots\rotatebox{180}{Come Questa}\ldots\ e l'effetto ottenuto usando la chiave |origin|:\\ |[origin = c]| rotazione intorno al centro della scatola,\ldots \rotatebox[origin=c]{180}{Come Questa}\ldots\\ |[origin = tr]| rotazione intorno all'angolo superiore destro \rotatebox[origin=tr]{180}{Come Questa}\ldots La chiave |units| permette di cambiare l'unit\`{a} di misura predefinita, che \`{e} gradi antiorari. Si deve dare il numero di nuove unit\`{a} in una rotazione antioraria completa. Per esempio:\\ |[units = -360]| specifica i gradi in senso orario.\\ |[units = 6.283185]| specifica i radianti. \subsection{Ridimensionamento} \subsubsection{Ridimensionamento di un fattore di scala} \begin{decl} |\scalebox|\arg{scala-o}\oarg{scala-v}\arg{testo} \end{decl} Analogamente al comando precedente, questo comando \`{e} simile a |\mbox|, ma ridimensiona il \m{testo}. Se non viene specificata la \m{scala-v}, essa viene posta di \emph{default} allo stesso valore di \m{scala-o}. Se viene specificata, il testo viene deformato, dal momento che gli allungamenti verticale e orizzontale sono differenti, \scalebox{3}[.7]{Cos\`{\i}}. \begin{decl} |\reflectbox|\arg{testo} \end{decl} Un'abbreviazione per |\scalebox{-1}[1]|\arg{testo}. \subsubsection{Ridimensionamento ad una data dimensione} \begin{decl} |\resizebox|\star\arg{lunghezza-o}\arg{lunghezza-v}\arg{testo} \end{decl} Ridimensiona \m{testo} in modo che la sua larghezza sia \m{lunghezza-o}. Se viene usato |!| al posto di uno dei due argomenti, viene usato l'altro per determinare il fattore di scala da usare in entrambe le direzioni. Normalmente \m{lunghezza-v} si riferisce all'altezza della scatola, ma nella forma asteriscata si riferisce a `altezza + profondit\`{a}'. Come in tutti gli argomenti dei riquadri \LaTeXe{}, si possono usare |\height|, |\width|, |\totalheight| e |\depth| (rispettivamente altezza, larghezza, altezza totale e profondit\`a) per riferirsi alle dimensioni originarie della scatola. |\resizebox{1in}{\height}{Qualcosa}|: \resizebox{1in}{\height}{Qualcosa} |\resizebox{1in}{!}{Qualcosa}|: \resizebox{1in}{!}{Qualcosa} \subsection{Includere file grafici} Le funzioni per l'inclusione di file grafici tentano di offrire all'utente la medesima sintassi per includere tutti i tipi di file grafici che possono essere trattati dal \emph{driver}. Questo si basa sul fatto che il file abbia un'estensione che ne identifichi il tipo. Le `opzioni del \emph{driver}' definiranno un insieme di estensioni che il \emph{driver} pu\`{o} trattare, anche se questa lista pu\`{o} essere estesa usando le dichiarazioni descritte in seguito. Se l'estensione del file \`{e} sconosciuta per il \emph{driver}, il sistema pu\`{o} provare ad usare un tipo di \emph{default}. Il \emph{driver} PostScript imposta questo \emph{default} a |eps| (PostScript), ma questo comportamento pu\`{o} essere modificato se si vuole un altro tipo di trattamento predefinito. \begin{decl} \gs |\includegraphics|\star\oarg{llx,lly}\oarg{urx,ury}\arg{file}\\ \gx |\includegraphics|\star\oarg{lista valori chiave}\arg{file} \end{decl} Questo comando include un file grafico. Se l'asterisco \`{e} presente, l'immagine \`{e} `tagliata' alla dimensione specificata. Se l'asterisco \`{e} omesso, allora qualsiasi parte dell'immagine che si trova al di fuori del \emph{bounding box}\ndt{Letteralmente `scatola delimitante', \`{e} la scatola che delimita la porzione da visualizzare dell'immagine. In realt\`{a} esso definisce pi\`{u} propriamente la dimensione dell'area riservata all'immagine nel documento.} specificato sovrascriver\`{a} il testo circostante. Se l'argomento opzionale viene omesso, allora la dimensione dell'immagine verr\`{a} determinata leggendo un file esterno, come descritto in seguito. \paragraph{versione \package{graphics}} Se \oarg{urx,ury} \`{e} presente, deve indicare le coordinate dell'angolo in alto a destra dell'immagine, come coppia di dimensioni \TeX. Se vengono omesse le unit\`{a} di misura, si assume che siano |bp|, quindi |[1in,1in]| e |[72,72]| sono equivalenti. Se viene usato un solo argomento opzionale, si assume che l'angolo in basso a sinistra sia a |[0,0]|; in alternativa, si pu\`{o} usare \oarg{llx,lly} per indicare le coordinate di questo punto. \paragraph{versione \package{graphicx}} In questo caso la forma asteriscata \`{e} presente solo per compatibilit\`{a} con la versione standard, e aggiunge solamente |clip| alla lista delle chiavi specificate (in pi\`{u}, per incrementare la compatibilit\`{a}, se si usano \emph{due} argomenti opzionali, viene usata la versione `standard' di |\includegraphics| anche se \`{e} caricato il pacchetto \package{graphicx}). Sono ora elencate le possibili chiavi. \begin{description} \item[bb] Gli argomenti devono essere quattro dimensioni, separate da spazi. Queste indicano il \emph{bounding box} della regione da stampare all'interno del file\ndt{il pdf\TeX\ 14h non gestisce correttamente i \emph{bounding box}, quindi \`{e} consigliabile usare l'opzione viewport}. \item[bbllx,bblly,bburx,bbury] Imposta il \emph{bounding box}. Principalmente per compatibilit\`{a} con i vecchi pacchetti. |bbllx=a,bblly=b,bburx=c,bbury=d| \`{e} equivalente a |bb = a b c d|. \item[natwidth,natheight] Un'altra alternativa a |bb|. |natheight=h,natwidth=w| \`{e} equivalente a |bb = 0 0 h w|. \item[hiresbb]\NEWfeature{29/10/1996} Chiave a valori booleani. Se impostata a |true| (vero) (specificare solo |hiresbb| \`{e} equivalente a |hiresbb=true|) \TeX\ cercher\`{a} linee del tipo |%%HiResBoundingBox| invece che |%%BoundingBox|. Pu\`{o} essere impostato a |false| (falso) per annullare l'effetto di un'impostazione di \emph{default} a |true| determinata dall'opzione di pacchetto |hiresbb|. \item[viewport]\NEWfeature{01/06/1995} La chiave |viewport| accetta quattro argomenti, proprio come |bb|. In questo caso, per\`{o}, i valori sono riferiti all'origine indicata dal \emph{bounding box} nel file. In questo modo per `vedere' il quadrato di |1in| a partire dall'angolo in basso a sinistra dell'area specificata dal \emph{bounding box}, si pu\`{o} usare l'argomento |viewport=0 0 72 72|. \item[trim]\NEWfeature{01/06/1995} \`{E} simile a |viewport|, ma qui le quattro lunghezze indicano la quantit\`{a} di spazio da levare o aggiungere a ciascun lato. |trim= 1 2 3 4| `taglia' l'immagine di |1bp| a sinistra, |2bp| in basso, |3bp| a destra e |4bp| in alto. \item[angle] Angolo di rotazione. \item[origin]\NEWfeature{28/09/1995} Origine della rotazione. Si veda la documentazione di |\rotatebox|. \item[width] Larghezza richiesta. L'immagine viene ridimensionata a questa larghezza. \item[height] Altezza richiesta. L'immagine viene ridimensionata a questa altezza. \item[totalheight]\NEWfeature{01/06/1995} Specifica l'altezza totale (altezza $+$ profondit\`{a}) della figura. Questa sar\`{a} differente dall'`altezza' se vi \`{e} stata una rotazione. In particolare se la figura \`{e} stata ruotata di $-90^\circ$, essa avr\`{a} un'altezza nulla e una notevole profondit\`{a}. \item[keepaspectratio]\NEWfeature{27/09/1995} Chiave a valore booleano, come |clip|. Se impostata a |true| (vero), allora anche specificando entrambe |width| e |height| (o |totalheight|) l'immagine non viene distorta, ma viene ridimensionata in modo tale che non si superi nessuna delle due dimensioni. \item[scale] Fattore di scala. \item[clip] Alternativamente |true| (vero) o |false| (falso) (o nessun valore, il che \`{e} equivalente a |true|). L'immagine viene tagliata sul \emph{bounding box}. \item[draft] Chiave a valore booleano, come |clip|. Passa temporaneamente alla modalit\`{a} \emph{draft}. \item[type] Specifica il tipo di immagine. \item[ext] Specifica l'estensione del file. Va usato \emph{solamente} insieme a |type|. \item[read] Specifica l'estensione del `file di lettura'. Va usato \emph{solamente} insieme a |type|. \item[command] Specifica un comando che deve essere applicato al file. Va usato \emph{solamente} insieme a |type|. \end{description} Per le chiavi che specificano le dimensioni originali (ossia le chiavi per il \emph{bounding box}, |trim|, e |viewport|) si pu\`{o} omettere l'unit\`{a} di misura, e in questo caso si assume che essa sia |bp| (ossia punti PostScript). Le prime sei chiavi specificano le dimensioni originali dell'immagine. Queste devono essere specificate nel caso in cui il file non possa essere letto da \TeX\ o contenga una specifica di \emph{bounding box} di dimensioni errate. |bbllx|\ldots\ |\bbury| sono principalmente per compatibilit\`{a} con i vecchi pacchetti.\\ |bbllx=a, bblly=b, bburx=c, bbury=d|\\ \`{e} equivalente a\\ |bb = a b c d|. |natheight| e |natwidth| sono solo delle abbreviazioni per impostare la coordinata in basso a sinistra a |0 0|, e quella in alto a destra alla larghezza e altezza specificate. Le rimanenti chiavi servono a specificare un ridimensionamento o una rotazione che deve essere applicata all'immagine. Per ottenere questi effetti usando il pacchetto \package{graphics}, la chiamata a |\includegraphics| deve essere posta all'interno dell'argomento di un comando |\rotatebox| o |\scalebox|. Le chiavi vengono lette da sinistra a destra, quindi |[angle=90, height=1in]| significa ruotare di 90 gradi e dopo ridimensionare l'altezza a |1in|.\\ |[height=1in, angle=90]| avrebbe portato ad una \emph{larghezza} finale di |1in|. Se viene caricato anche il pacchetto \package{calc}, le lunghezze possono usare la sintassi di \package{calc}, per esempio per specificare una larghezza di 2\,cm inferiore alla larghezza del testo: |[width=\textwidth-2cm]|. \TeX\ lascia lo spazio equivalente al \emph{bounding box} che viene specificato nel file, o negli argomenti opzionali. Se vi \`{e} una parte dell'immagine che eccede quest'area, essa di \emph{default} sovrascriver\`{a} il testo circostante. Se viene usata la forma asteriscata, o viene specificata l'opzione |clip|, qualsiasi parte dell'immagine al di fuori di quest'area non verr\`{a} stampata. Le ultime quattro chiavi sopprimono la lettura dell'estensione del nome del file. Se vengono usate, l'argomento principale \m{file} non deve contenere l'estensione. Esse corrispondono agli argomenti di |\DeclareGraphicsRule|, descritto pi\`{u} avanti. Per vedere l'effetto che hanno le varie opzioni, si consideri il file |a.ps|. Questo file contiene la specifica di \emph{bounding box} \begin{verbatim} %%BoundingBox:100 100 172 172 \end{verbatim} Ossia, la regione stampata \`{e} formata da un quadrato di dimensione 1\,pollice a 100\,pt dall'angolo in basso a sinistra del foglio. In tutti gli esempi che seguono l'input sar\`{a} del tipo \begin{verbatim} sinistra---\fbox{\includegraphics{a}}---destra \end{verbatim} con differenti opzioni passate a |\includegraphics|. Nessun argomento opzionale.\\ sinistra---\fbox{\includegraphics{a}}---destra \gs |\scalebox{0.5}{\includegraphics{a}}|\\ \gx |\includegraphics[scale=.5]{a}|\\ sinistra---\fbox{\includegraphics[scale=.5]{a}}---destra \gs |\includegraphics[115,110][135,145]{a}}|\\ \gx |\includegraphics[bb= 115 110 135 145]{a}|\\ \ifx\pdfoutput\undefined % if we are not running pdftex sinistra---\fbox{\includegraphics[bb= 115 110 135 145]{a}}---destra \else sinistra---\fbox{\includegraphics[viewport= 15 10 35 45]{a}}---destra \fi \gs |\includegraphics*[115,110][135,145]{a}}|\\ \gx |\includegraphics[bb= 115 110 135 145,clip]{a}|\\ \ifx\pdfoutput\undefined % if we are not running pdftex sinistra---\fbox{\includegraphics[bb= 115 110 135 145,clip]{a}}---destra \else sinistra---\fbox{\includegraphics[viewport= 15 10 35 45,clip]{a}}---destra \fi \gs |\scalebox{0.5}{\includegraphics{a}}| e l'opzione |draft|.\\ \gx |\includegraphics[scale=.5, draft]{a}|\\ sinistra---\fbox{\includegraphics[scale=.5, draft]{a}}---destra \subsection{Altri comandi nei pacchetti \package{graphics} e \package{graphicx}} \begin{decl} |\graphicspath|\arg{dir-list} \end{decl} Questa dichiarazione opzionale pu\`{o} essere usata per specificare una lista di directory in cui cercare i file grafici. Il formato \`{e} lo stesso della primitiva \LaTeXe\ |\input@path|: una lista di directory, ciascuna racchiusa in un gruppo |{}| (anche se nella lista ce n'\`{e} una sola). Per esempio:\\ |\graphicspath{{eps/}{tiff/}}|\\ far\`{a} in modo che il sistema cerchi nelle sottodirectory |eps| e |tiff| della directory corrente. Questa \`{e} la sintassi Unix, su un Mac sarebbe stato:\\ |\graphicspath{{:eps:}{:tiff:}}|\\ Si noti la differenza di convenzioni, sui Macintosh \`{e} necessario un |:| per indicare la cartella corrente, mentre su Unix un |/| iniziale avrebbe significato la directory radice `root'. L'impostazione predefinita per questo percorso \`{e} |\input@path|, cio\`{e}: i file grafici saranno cercati in tutti i posti in cui vengono cercati i file \TeX. \begin{decl} |\DeclareGraphicsExtensions|\arg{ext-list} \end{decl} \NEWdescription{01/12/1994} Questa dichiarazione specifica il comportamento del sistema quando non viene specificata un'estensione tra gli argomenti di |\includegraphics|. \m{ext-list} deve essere una lista di estensioni separate da virgole (spazi bianchi tra gli elementi vengono ignorati). Viene creato un nome di file aggiungendo la prima estensione presente nella lista; se il file viene trovato, il sistema agisce come se fosse stata specificata quell'estensione, altrimenti viene provata la successiva estensione nella \m{ext-list}. Si noti che se non viene indicata un'estensione nel comando |\includegraphics|, il file grafico deve esistere al momento della compilazione \LaTeX, in quanto il nome completo del file viene usato per determinare quale estensione della lista deve essere usata. D'altro canto, se viene specificata l'estensione, per esempio |\includegraphics{a.ps}| invece di |\includegraphics{a}|, allora non \`{e} necessario che il file esista quando viene effettuata la compilazione (in particolare pu\`{o} essere creato `al volo' dal \m{comando} specificato in |\DeclareGraphicsRule|, spiegato pi\`{u} avanti). \LaTeX\ deve, per\`{o}, essere in grado di determinare le dimensioni dell'immagine, quindi le dimensioni devono essere specificate negli argomenti o nel `file di lettura', che deve essere presente al momento della compilazione \LaTeX. \begin{decl} |\DeclareGraphicsRule|\arg{ext}\arg{type}\arg{file-di-lettura}\arg{comando} \end{decl} Si possono fare un numero qualsiasi di dichiarazioni di questo tipo. Esse determinano il modo in cui il sistema reagisce quando viene specificata un'estensione \m{ext}. L'estensione pu\`{o} essere specificata esplicitamente o, se l'argomento di |\includegraphics| non ha un'estensione, pu\`{o} essere un'estensione predefinita dalla lista \m{ext-list} specificata con |\DeclareGraphicsExtensions|. \m{ext} \`e l'estensione dei file a cui si applica questa regola. Come caso speciale, \m{ext} pu\`{o} essere |*|, per indicare il comportamento predefinito per tutte le estensioni non dichiarate (si veda l'esempio pi\`{u} avanti). \m{type} \`{e} il `tipo' del file in questione. Tutti i file dello stesso tipo saranno letti dallo stesso comando interno (che deve essere definito in un `driver file'). Per esempio, i file con estensione |ps|, |eps| e |ps.gz| possono essere tutti classificati come di tipo |eps|. \m{file-di-lettura} determina l'estensione del file che deve essere letto per determinare le informazioni sulla dimensione dell'immagine. Pu\`{o} essere lo stesso di \m{ext}, ma pu\`{o} essere differente. Per esempio, i file |.ps.gz| non sono facilmente leggibili da \TeX, cos\`{\i} si possono mettere le informazioni riguardanti il \emph{bounding box} in un file separato con estensione |.ps.bb|. Se \m{file-di-lettura} non \`{e} indicato, |{}|, allora il sistema non cercher\`{a} di trovare un file esterno contenente le informazioni di dimensione, e queste dovranno essere specificate negli argomenti di |\includegraphics|. Se il \emph{driver} specifica una procedura per leggere le dimensioni di file di tipo \m{type}, verr\`{a} usata quella, altrimenti verr\`{a} usata la procedura per leggere i file |eps|. In questo modo la dimensione di un file di tipo \emph{bitmap} pu\`{o} essere specificata in un file contenente una linea |%%BoundingBox| come se fosse un PostScript, se non \`{e} disponibile un formato pi\`{u} specifico. Come caso speciale, si pu\`{o} usare |*| per indicare la stessa estensione del file grafico. Questo \`{e} utile principalmente nel caso in cui si usi |*| come estensione, dal momento che in questo caso l'estensione \`{e} ignota. Per esempio \begin{verbatim} \DeclareGraphicsRule{*}{eps}{*}{} \end{verbatim} Questo dichiara una regola di \emph{default} tale che tutte le estensioni ignote sono trattate come file EPS, e il file sia letto alla ricerca di un commento di tipo |%%BoundingBox|. \m{comando} \`{e} di solito vuoto, ma se non lo \`{e} sar\`{a} usato al posto del nome del file nello |\special|. In questo argomento si pu\`{o} usare |#1| per indicare il nome del file. In questo modo, se si usa il \emph{driver} |dvips|, si pu\`{o} usare\\ |\DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{`zcat #1}|\\ l'argomento finale fa in modo che dvips usi il comando |zcat| per decomprimere il file prima di inserirlo nell'output PostScript. Si noti che \LaTeX\ cercher\`{a} i file grafici per mezzo di una ricerca nelle directory definite in TEXINPUTS (ed eventualmente in altri posti, come specificato con |\graphicspath|), ma pu\`{o} darsi che il comando che si specifica in quest'argomento non sia in grado di trovare i file a meno che essi non siano nella directory corrente. Su alcuni sistemi \`{e} possibile modificare il comando in modo che possa cercare i file in tutte le directory in cui vengono cercati da \LaTeX{}. Per esempio su Unix, con le pi\`{u} recenti versioni di \TeX\ web2c, si pu\`{o} modificare il comando precedente in modo che l'ultimo argomento sia:\\ |{`zcat `kpsewhich -n latex tex #1`}|\\ che fa in modo che il programma |kpsewhich| trovi il file, cercandolo all'interno dei percorsi \LaTeX, e poi passi il percorso completo al programma |zcat| in modo che possa decomprimere il file. Qualsiasi costrutto di questo tipo \`{e} strettamente dipendente dal sistema, e sarebbe meglio metterlo in un file |graphics.cfg|, mantenendo cos\`{\i} portabile il documento. \subsection{Impostazione globale delle chiavi} La maggior parte delle chiavi di tipo \package{keyval} usate nel pacchetto \package{graphicx} possono essere impostate anche attraverso il comando |\setkeys| fornito dal pacchetto \package{keyval}. Per esempio, si supponga di volere che tutte le figure da inserire nel documento corrente siano ridimensionate al 75\% della larghezza delle linee del testo, in questo caso si pu\`{o} dare il seguente comando:\\ |\setkeys{Gin}{width=0.75\textwidth}|\\ `|Gin|' \`{e} il nome usato per le chiavi \package{keyval} associate alla `Inclusione Grafica'. Tutti i successivi comandi |\includegraphics| (all'interno dello stesso gruppo o ambiente) agiranno come se fosse specificato |[width=0.75\textwidth]| in aggiunta alle altre chiavi impostate negli argomenti opzionali. In maniera simile, per fare in modo che tutti gli argomenti di |\rotatebox| accettino un argomento in radianti, occorre specificare:\\ |\setkeys{Grot}{units=6.28318}| \subsection{Compatibilit\`{a} tra \package{graphics} e \package{graphicx}} Per un autore di documenti non ci sono effettivi problemi di compatibilit\`{a} tra i due pacchetti. Si pu\`{o} scegliere l'interfaccia che si preferisce e usare il pacchetto appropriato. Per un autore di classi o pacchetti la situazione \`{e} leggermente differente. Si supponga di dover scrivere una classe per lettere che deve stampare un logo della compagnia come parte dell'intestazione. Come autore della classe si pu\`{o} voler dare all'utente la possibilit\`{a} di usare entrambe le interfacce all'interno delle lettere (nel caso in cui debbano includere ulteriori immagini nel corpo della lettera). In questo caso la classe deve caricare il pacchetto \package{graphics}, e non il \package{graphicx}, in quanto altrimenti si obbligherebbe ogni utente della classe ad usare l'interfaccia di \package{keyval}. Il logo deve essere incluso tramite |\includegraphics| \emph{senza} argomenti opzionali (se la dimensione corretta \`{e} nel file) o con \emph{tutti e due} gli argomenti opzionali. Non si deve usare la forma con \emph{un solo} argomento opzionale dal momento che il significato di quest'argomento cambierebbe (e genererebbe errori) se l'utente caricasse il pacchetto \package{graphicx} insieme a questa classe di esempio. \section{Gli altri pacchetti del gruppo `graphics'} \subsection{\package{epsfig}} Questo \`{e} un piccolo pacchetto ed \`{e} essenzialmente una serie di ridefinizioni costruite sul pacchetto \package{graphicx}, in modo da definire un comando |\psfig| che ha sintassi\\ |\psfig{file=xxx,...}| invece di |\includegraphics[...]{xxx}|.\\ Ha anche altri comandi per renderlo leggermente pi\`{u} compatibile con il vecchio stile \LaTeX~2.09 che aveva lo stesso nome. \subsection{\package{trig}} Il pacchetto trig non \`{e} concepito per essere usato direttamente nei documenti. Calcola le funzioni trigonometriche seno, coseno e tangente. Queste sono usate per calcolare lo spazio usato dai riquadri che hanno subito una rotazione. Questo pacchetto \`{e} usato anche dal programma |fontinst|, che converte i file PostScript in una forma usabile da \TeX. Oltre ad essere usate come un pacchetto \LaTeX, le macro possono essere estratte tramite \package{docstrip} con le opzioni \texttt{plain,package}. In questo caso le macro possono essere usate direttamente come parte di un altro file di macro (funzionano con qualsiasi formato basato sul plain \TeX\ndt{Con ``plain \TeX'' si intende il \TeX{} senza macro aggiuntive. \LaTeX, Con\TeX{}t, PDF\TeX, etc. \emph{non} sono plain \TeX.}). \subsection{\package{keyval}} Il pacchetto \package{keyval} \`{e} concepito per essere usato da altri pacchetti. Fornisce un metodo generico per impostare `chiavi' come quelle usate dal pacchetto \package{graphicx}, e per dividere le liste, separate da virgole, di coppie \m{chiave}~=~\m{valore}. Come il pacchetto \package{trig}, queste macro possono essere estratte e usate come parte di un'altro file di macro, basato sul plain \TeX, oppure essere usate come normale pacchetto \LaTeX. Di \emph{default} una chiave non dichiarata genera un errore, ma se viene usata l'opzione \texttt{unknownkeysallowed}, allora le chiavi sconosciute verranno silenziosamente ignorate (lasciando un messaggio nel file |log|). Questa opzione \`{e} accettata anche dal pacchetto \package{graphicx}. \subsection{\package{pstcol}} \package{PSTricks}, di Timothy Van Zandt, \`{e} un pacchetto di immensa potenza che implementa un'interfaccia veramente molto completa tra PostScript e \TeX. Sfortunatamente, il supporto per il colore di \package{PSTricks} \`{e} lievemente incompatibile con il meccanismo dei colori definito nel pacchetto \package{color}. Il pacchetto \package{pstcol} \`{e} un pacchetto (temporaneo, si spera) che modifica un numero molto piccolo di funzioni interne a \package{PSTricks}, in modo da rimuovere questa incompatibilit\`{a}. Se \package{PSTricks} viene caricato tramite questo pacchetto, si possono usare tutti i colori definiti dai comandi del pacchetto \package{color} all'interno dei comandi \package{PSTricks} e viceversa. \subsection{\package{lscape}} Il pacchetto \package{lscape} richiede e accetta le stesse opzioni del pacchetto \package{graphics}. Definisce un ambiente |landscape| all'interno del quale il corpo della pagina \`{e} ruotato di 90 gradi. Le intestazioni e i pi\`e di pagina rimangono invariati, mantenendo il loro normale posizionamento. \end{document}