Pagina 1 di 1

LaTex: Testo tra una serie di immagini

Inviato: martedì 19 agosto 2008, 14:20
da walrus
Ciao a tutti
ho inserito nel mio documento Latex una serie di circa 10 immagini consecutive usando ripetutamente questo codice:

Codice: Seleziona tutto

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22.eps}
\caption{Water Depth Raster Map generated by flooding2 with 8 neighbors for each cell (input: 20cubic meters per cell).}
\label{Water Depth Raster Map generated by flooding2 with 8 neighbors for each cell (input: 20cubic meters per cell).}
\end{center}
\end{figure}
tra un'immagine e un'altra io vorrei inserirci del testo, ma Latex me lo inserisce prima della prima immagine, e non dove io vorrei. Dove sta il problema?

Re: LaTex: Testo tra una serie di immagini

Inviato: martedì 19 agosto 2008, 17:11
da max
Ciao walrus.
walrus ha scritto: ho inserito nel mio documento Latex una serie di circa 10 immagini consecutive usando ripetutamente questo codice:
[...]
tra un'immagine e un'altra io vorrei inserirci del testo, ma Latex me lo inserisce prima della prima immagine, e non dove io vorrei. Dove sta il problema?
Il problema sta nel fatto che gli ambienti figure e table sono considerati da LaTeX ambienti mobili, e pertanto è il sistema stesso a decidere dove posizionarli, non tu, anche se cerchi di specificare delle opzioni di posizionamento.

Di conseguenza, se desideri posizionare a mano i tuoi oggetti, non devi usare questi ambienti.

Una semplice soluzione per questo problema è quella di usare l'ambiente center e basta, ammesso che tu voglia che le immagini risultino centrate:

Codice: Seleziona tutto

Testo prima delle figure
\begin{center}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22.eps}
\end{center}
Testo in mezzo alle figure
\begin{center}
\includegraphics[width=13.7cm, height=8.2cm]{Figure23.eps}
\end{center}
Testo dopo le figure
Se vuoi, puoi vedere il tutto anche in modo più astratto; nel preambolo puoi definire un ambiente apposito per le immagini:

Codice: Seleziona tutto

\newenvironment{immagine}{
 \begin{center}
}{
 \end{center}
}
Questo ambiente può essere richiamato nel corpo nel modo seguente:

Codice: Seleziona tutto

Testo prima delle figure
\begin{immagine}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22.eps}
\end{immagine}
Testo in mezzo alle figure
\begin{immagine}
\includegraphics[width=13.7cm, height=8.2cm]{Figure23.eps}
\end{immagine}
Testo dopo le figure
Se desideri che anche all'interno di questo ambiente si possa fare riferimento alle immagini, nell'indice delle figure e nel corpo del documento, carica il pacchetto caption nel preambolo:

Codice: Seleziona tutto

\usepackage{caption}
In questo modo puoi usare il comando \captionof nel corpo:

Codice: Seleziona tutto

\begin{immagine}
\captionof{figure}[Testo corto]{Testo lungo}\label{fig:sigla}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22.eps}
\end{immagine}
C'è purtroppo un effetto collaterale: se non usi gli ambienti mobili figure e table ma gestisci la situazione a mano, come ti ho fatto vedere io, c'è il rischio che se piazzi l'immagine verso la fine della pagina, la didascalia si trovi in una pagina e la figura in un'altra. Per evitare questo, l'autore del pacchetto caption consiglia di inserire il comando \captionof all'interno di un comando \parbox o di un ambiente minipage. In questo modo, la situazione diventa però più complicata da gestire. Ecco perché sarebbe meglio fare affidamento sugli ambienti mobili, anche se talvolta questo significa che le figure e le tabelle non vanno a finire proprio dove vorremmo noi...

Alcune note sul codice che hai suggerito tu:

Codice: Seleziona tutto

\begin{figure}[htbp]
\begin{center}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22.eps}
\caption{Water Depth Raster Map generated by flooding2 with 8 neighbors for each cell (input: 20cubic meters per cell).}
\label{Water Depth Raster Map generated by flooding2 with 8 neighbors for each cell (input: 20cubic meters per cell).}
\end{center}
\end{figure}
  • l'ambiente center dentro a figure o a table inserisce dello spazio extra sopra e sotto alla figura, spesso non voluto; se desideri solamente che la figura venga centrata orizzontalmente, puoi usare il comando \centering;
  • al giorno d'oggi si tende ad utilizzare sempre di meno il formato EPS e l'approccio di composizione che coinvolge LaTeX, Dvips e Ghostscript. È più comune invece usare pdfLaTeX per comporre, e passare quindi dal sorgente LaTeX direttamente al formato PDF. In questo caso, le immagini da includere nel documento vanno salvate in formato PDF se sono vettoriali, e nel formato JPG o PNG se sono raster. In quest'ultimo caso, i file grafici pesano molto di meno rispetto al formato EPS. Inoltre non è necessario specificare l'estensione dei file. L'unica ragione per continuare ad usare il vecchio approccio di composizione è la dipendenza da certi pacchetti, come psfrag e/o pstricks. Quindi vedi tu se questo è il tuo caso;
  • forse è meglio mettere la didascalia prima dell'immagine e non dopo, così quando si clicca sull'indice e si viene portati alla figura, si vede la descrizione sintetica fornita dalla didascalia e subito sotto l'immagine vera e propria;
  • se usi un indice per le figure, la didascalia che fornisci tu è un po' troppo lunga per comparirvi; meglio usare la forma \capion[Testo breve]{Testo molto molto più lungo}, così la corrispondente voce dell'indice sarà più leggibile;
  • anziché chiamare i file con nomi del tipo Figure22, non è meglio dare dei nomi che rispecchino il loro contenuto (es. waterdepth)? Questo, tra l'altro, perché se hai duecento immagini e in posizione cinquanta ti rendi conto che ne devi inserire ancora una, che cosa fai, ti metti a cambiare il nome di ciascuna (anche se forse questa cosa la potresti gestire con uno script...)?
  • l'etichetta per la didascalia è troppo lunga; di norma si usa un suffisso di pochi caratteri che dovrebbe codificare il tipo di oggetto che si desidera rappresentare (es. cha per i capitoli, sec per le sezioni, tab per le tabelle, fig per le immagini ed eq per le equazioni) seguito da un carattere di due punti e da una stringa sintetica (es. depth).
Se desideri usare il codice per gli ambienti mobili, ti consiglio un possibile miglioramento del tuo codice:

Codice: Seleziona tutto

\begin{figure}[htbp]
\centering
\caption[Water Depth Raster Map]{Water Depth Raster Map generated by flooding2 with 8 neighbors for each cell (input: 20cubic meters per cell).}
\label{fig:depth}
\includegraphics[width=13.7cm, height=8.2cm]{Figure22}
\end{figure}
Ciao e a presto!

Re: LaTex: Testo tra una serie di immagini

Inviato: martedì 26 agosto 2008, 15:30
da setun2
Grazie max! ho sfruttato anch'io le tue spiegazioni. Ti faccio i complimenti per la completezza della risposta: in genere c'è chi ti posta un link e ciao  con due parole in croce. :D

Re: LaTex: Testo tra una serie di immagini

Inviato: martedì 26 agosto 2008, 18:07
da jack_71
La spiegazione è perfetta. Mi permetto solo di segnalarti questa ottima guida in italiano scritta da un membro del forum di guit (a cui se usi latex ti conviene registrarti): http://www.lorenzopantieri.net/LaTeX_files/ArteLaTeX.pdf

Re: LaTex: Testo tra una serie di immagini

Inviato: mercoledì 27 agosto 2008, 9:45
da setun2
una bella guida tutta in italiano! grazie jack_71. Io in verità baro un pò: uso lyx. Ho iniziato con questo programma perchè dovevo scrivere una tesi in fretta e non avevo il tempo di far seriamente pratica con i costrutti di latex. Cmq non può fare tutto e spesso devo anche qui inserire parti di codice tex per ottenere risultati più personalizzati: guide in italiano son sempre le benvenute quindi.