Ciao,
ho elaborato il seguente codice che inserisce un immagine con il seguente criterio: se una dimensione (larghezza od altezza) supera una certa percentuale dello spazio disponibile (80% larghezza testo, 50% altezza testo), inserisce l’immagine adattandola a quel limite altrimenti inserisce l’immagine nelle sue dimensioni naturali.Il comando si chiama \insertimage e vuole come argomento obbligatorio il nome del file immagine da inserire, nel formato compatibile con il compilatore utilizzato (pdf, png, jpg per pdflatex e eps per latex).
In alcune situazioni può essere utile, se non altro come esempio di utilizzo di condizionali e registri dimensionali TeX (e non LaTeX).
Ecco il codice:
`
\documentclass{minimal}\newdimen\x
\newdimen\y\newbox\imgbox
\newcommand{\insertimage}[1]{%
\setbox\imgbox=\hbox{\includegraphics{#1}}%
\x=\wd\imgbox
\y=\ht\imgbox
\ifdim\x<\y \ifdim\y>0.5\textheight
\includegraphics[height=0.5\textheight]{#1}
\else
\includegraphics{#1}
\fi
\else
\ifdim\x>0.8\columnwidth
\includegraphics[width=0.8\columnwidth]{#1}
\else
\includegraphics{#1}
\fi
\fi
}
\begin{document}
\begin{figure}
\centering
\insertimage{filename}
\caption{Figure description}
\end{figure}
\end{document}
`A voi i commenti. Grazie!
Un miglioramento potrebbe essere quello di racchiudere in un gruppo la prima definizione della scatola così da liberarne la memoria una volta memorizzate nelle variabili \x ed \y le dimensioni. Si può fare?Tutto il codice compreso un esempio, è spiegato nella guida alla programmazione di Enrico (scaricabile dal suo sito).
Bye
`\newcommand{\insertimage}[1]{%
\sbox8{\includegraphics{#1}}%
\ifdim\wd8<\ht8
\ifdim\ht8>0.5\textheight
\includegraphics[height=0.5\textheight]{#1}
\else
\includegraphics{#1}
\fi
\else
\ifdim\wd8>0.8\columnwidth
\includegraphics[width=0.8\columnwidth]{#1}
\else
\includegraphics{#1}
\fi
\fi
}`
Non vedo perché usare tre registri. Probabilmente il codice si può ottimizzare con un paio di \expandafter, ma non ne vedo la necessità.
Ciao
Enrico