%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Contents: Specialities of the LaTeX system % Translated by: Giacomo Delre % $Id: spec.tex,v 1.10 2000/05/16 19:10:07 guild Exp $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Specialit\`a} \begin{intro} Nel preparare documenti di una certa dimensione, \LaTeX{} fornisce un valido aiuto in virt\`u di alcune sue speciali caratteristiche quali la possibilit\`a di creare l'indice analitico, la gestione dei riferimenti bibliografici, ed altro ancora. Una pi\`u completa descrizione delle particolarit\`a e delle potenzialit\`a di \LaTeX{} la si pu\`o trovare nel {\normalfont\manual{}} e in {\normalfont \companion}. \end{intro} \section{Inserimento di grafici EPS} \LaTeX{}, per mezzo degli ambienti \texttt{figure} e \texttt{table}, mette a disposizione alcune agevolazioni essenziali per gestire oggetti mobili come le immagini o i disegni. Vi sono anche varie possibilit\`a per creare dei veri \wi{grafici} con \LaTeX{} puro oppure con un pacchetto aggiuntivo di \LaTeX{}. Sfortunatamente, la maggior parte degli utenti le considera del tutto incomprensibili. Per questo motivo, questa possibilit\`a non sar\`a pi\`u considerata per il resto del manuale. Per ulteriori informazioni sull'argomento si possono consultare \companion{} e il \manual{}. Un metodo di gran lunga pi\`u semplice per inserire dei grafici in un documento consiste nel prepararli attraverso un \emph{software} specifico\footnote{Ad esempio: XFig, CorelDraw!, Freehand, Gnuplot,\dots} e di includere il grafico ottenuto nel documento. Anche in questo caso, i pacchetti di \LaTeX{} offrono molte soluzioni al riguardo. In questa introduzione verr\`a unicamente discusso l'utilizzo di grafici \wi{Encapsulated PostScript} (EPS) perch\'e veramente semplice ed ampiamente diffuso. Al fine di utilizzare immagini in formato EPS \`e necessario possedere una stampante \wi{PostScript}\footnote{Un'altra possibilit\`a per gestire il formato PostScript consiste nell'utilizzare il programma \textsc{\wi{GhostScript}} disponibile presso il sito \url{CTAN:/tex-archive/support/ghostscript}. Gli utenti \emph{Windows} potrebbero considerare, per lo stesso scopo, il programma \textsc{GSview}}. Un buon insieme di comandi per inserire i grafici \`e fornito dal pacchetto \pai{graphicx} di D.~P.~Carlisle; fa parte di una intera famiglia di estensioni nota come gruppo dei \emph{pacchetti grafici} (``\emph{graphics}'' \emph{bundle})\footnote{\url{CTAN:/tex-archive/macros/latex/packages/graphics}}. In un sistema dotato di una stampante PostScript e avente il pacchetto \textsf{graphicx} installato, la sequenza di istruzioni per includere un'immagine in un documento \`e la seguente: \begin{enumerate} \item Dal programma grafico utilizzato, si salvi l'immagine in formato EPS\footnote{Se il programma grafico non prevede il formato EPS si pu\`o provare ad installare un \emph{driver} per stampanti PostScript (ad esempio, per le LaserWriter della Apple) e quindi stampare su \emph{file} utilizzando questo \emph{driver}. Con una buona dose di fortuna, questo file sar\`a in formato EPS. Si osservi che un file EPS non deve contenere pi\`u di una pagina. Alcuni \emph{driver} per stampanti possono essere esplicitamente configurati per produrre il formato EPS.}. \item Si inserisca, nel preambolo del file sorgente, il comando per caricare il pacchetto \textsf{graphicx} \begin{command} \verb|\usepackage[|\emph{driver}\verb|]{graphicx}| \end{command} dove \emph{driver} \`e il proprio programma di conversione ``da dvi in PostScript''. Quello di gran lunga pi\`u diffuso \`e \texttt{dvips}. Il nome del \emph{driver} \`e necessario in quanto non esiste in \TeX{} un metodo standard per includere i grafici. Conoscendo il nome del \emph{driver}, il pacchetto \textsf{graphicx} \`e in grado di scegliere il sistema corretto per inserire l'informazione sui grafici nel file~\texttt{.dvi} affinch\'e la stampante sia in grado di riconoscerla e possa inglobare, in maniera corretta, il file \texttt{.eps}. \item Si utilizzi il comando \begin{command} \ci{includegraphics}\verb|[|\emph{opzione}=\emph{valore},\dots\verb|]{|\emph{file}\verb|}| \end{command} per inserire il \emph{file} nel documento. Il parametro facoltativo permette l'inserimento di una lista, separata da virgole, di \emph{opzioni} con relativi \emph{valori}. Le \emph{opzioni} possono essere usate per modificare la larghezza, l'altezza e l'orientamento del grafico incluso. La tabella~\ref{keyvals} elenca le pi\`u importanti opzioni. \end{enumerate} \begin{table}[htb] \caption{Opzioni per il pacchetto \textsf{graphicx}.} \label{keyvals} \begin{lined}{9.8cm} \begin{tabular}{@{}ll} \texttt{width}& ridimensiona il grafico alla larghezza specificata\\ \texttt{height}& ridimensiona il grafico all'altezza specificata\\ \texttt{angle}& ruota il grafico in senso orario\\ \texttt{scale}& riassegna le dimensioni del grafico\\ \end{tabular} \bigskip \end{lined} \end{table} L'esempio che segue dovrebbe rendere pi\`u chiaro il procedimento: \begin{code} \begin{verbatim} \begin{figure} \begin{center} \includegraphics[angle=90, width=0.5\textwidth]{test} \end{center} \end{figure} \end{verbatim} \end{code} In questo modo viene incluso il grafico contenuto nel file \texttt{test.eps}. Il grafico viene \emph{prima} ruotato di 90 gradi e \emph{poi} ne viene variata la larghezza fino a raggiungere la met\`a della larghezza di un normale paragrafo. Il rapporto di scala resta 1,0 dal momento che non viene specificata alcuna altezza particolare. La larghezza e l'altezza possono essere assegnate anche in dimensioni assolute. Per maggiori informazioni, si consulti la tabella~\ref{units} di pagina~\pageref{units}. Se si desidera approfondire l'argomento, sar\`a utile leggere \cite{graphics} e \cite{eps}. \section{La bibliografia} Per realizzare una \wi{bibliografia} si ricorre all'ambiente \ei{thebibliography}. Ciascuna voce viene inserita con il comando \begin{command} \ci{bibitem}\verb|{|\emph{nome-simbolico}\verb|}| \end{command} Il \emph{nome-simbolico} \`e poi utilizzato per indicare il libro, l'articolo o la pubblicazione all'interno del documento mediante il comando \verb|\cite|. \begin{command} \ci{cite}\verb|{|\emph{nome-simbolico}\verb|}| \end{command} La numerazione dei riferimenti bibliografici \`e generata automaticamente. Il parametro che segue il comando \verb|\begin{thebibliography}| assegna l'ampiezza massima di questa numerazione. Nel seguente esempio, \verb|{99}| informa \LaTeX{} di aspettarsi che non vi sar\`a alcun riferimento bibliografico con un numero d'ordine superiore a 99. \begin{example} Partl~\cite{pa} ha suggerito che \dots \begin{thebibliography}{99} \bibitem{pa} H.~Partl: \emph{German \TeX}, TUGboat Vol.~9, No.~1 ('88) \end{thebibliography} \end{example} \chaptermark{Specialit\`a} % e` necessario per rimediare al danno % introdotto dall'esempio bibliografico. \thispagestyle{fancyplain} Per progetti pi\`u ambiziosi si potrebbe aver bisogno di utilizzare il programma Bib\TeX{}\@. Bib\TeX{} \`e presente nella maggior parte delle distribuzioni \TeX. Consente di gestire un database di riferimenti bibliografici e di estrarne quelli relativi alle citazioni presenti nel documento. L'aspetto visibile delle bibliografie generate da Bib\TeX{} si fonda sul concetto dei fogli di stile per mezzo dei quali \`e possibile creare dei riferimenti bibliografici a partire da una vasta gamma di modelli prestabiliti. \section{L'indice analitico} \label{sec:indexing} L'indice analitico costituisce, in molti libri, una caratteristica di grande utilit\`a. Con \LaTeX{} e il programma di supporto \texttt{makeindex}\footnote{Su sistemi che non permettono l'utilizzo, per i file, di nomi pi\`u lunghi degli 8~caratteri, il nome del programma potrebbe essere \texttt{makeidx}.}, un indice analitico viene generato in modo veramente semplice. In questa introduzione verranno illustrati solo i comandi essenziali per generare l'indice analitico. Per un'analisi pi\`u approfondita, si consulti \companion. \index{makeindex programma} \index{makeidx pacchetto} Per abilitare la composizione dell'indice analitico da parte di \LaTeX{}, si deve richiamare nel preambolo il pacchetto \pai{makeidx} per mezzo del comando: \begin{command} \verb|\usepackage{makeidx}| \end{command} \noindent mentre i comandi relativi alla creazione dell'indice devono essere attivati dal comando \begin{command} \ci{makeindex} \end{command} \noindent inserito sempre nel preambolo del file sorgente. Il contenuto dell'indice analitico viene specificato attraverso il comando \begin{command} \ci{index}\verb|{|\emph{argomento}\verb|}| \end{command} \noindent dove \emph{argomento} indica la voce dell'indice analitico; tale comando va inserito nel punto del testo dove si desidera che punti la voce presente nell'indice analitico. La tabella~\ref{index} illustra, per mezzo di alcuni esempi, la sintassi del parametro \emph{argomento}. \begin{table}[!tp] \caption{Esempi di voci dell'indice analitico.} \label{index} \begin{center} \begin{tabular}{@{}lll@{}} \textbf{Esempio} &\textbf{Voce} &\textbf{Commento}\\\hline \rule{0pt}{1.05em}\verb|\index{hello}| &hello, 1 &Voce primaria\\ \verb|\index{hello!Peter}| &\hspace*{2ex}Peter, 3 &Voce secondaria sotto `hello'\\ \verb|\index{Sam@\textsl{Sam}}| &\textsl{Sam}, 2& Voce con forma specificata\\ \verb|\index{Lin@\textbf{Lin}}| &\textbf{Lin}, 7& Come sopra\\ \verb.\index{Jenny|textbf}. &Jenny, \textbf{3}& Pagina con forma specificata\\ \verb.\index{Joe|textit}. &Joe, \textit{5}& Come sopra \end{tabular} \end{center} \end{table} Quando il programma \LaTeX{} viene eseguito sul file sorgente, ogni comando \verb|\index| scrive un'opportuna voce insieme al numero di pagina corrente in un file speciale che ha il medesimo nome del file sorgente \LaTeX{}, ma estensione diversa (\verb|.idx|). Questo file \texttt{.idx} viene poi elaborato dal programma \texttt{makeindex}. \begin{command} \texttt{makeindex} \emph{nome-del-file} \end{command} Il programma \texttt{makeindex} genera un indice ordinato in un file avente ancora lo stesso nome, ma questa volta estensione \texttt{.ind}. Se a questo punto si compila ancora una volta il sorgente \LaTeX{}, tale indice analitico ordinato verr\`a incluso nel documento nel punto dove \LaTeX{} trova il comando \begin{command} \ci{printindex} \end{command} Il pacchetto \pai{showidx} distribuito con \LaTeXe{} stampa le voci dell'indice analitico nel margine sinistro della pagina. Ci\`o risulta essere di grande utilit\`a in fase di correzione di bozze e controllo dell'indice analitico. \section{Intestazioni eleganti} \label{sec:fancy} Il pacchetto \pai{fancyhdr}\footnote{Presso il \url{CTAN:/tex-archive/macros/latex/contrib/supported/fancyhdr}.}, scritto da Piet van Oostrum, fornisce pochi e semplici comandi attraverso i quali \`e possibile personalizzare l'intestazione e il pi\`e di pagina di un documento. Un possibile esempio di utilizzo di questo pacchetto lo si ha osservando la parte in alto di questa pagina. \begin{figure}[!htbp] \begin{lined}{\textwidth} \begin{verbatim} \documentclass{book} \usepackage{fancyhdr} \pagestyle{fancy} % i comandi seguenti impediscono la scrittura in maiuscolo % dei nomi dei capitoli e dei paragrafi nelle intestazioni \renewcommand{\chaptermark}[1]{\markboth{#1}{}} \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} \fancyhf{} % rimuove l'attuale contenuto dell'intestazione % e del pi\`e di pagina \fancyhead[LE,RO]{\bfseries\thepage} \fancyhead[LO]{\bfseries\rightmark} \fancyhead[RE]{\bfseries\leftmark} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0pt} \addtolength{\headheight}{0.5pt} % riserva spazio per la linea \fancypagestyle{plain}{% \fancyhead{} % ignora, nello stile plain, le intestazioni \renewcommand{\headrulewidth}{0pt} % e la linea } \end{verbatim} \end{lined} \caption{Esempio di utilizzo di \pai{fancyhdr}.} \label{fancyhdr} \end{figure} La reale difficolt\`a nel personalizzare le intestazioni e i pi\`e di pagina consiste nel dovervi inserire cose come i nomi della sezione e del capitolo corrente. \LaTeX{} la risolve con un approccio a due tappe. Nella definizione dell'intestazione e del pi\`e di pagina si adoperano i comandi \ci{rightmark} e \ci{leftmark} per indicare l'intestazione del capitolo e, rispettivamente, della sezione in corso. I valori di questi due comandi vengono aggiornati ogni volta che viene elaborato un comando di inizio capitolo o sezione. Al fine di garantire la massima flessibilit\`a, i comandi \verb|\chapter| e soci non vanno a modificare direttamente \ci{rightmark} e \ci{leftmark}, bens\`\i\ richiamano un ulteriore comando ossia \ci{chaptermark}, \ci{sectionmark} oppure \ci{subsectionmark} che \`e il vero responsabile della nuova definizione di \ci{rightmark} e \ci{leftmark}. Cos\`\i\ se si desidera cambiare l'aspetto del nome del capitolo nell'intestazione si deve semplicemente ``riassegnare'' il comando \ci{chaptermark}. \cih{sectionmark}\cih{subsectionmark} La figura~\ref{fancyhdr} illustra un esempio di utilizzo del pacchetto \pai{fancyhdr} in base al quale si realizza un'intestazione simile a quella di questo libretto. Ad ogni modo conviene procurarsi la documentazione relativa al pacchetto dall'indirizzo richiamato nella nota a pi\`e di pagina. \section{Il pacchetto Verbatim} In precedenza \`e stato introdotto, in questo libro, l'\emph{ambiente} \ei{verbatim}. In questa sezione studieremo il \emph{pacchetto} \pai{verbatim}. Il pacchetto \pai{verbatim} \`e essenzialmente una riscrittura dell'ambiente \ei{verbatim} al fine di superare alcuni dei limiti dell'ambiente \ei{verbatim} originale. Va da s\'e che non vi \`e nulla di spettacolare, per\`o con la creazione del pacchetto \pai{verbatim} sono state inserite nuove funzionalit\`a ed \`e per questa ragione che se ne fa menzione qui. Il pacchetto \pai{verbatim} mette a disposizione il comando \begin{command} \ci{verbatiminput}\verb|{|\emph{nome-del-file}\verb|}| \end{command} \noindent che permette di inserire del testo ASCII grezzo in un documento come se fosse all'interno di un ambiente \ei{verbatim}. Poich\'e il pacchetto \pai{verbatim} fa parte di quel gruppo di pacchetti noti come `\emph{tools}', lo si trova gi\`a installato sulla maggior parte dei sistemi. Per saperne di pi\`u su questo pacchetto si legga l'articolo~\cite{verbatim}. \section{La protezione dei comandi fragili} Il testo passato come argomento in comandi quali \ci{caption} o \ci{section} pu\`o comparire pi\`u di una volta all'interno di un documento (ad esempio nell'indice del libro cos\`\i\ come nel corpo del documento). Alcuni comandi falliscono se passati come argomento di comandi tipo \ci{section} e, pertanto, si dicono \wi{comandi fragili}. Sono fragili, ad esempio, comandi come \ci{footnote} oppure \ci{phantom}. Quello di cui, questi comandi fragili, hanno bisogno per funzionare \`e la protezione (non \`e vero anche per tutti noi?). \`E possibile proteggerli facendoli precedere dal comando \ci{protect}. \ci{protect} fa riferimento al solo comando che segue subito a destra ma non ai suoi argomenti. Nella maggior parte dei casi un superfluo \ci{protect} non far\`a danni. \begin{code} \verb|\section{Io sono premuroso|\\ \verb| \protect\footnote{e proteggo le mie note}}| \end{code} %%% Local Variables: %%% mode: latex %%% TeX-master: "lshort2e" %%% End: