- Questo topic ha 24 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 17 anni, 12 mesi fa da
lorenzo.pantieri.
-
CreatoreTopic
-
1 Marzo 2008 alle 8:30 #22346::
Ciao a tutti. Finora, ho sempre inserito immagine e tabelle usando, quando necessario, in comando \textwidth con documenti normali, e \linewidth con documenti a due colonne.
`\includegraphics[width=\textwidth]{…}`
Leggoo pero’ sulla guida di Beccari:Vale la pena di ricordare che \linewidth coincide con la giustezza corrente
(piena pagina o colonna) salvo che all’interno di certi ambienti potrebbe
essere un poco inferiore; e quindi conveniente fare sempre riferimento a
\linewidth invece che a \textwidth o a \columnwidth.E’ vero che andrebbe sempre usato \linewidth? Non ho capito bene perche’… Qualcuno me lo spiegherebbe con altre parole?
Grazie mille,
L.
-
CreatoreTopic
-
AutoreRisposte
-
-
1 Marzo 2008 alle 10:51 #22347::
Faccio un esempio. Hai un documento a una colonna: in questo caso \textwidth e \columnwidth coincidono sempre, mentre linewidth dipende dall’ambiente in cui ti trovi.
Se ti trovi nel testo normale allora \linewidth è uguale agli altri, se invece di trovi dentro una lista o una scatola \linewidth è diverso dagli altri due. Esempio tipico è una minipage larga ad esempio .5\textwidth. Dentro la minipage \linewidth è pari a .5\textwidth mentre \textwidth e \columnwidth con cambiano.Se tu vuoi mettere una figura in corpo dentro una lista (che di solito ha dei margini rientrati rispetto al normale) è meglio usare \linewidth.
Detto questo, nel posizionare le immagini conviene sempre usare \linewidth.
Se usando wrapfig scrivi
`\begin{wrapfigure}{l}{0cm}
\includegraphics[width=\linewidth]{…}
\caption{dida}
\end{wrapfigure}`in questo caso \linewidth=\textwidth poiché con 0cm non hai specificato la larghezza della finestra e quindi il pacchetto riempie tutta la larghezza della pagina con la figura.
Se cambi 0cm con 5cm allora \linewidth=5cm e la figura è larga 5cm.
In definitiva \linewidth è la larghezza locale e variabile della linea, mentre gli altri due sono globali e immutati per tutto il documento a meno che non si usano paccchetti tipo multicol che modifica \columnwidth.
Ultimo esempio. Tabella con specificatore p{6cm} per una colonna. Dentro questa colonna \linewidth=6cm mentre \textwidth resta invariato.
Spero di essere stato chiaro.
Ciao
Andrea
-
1 Marzo 2008 alle 16:18 #22348
-
1 Marzo 2008 alle 21:16 #22349::
…nel posizionare le immagini conviene sempre usare \linewidth.
Concordo.
Se nessun altro ha obiezioni/osservazioni, \linewidth sia.
Ho un paio di obiezioni di tipo “filosofico”. Sarei molto cauto nello scrivere in una guida che per inserire figure in un ambiente di tipo lista si deve usare \linewidth: nell’ambiente figure si deve sempre usare \columnwidth (o \textwidth se si è sicuri che il documento non sarà mai compilato a due colonne). Certo, può essere necessario usare altrove il comando \includegraphics e in tal caso è possibile o addirittura necessario usare \linewidth per stabilire le dimensioni dell’oggetto grafico.
È comune l’equivoco che \includegraphics si possa usare solo dentro “figure”: poca chiarezza al riguardo può perpetuare l’equivoco. Inserire oggetti grafici è una cosa, inserire illustrazioni fuori testo è un’altra.
Dunque: dentro l’ambiente “figure” si usi \textwidth oppure \columnwidth (forse meglio questo); in un ambiente “figure*” si deve usare \textwidth, naturalmente. Negli altri casi meglio \linewidth, se è indispensabile regolare le dimensioni dell’oggetto grafico rispetto alla giustezza, come negli esempi di Andrea.
Ciao
Enrico
-
4 Marzo 2008 alle 16:35 #22350::
Sarei molto cauto nello scrivere in una guida che per inserire figure in un ambiente di tipo lista si deve usare \linewidth: nell’ambiente figure si deve sempre usare \columnwidth (o \textwidth se si è sicuri che il documento non sarà mai compilato a due colonne).
È comune l’equivoco che \includegraphics si possa usare solo dentro “figure”: poca chiarezza al riguardo può perpetuare l’equivoco. Inserire oggetti grafici è una cosa, inserire illustrazioni fuori testo è un’altra.
Si tratta di un equivoco che voglio senz’altro evitare. Allargando il discorso, nella guida distinguo tra figure (e tabelle) “in testo” e “fuori testo” (queste ultime si realizzano in LaTeX con gli oggetti mobili).
Personalmente, ritengo che di regola tabelle e figure andrebbero messe fuori testo (credo che anche Lapo la pensi cosi’!), ma certo esistono situazioni “specifiche” in cui e’ necessario servirsi di figure e tabelle in testo.
Grazie mille,
L.
-
4 Marzo 2008 alle 17:35 #22351
-
14 Marzo 2008 alle 13:07 #22352::
Riprendo questo topic perché sto cercando un bell’esempio, didatticamente convincente, di tabella (o figura) in testo. Insomma, un esempio in cui sia proprio opportuno usare una tabella (o una figura) in testo e non un oggetto mobile.Ricordo benissimo che Enrico dice che nel suo campo di studi a volte si serve di immagini (e tabelle) in testo.
Io però non ho mai usato strutture di quel tipo, ho sempre fatto flottare tutto e mi sono sempre trovato benissimo.
Il seguente esempio non mi convince per niente.
`La seguente figura
\begin{center}
\includegraphics[width=0.5\textwidth]{miro}
\end{center}
riproduce un quadro di Mirò.`
Non mi convince perché in questo caso credo sia meglio usare un oggetto mobile.Grazie mille,
L.
-
13 Settembre 2008 alle 9:56 #22353::
Ciao a tutti. Riprendo il topic perché mi sembra opportuno inserire un esempio per chiarirmi (spero) definitivamente la questione.
`\documentclass[twocolumn]{article}
\usepackage{lipsum,graphicx}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}\begin{document}
\lipsum[1]
\section{Lorem ipsum dolor}
\lipsum[2]\begin{figure}[t]
\centering
\includegraphics[width=\columnwidth]{Mani}
\caption{In questo esempio si possono usare sia \texttt{columnwidth}
sia \texttt{linewidth}: \texttt{textwidth} non va bene.}
\end{figure}\lipsum[1-2]
\begin{figure*}[t]
\centering
\includegraphics[width=\textwidth]{Mani}
\caption{In questo esempio bisogna usare \texttt{textwidth}:
né \texttt{columnwidth} né \texttt{linewidth} vanno bene.}
\end{figure*}\lipsum
Nel seguente esempio di figura “”in testo'' si possono usare sia
\texttt{columnwidth} sia \texttt{linewidth}: \texttt{textwidth}
non va bene.
\begin{center}
\includegraphics[width=\columnwidth]{Mani}
\end{center}\lipsum[2]
\begin{itemize}
\item Mane
\item Tekel
\item Nell'esempio seguente bisogna usare \texttt{linewidth}:
né \texttt{columnwidth} né \texttt{textwidth} vanno bene.
\item \includegraphics[width=\linewidth]{Mani}
\item Fares\end{itemize}\lipsum[3]
\section{Conclusioni}
In conclusione:
\begin{itemize}
\item per inserire una figura fuori testo in ambiente \texttt{figure} si possono usare indifferentemente \texttt{columnwidth} o \texttt{linewidth};
\item per inserire una figura fuori testo in ambiente \texttt{figure*} va usato \texttt{textwidth};
\item per inserire una figura in testo ci sono casi in cui si possono usare indifferentemente \texttt{columnwidth} o \texttt{linewidth}; in altri casi va usato \texttt{linewidth}.
\end{itemize}Si può anche dire che, in generale:
\begin{itemize}
\item per inserire una figura fuori testo in ambiente \texttt{figure*} va usato \texttt{textwidth};
\item in \emph{tutti} gli altri casi, è sufficiente usare \texttt{linewidth}, e si è a posto.
\end{itemize}Con le tabelle il discorso è analogo.
\end{document}`
Riporto le conclusioni. In generale:-
per inserire una figura fuori testo in ambiente figure si possono usare indifferentemente \columnwidth o \linewidth;
-
per inserire una figura fuori testo in ambiente figure* va usato \textwidth;
-
per inserire una figura in testo ci sono casi in cui si possono usare indifferentemente \columnwidth o \linewidth; in altri casi va usato \linewidth.
Si può anche dire che, in generale:
-
per inserire una figura fuori testo in ambiente figure* va usato \textwidth;
-
in tutti gli altri casi, è sufficiente usare \linewidth, e si è a posto.
Con le tabelle il discorso è analogo.
(Naturalmente, se si è sicuri che il proprio documento non verrà mai composto a due colonne, si possono usare indifferentemente \textwidth e \columnwidth, che per documenti ad una colonna coincidono. Ma il caso che sto trattando vuole essere il più generale possibile.)
Fatemi sapere se c’è qualcosa che non va.
Ciao,
L.
-
-
13 Settembre 2008 alle 10:50 #22354::
Esempio tipico è una minipage larga ad esempio .5\textwidth. Dentro la minipage \linewidth è pari a .5\textwidth mentre \textwidth e \columnwidth con cambiano.
Ho più di un dubbio sulla correttezza di questa affermazione. Vedi il primo esempio di pagina 59 di questa guida.
Si include un’immagine di larghezza \columnwidth… eppure, come è evidente, l’immagine è larga (meno di metà) della colonna del testo del documento. (Nel documento principale, ad una colonna, \columnwidth = \textwidth.) Mi pare si possa concludere che, in quell’esempio, la \columnwidth sia cambiata.
Ciao,
L.
-
13 Settembre 2008 alle 11:18 #22355::
Esempio tipico è una minipage larga ad esempio .5\textwidth. Dentro la minipage \linewidth è pari a .5\textwidth mentre \textwidth e \columnwidth con cambiano.
Ho più di un dubbio sulla correttezza di questa affermazione. Vedi il primo esempio di pagina 59 di questa guida.
Si include un’immagine di larghezza \columnwidth… eppure, come è evidente, l’immagine è larga (meno di metà) della colonna del testo del documento. (Nel documento principale, ad una colonna, \columnwidth = \textwidth.) Mi pare si possa concludere che, in quell’esempio, la \columnwidth sia cambiata.
Dentro una minipage, infatti, viene tutto cambiato: la minipage è trattata come se fosse una pagina di testo adeguata a una giustezza data dall’argomento di minipage.
`\documentclass[a4paper]{article}
\begin{document}
\showthe\textwidth
\showthe\columnwidth
\showthe\linewidth
\begin{minipage}{.5\textwidth}
\showthe\textwidth
\showthe\columnwidth
\showthe\linewidth
\end{minipage}
\end{document}`
Il risultato è
`This is pdfTeXk, Version 3.1415926-1.40.9 (Web2C 7.5.7) (format=latex 2008.9.5) 13 SEP 2008 13:33
entering extended mode
%&-line parsing enabled.
**colwd.tex
(./colwd.tex
LaTeX2e <2005/12/01>
Babeland hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, german-x-2008-06-18, ngerman-x-2008-06-18, ancientgreek, ibycus, ar
abic, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danish, dutc
h, esperanto, estonian, farsi, finnish, french, galician, german, ngerman, mono
greek, greek, hungarian, icelandic, indonesian, interlingua, irish, italian, la
tin, mongolian, mongolian2a, bokmal, nynorsk, polish, portuguese, romanian, rus
sian, sanskrit, serbian, slovak, slovenian, spanish, swedish, turkish, ukenglis
h, ukrainian, uppersorbian, welsh, loaded.
(/usr/local/texlive/2008/texmf-dist/tex/latex/base/article.cls
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
(/usr/local/texlive/2008/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
)
\c@part=\count79
\c@section=\count80
\c@subsection=\count81
\c@subsubsection=\count82
\c@paragraph=\count83
\c@subparagraph=\count84
\c@figure=\count85
\c@table=\count86
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
No file colwd.aux.
\openout1 = `colwd.aux'.LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 2.
LaTeX Font Info: … okay on input line 2.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 2.
LaTeX Font Info: … okay on input line 2.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 2.
LaTeX Font Info: … okay on input line 2.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 2.
LaTeX Font Info: … okay on input line 2.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 2.
LaTeX Font Info: … okay on input line 2.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 2.
LaTeX Font Info: … okay on input line 2.
> 345.0pt.
l.3 \showthe\textwidth?
> 345.0pt.
l.4 \showthe\columnwidth?
> 345.0pt.
l.5 \showthe\linewidth?
> 172.5pt.
l.7 \showthe\textwidth?
> 172.5pt.
l.8 \showthe\columnwidth?
> 172.5pt.
l.9 \showthe\linewidth?
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 10.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 10.
[1] (./colwd.aux) )
Here is how much of TeX's memory you used:
200 strings out of 493887
2144 string characters out of 1151123
48889 words of memory out of 3000000
3562 multiletter control sequences out of 10000+50000
3640 words of font info for 14 fonts, out of 3000000 for 5000
714 hyphenation exceptions out of 8191
23i,4n,18p,137b,107s stack positions out of 5000i,500n,10000p,200000b,50000sOutput written on colwd.dvi (1 page, 208 bytes).`
Ciao
Enrico
-
13 Settembre 2008 alle 11:40 #22356::
Dentro una minipage, infatti, viene tutto cambiato: la minipage è trattata come se fosse una pagina di testo adeguata a una giustezza data dall’argomento di minipage.
Chiarissimo!
E per il resto? Concordi con le conclusioni che ho cercato di riassumere nel mio intervento precedente?
Grazie mille,
L.
-
13 Settembre 2008 alle 13:42 #22357::
Dentro una minipage, infatti, viene tutto cambiato: la minipage è trattata come se fosse una pagina di testo adeguata a una giustezza data dall’argomento di minipage.
Chiarissimo!
E per il resto? Concordi con le conclusioni che ho cercato di riassumere nel mio intervento precedente?
Si può fare affidamento sul fatto che \textwidth rispecchia la larghezza corrente della gabbia (che cambia in una minipage). Analogamente, \columnwidth è la giustezza delle righe normali (non è uguale a \textwidth se si compone a più colonne), mentre \linewidth contiene la giustezza negli ambienti per le liste, dove va tenuto conto del margine sinistro e destro modificati rispetto alle righe normali.
Come detto un’altra volta, si ha una maggiore “indipendenza dal formato” se si misurano gli oggetti in orizzontale in termini di \columnwidth. Ma di solito si sa se un testo sarà composto a una o più colonne e quindi distinguere fra \textwidth o \columnwidth in un \includegraphics non è una faccenda così importante; va segnalato, questo sì, in modo che l’utente non sappia fare altro che grattarsi la testa di fronte a un problema.
Ciao
Enrico
-
13 Settembre 2008 alle 15:26 #22358::
Carissimi, Enrico ha ragione: non si tratta di una faccenda così importante. Tuttavia, credo finalmente di essere arrivato in fondo a questa storia. 🙂OldClaudio, infatti, mi ha fatto notare un errore nel ragionamento che avevo fatto: in una composizione a due colonne, infatti, \linewidth coincide con \textwidth, e quindi si può usare tranquillamente \linewidth anche in un ambiente figure*.
L’esempio che avevo proposto si modifica allora così:
`\documentclass[twocolumn]{article}
\usepackage{lipsum,graphicx}
\usepackage[applemac]{inputenc}
\usepackage[italian]{babel}\begin{document}
\lipsum[1]
\section{Lorem ipsum dolor}
\lipsum[2]\begin{figure}[t]
\centering
\includegraphics[width=\linewidth]{Mani}
\caption{In questo esempio si possono usare sia \texttt{columnwidth}
sia \texttt{linewidth}: \texttt{textwidth} non va bene.}
\end{figure}\lipsum[1-2]
\begin{figure*}[t]
\centering
\includegraphics[width=\linewidth]{Mani}
\caption{In questo esempio si possono usare sia \texttt{textwidth} sia \texttt{linewidth}: \texttt{columnwidth} non va bene.}
\end{figure*}\lipsum
Nel seguente esempio di figura “”in testo'' si possono usare sia
\texttt{columnwidth} sia \texttt{linewidth}: \texttt{textwidth}
non va bene.
\begin{center}
\includegraphics[width=\linewidth]{Mani}
\end{center}\lipsum[2]
\begin{itemize}
\item Mane
\item Tekel
\item Nell'esempio seguente bisogna usare \texttt{linewidth}:
né \texttt{columnwidth} né \texttt{textwidth} vanno bene.
\item \includegraphics[width=\linewidth]{Mani}
\item Fares\end{itemize}\lipsum[3]
\section{Conclusioni}
In conclusione:
\begin{itemize}
\item per inserire una figura fuori testo in ambiente \texttt{figure} si possono usare indifferentemente \texttt{columnwidth} o \texttt{linewidth};
\item per inserire una figura fuori testo in ambiente \texttt{figure*} si possono usare indifferentemente \texttt{textwidth} o \texttt{linewidth};
\item per inserire una figura in testo ci sono casi in cui si possono usare indifferentemente \texttt{columnwidth} o \texttt{linewidth}; in altri casi va usato \texttt{linewidth}.
\end{itemize}Si può anche dire che:
\begin{itemize}
\item in \emph{tutti} i casi è sufficiente usare \texttt{linewidth}, e si è a posto.
\end{itemize}Con le tabelle il discorso è analogo.
\end{document}
`Cambiano completamente le conclusioni: in tutti in casi, \linewidth va sempre bene. ❗
A questo punto (anche in omaggio al principio di semplicità), userò \linewidth per tutte le tabelle e figure (in testo e fuori testo) dei miei documenti, e lo consiglierò senz’altro nelle mie modeste guide…
Non ringrazierò mai abbastanza Enrico e Claudio…
A presto,
Lorenzo
-
13 Settembre 2008 alle 16:03 #22359::
Carissimi, Enrico ha ragione: non si tratta di una faccenda così importante. Tuttavia, credo finalmente di essere arrivato in fondo a questa storia. 🙂
OldClaudio, infatti, mi ha fatto notare un errore nel ragionamento che avevo fatto: in una composizione a due colonne, infatti, \linewidth coincide con \textwidth, e quindi si può usare tranquillamente \linewidth anche in un ambiente figure*.
C’è qualcosa che non va. In composizione a due colonne la classe article assegna il valore 452pt a \textwidth, mentre \columnwidth e \linewidth valgono 221pt. In un itemize di primo livello \linewidth scende a 201pt.
Solo negli ambienti figure* (e table*) \linewidth coincide con \textwidth, purché non si stia usando in quegli ambienti un ambiente per liste (che non è affatto vietato). Quindi direi che \linewidth non vada mai usato in connessione con \includegraphics all’interno di un ambiente figure o table, con asterisco o senza. In quelli con l’asterisco adoperi \textwidth, in quelli senza impieghi \columnwidth.
Certo, nelle rare situazioni in cui si usa un ambiente per liste in figure o table, la faccenda cambia. Ne hai mai viste? 🙂
Ciao
Enrico
-
13 Settembre 2008 alle 16:36 #22360::
C’è qualcosa che non va. In composizione a due colonne la classe article assegna il valore 452pt a \textwidth, mentre \columnwidth e \linewidth valgono 221pt. In un itemize di primo livello \linewidth scende a 201pt.
Solo negli ambienti figure* (e table*) \linewidth coincide con \textwidth, purché non si stia usando in quegli ambienti un ambiente per liste (che non è affatto vietato). Quindi direi che \linewidth non vada mai usato in connessione con \includegraphics all’interno di un ambiente figure o table, con asterisco o senza. In quelli con l’asterisco adoperi \textwidth, in quelli senza impieghi \columnwidth.
Certo, nelle rare situazioni in cui si usa un ambiente per liste in figure o table, la faccenda cambia. Ne hai mai viste? 🙂
Ciao
EnricoQuesta volta, Enrico, non ti seguo. Facciamo così:
-
per inserire una figura fuori testo in ambiente figure si possono usare indifferentemente \columnwidth o \linewidth;
-
per inserire una figura fuori testo in ambiente figure* si possono usare indifferentemente \textwidth o \linewidth;
-
per inserire una figura in testo ci sono casi in cui si possono usare indifferentemente \columnwidth o \linewidth; in altri casi va usato \linewidth.
Quale (o quali) di queste affermazioni è errata? Nel codice che ho inviato, ci sono diversi esempi di figure, fuori testo (inserite con ambiente figure o figure*) e in testo. In tutti i casi \linewidth funziona perfettamente (almeno, così mi pare!). Sbaglio? Naturalmente, non è obbligatorio usare sempre \linewidth, però se lo si usa il risultato è buono sempre!
Mi faresti un controesempio di una “cilecca” di \linewidth?
Per favore!
Ciao,
L.P.S. Non ho mai visto elenchi dentro un ambiente mobile, ma se il controesempio richiede quella situazione (rara, e credo anche sconsigliabile), ben venga comunque.
-
-
13 Settembre 2008 alle 17:48 #22361::
C’è qualcosa che non va. In composizione a due colonne la classe article assegna il valore 452pt a \textwidth, mentre \columnwidth e \linewidth valgono 221pt. In un itemize di primo livello \linewidth scende a 201pt.
Solo negli ambienti figure* (e table*) \linewidth coincide con \textwidth, purché non si stia usando in quegli ambienti un ambiente per liste (che non è affatto vietato). Quindi direi che \linewidth non vada mai usato in connessione con \includegraphics all’interno di un ambiente figure o table, con asterisco o senza. In quelli con l’asterisco adoperi \textwidth, in quelli senza impieghi \columnwidth.
Certo, nelle rare situazioni in cui si usa un ambiente per liste in figure o table, la faccenda cambia. Ne hai mai viste? 🙂
Ciao
EnricoQuesta volta, Enrico, non ti seguo. Facciamo così:
[ul]
[li]per inserire una figura fuori testo in ambiente figure si possono usare indifferentemente \columnwidth o \linewidth;
[li]per inserire una figura fuori testo in ambiente figure* si possono usare indifferentemente \textwidth o \linewidth;
[li]per inserire una figura in testo ci sono casi in cui si possono usare indifferentemente \columnwidth o \linewidth; in altri casi va usato \linewidth.
[/ul]
Quale (o quali) di queste affermazioni è errata? Nel codice che ho inviato, ci sono diversi esempi di figure, fuori testo (inserite con ambiente figure o figure*) e in testo. In tutti i casi \linewidth funziona perfettamente (almeno, così mi pare!). Sbaglio? Naturalmente, non è obbligatorio usare sempre \linewidth, però se lo si usa il risultato è buono sempre!Mi faresti un controesempio di una “cilecca” di \linewidth?
Per favore!
Ciao,
L.P.S. Non ho mai visto elenchi dentro un ambiente mobile, ma se il controesempio richiede quella situazione (rara, e credo anche sconsigliabile), ben venga comunque.
Il fatto che i tuoi esempi funzionino non è un buon motivo per usare un parametro di cui non puoi sapere a priori il valore. Lo scopo di \linewidth è di tenere a mente la giustezza delle righe di stampa in un ambiente per liste.
Vediamo un altro esempio: il fatto che con i font standard 1em equivalga a 2.323ex non autorizza a usare 2.323ex al posto di 1em. È un fatto accidentale che dipende dal font in uso.
Nell’ambiente figure* il valore di \linewidth è inizialmente uguale a \textwidth; non puoi sapere quanto sia dopo, per esempio se usi un ambiente per liste. Semplicemente \linewidth non c’entra nulla con la faccenda di cui ti stai occupando; quella volta che uno vorrà usare un enumerate per mettere più illustrazioni in un ambiente e si troverà in serio imbarazzo, che risponderai?
A mio parere l’unico modo sensato di procedere è di usare \columnwidth negli ambienti senza asterisco e \textwidth in quelli con asterisco. Chi scrive il documento sa quando è necessario uno o l’altro; non si dà il caso che un ambiente senza asterisco diventi con o viceversa, se non in fase di pesante revisione e allora non c’è problema a cambiare anche il parametro.
Ciao
Enrico
-
13 Settembre 2008 alle 17:59 #22362::
Il fatto che i tuoi esempi funzionino non è un buon motivo per usare un parametro di cui non puoi sapere a priori il valore. Lo scopo di \linewidth è di tenere a mente la giustezza delle righe di stampa in un ambiente per liste.
Vediamo un altro esempio: il fatto che con i font standard 1em equivalga a 2.323ex non autorizza a usare 2.323ex al posto di 1em. È un fatto accidentale che dipende dal font in uso.
Nell’ambiente figure* il valore di \linewidth è inizialmente uguale a \textwidth; non puoi sapere quanto sia dopo, per esempio se usi un ambiente per liste. Semplicemente \linewidth non c’entra nulla con la faccenda di cui ti stai occupando; quella volta che uno vorrà usare un enumerate per mettere più illustrazioni in un ambiente e si troverà in serio imbarazzo, che risponderai?
A mio parere l’unico modo sensato di procedere è di usare \columnwidth negli ambienti senza asterisco e \textwidth in quelli con asterisco. Chi scrive il documento sa quando è necessario uno o l’altro; non si dà il caso che un ambiente senza asterisco diventi con o viceversa, se non in fase di pesante revisione e allora non c’è problema a cambiare anche il parametro.
Capisco l’obiezione “metodologica”. Notevole. 🙄
Mi resta la curiosità del controesempio esplicito. Infatti, per esempio:
`\begin{figure}[tb]
\begin{enumerate}
\item \includegraphics[width=\linewidth]{Mani}
\item \includegraphics[width=\linewidth]{Mani}
\end{enumerate}
\caption{Che c'è che non va?}
\end{figure}
`non dà problemi (in un documento a una o più colonne).Anche
`\begin{figure*}[tb]
\begin{enumerate}
\item \includegraphics[width=\linewidth]{Mani}
\item \includegraphics[width=\linewidth]{Mani}
\end{enumerate}
\caption{Che c'è che non va?}
\end{figure*}
`è perfetto.Senza un controesempio che mostra una “cilecca” di \linewidth, mi manca un pezzetto…
Scusami per l’insistenza. 😳
Ciao,
L.
-
13 Settembre 2008 alle 19:01 #22363::
Il fatto che i tuoi esempi funzionino non è un buon motivo per usare un parametro di cui non puoi sapere a priori il valore. Lo scopo di \linewidth è di tenere a mente la giustezza delle righe di stampa in un ambiente per liste.
Vediamo un altro esempio: il fatto che con i font standard 1em equivalga a 2.323ex non autorizza a usare 2.323ex al posto di 1em. È un fatto accidentale che dipende dal font in uso.
Nell’ambiente figure* il valore di \linewidth è inizialmente uguale a \textwidth; non puoi sapere quanto sia dopo, per esempio se usi un ambiente per liste. Semplicemente \linewidth non c’entra nulla con la faccenda di cui ti stai occupando; quella volta che uno vorrà usare un enumerate per mettere più illustrazioni in un ambiente e si troverà in serio imbarazzo, che risponderai?
A mio parere l’unico modo sensato di procedere è di usare \columnwidth negli ambienti senza asterisco e \textwidth in quelli con asterisco. Chi scrive il documento sa quando è necessario uno o l’altro; non si dà il caso che un ambiente senza asterisco diventi con o viceversa, se non in fase di pesante revisione e allora non c’è problema a cambiare anche il parametro.
Capisco l’obiezione “metodologica”. Notevole. 🙄
Mi resta la curiosità del controesempio esplicito. Infatti, per esempio:
`\begin{figure}[tb]
\begin{enumerate}
\item \includegraphics[width=\linewidth]{Mani}
\item \includegraphics[width=\linewidth]{Mani}
\end{enumerate}
\caption{Che c'è che non va?}
\end{figure}
`non dà problemi (in un documento a una o più colonne).Anche
`\begin{figure*}[tb]
\begin{enumerate}
\item \includegraphics[width=\linewidth]{Mani}
\item \includegraphics[width=\linewidth]{Mani}
\end{enumerate}
\caption{Che c'è che non va?}
\end{figure*}
`è perfetto.Senza un controesempio che mostra una “cilecca” di \linewidth, mi manca un pezzetto…
Scusami per l’insistenza. 😳
Stai appunto usando \linewidth come va usato, perché sei dentro un enumerate. Solo là puoi essere sicuro che abbia il valore corretto. Il nucleo di LaTeX si assicura di impostare \linewidth a certi valori in determinate situazioni, niente vieta che una classe (per esempio memoir) adoperi questo parametro in modo diverso.
Ciao
Enrico
-
15 Settembre 2008 alle 5:43 #22364::
Stai appunto usando \linewidth come va usato, perché sei dentro un enumerate. Solo là puoi essere sicuro che abbia il valore corretto. Il nucleo di LaTeX si assicura di impostare \linewidth a certi valori in determinate situazioni, niente vieta che una classe (per esempio memoir) adoperi questo parametro in modo diverso.
Caro Enrico, in questi giorni ho meditato a lungo su questa faccenda (non essenziale, ne convengo), che mi interessa parecchio e che -a questo punto- vorrei risolvere nel più convincente dei modi.
Documentazione di memoir alla mano, ho cercato invano di costruire un controesempio che, ridefinendo in qualche modo \linewidth, mostri come si può avere un errore di impaginazione scrivendo
`\includegraphics[width=\linewidth]{…}`
in qualche contesto.Non ti andrebbe di fornirmene uno Tu? Cerco un controesempio esplicito, di quelli che cominciano con
`\documentclass`
e terminano con `\end{document}`
per intenderci! 😉Grazie e scusami per la proterva insistenza… 😳
Ciao,
Lorenzo
-
15 Settembre 2008 alle 8:37 #22365::
Stai appunto usando \linewidth come va usato, perché sei dentro un enumerate. Solo là puoi essere sicuro che abbia il valore corretto. Il nucleo di LaTeX si assicura di impostare \linewidth a certi valori in determinate situazioni, niente vieta che una classe (per esempio memoir) adoperi questo parametro in modo diverso.
Caro Enrico, in questi giorni ho meditato a lungo su questa faccenda (non essenziale, ne convengo), che mi interessa parecchio e che -a questo punto- vorrei risolvere nel più convincente dei modi.
Documentazione di memoir alla mano, ho cercato invano di costruire un controesempio che, ridefinendo in qualche modo \linewidth, mostri come si può avere un errore di impaginazione scrivendo
`\includegraphics[width=\linewidth]{…}`
in qualche contesto.Non ti andrebbe di fornirmene uno Tu? Cerco un controesempio esplicito, di quelli che cominciano con
`\documentclass`
e terminano con `\end{document}`
per intenderci! 😉Grazie e scusami per la proterva insistenza… 😳
Temo proprio che tu non stia capendo la mia obiezione, visto che insisti a chiedere un esempio di una cosa insensata. Ripeto per l’ultima volta: \linewidth è un parametro che va usato solo nel contesto di un ambiente per liste, dove viene aggiornato per contenere la giustezza.
Il suo valore non è prevedibile al di fuori di quei contesti; è vero che LaTeX, in genere, si occupa di assegnare certi valori a \linewidth, per esempio aprendo un ambiente figure*, ma su questo non si può fare conto per qualsiasi classe.
Ciao
Enrico
-
16 Settembre 2008 alle 5:58 #22366::
Temo proprio che tu non stia capendo la mia obiezione, visto che insisti a chiedere un esempio di una cosa insensata. Ripeto per l’ultima volta: \linewidth è un parametro che va usato solo nel contesto di un ambiente per liste, dove viene aggiornato per contenere la giustezza.
Il suo valore non è prevedibile al di fuori di quei contesti; è vero che LaTeX, in genere, si occupa di assegnare certi valori a \linewidth, per esempio aprendo un ambiente figure*, ma su questo non si può fare conto per qualsiasi classe.
Caro Enrico, mi rendo conto che in questo momento devo sembrarti un caso disperato di ottusità. 😳 Mi sono evidentemente spiegato male…
Ci riprovo nel seguente modo, che spero non trovi irriverente! Pierino, utente principiante di LaTeX appena iscritto al forum del GuIT, dice di aver trovato “un modo eccellente per inserire gli indirizzi Internet”. A tal fine, Pierino consiglia il comando \texttt. A sostegno della sua tesi, fornisce soddisfatto i seguenti esempi:
`\documentclass[12pt,a4paper]{article}
\usepackage[italian]{babel}
\begin{document}
Visita il sito del Gruppo: \texttt{http://www.guit.sssup.it/}.L'indirizzo è: \texttt{http://www.lorenzopantieri.net/}.
Nessun problema, come si può vedere, neppure se si volesse scrivere l'indirizzo \texttt{http://www.ctan.org}.
\end{document}`
Non è difficile rispondere a Pierino che la sua soluzione è sbagliata. Certo, nei casi particolari considerati, \texttt può anche andare, ma in generale quel comando non va bene.Pierino potrebbe non essere convinto di questa obiezione. In fin dei conti, la sua soluzione funziona in tutti i casi che ha proposto… Certo, potrebbe decidere di fidarsi comunque della nostra esperienza: se gli sconsigliamo \texttt, avremo le nostre buone ragioni… Ma magari, così, Pierino non è convinto al 100%.
Per convincere definitivamente Pierino del suo errore, è opportuno fornirgli un controesempio, che taglia la testa al toro e smonta la sua proposta. Per esempio:
`\documentclass[12pt,a4paper]{article}
\usepackage[italian]{babel}
\usepackage{url}
\begin{document}
Ecco invece un controesempio: come si vede, qui \texttt{http://www.guit.sssup.it/} fuoriesce dal margine, se non si usa il pacchetto \textsf{url}.Ecco invece un controesempio: come si vede, qui \url{http://www.guit.sssup.it/} fuoriesce dal margine, se non si usa il pacchetto \textsf{url}.
\end{document}`
Questo controesempio smonta l’insensata idea di usare \texttt per inserire gli indirizzi Web, e conferma l’opportunità di usare invece il comando \url fornito dall’omonimo pacchetto.Fine dell’analogia.
Ecco, io mi trovo nei panni di Pierino: ho scoperto che scrivendo
`\includegraphics[width=\linewidth]{…}`
le immagini vengono inserite correttamente in tutti i casi che ho provato (immagini fuori testo in ambiente figure e figure*, immagini in testo, all’interno di elenchi, …; in documenti composti su una o più colonne).Ma tu, sulla base della tua esperienza, mi dici che questa non è una buona prassi, che esistono (o possono esistere) casi in cui quel parametro potrebbe essere ridefinito e dare problemi.
Ecco, io vorrei, se possibile, toccare con mano uno solo di questi casi.
In ogni caso, anche in assenza di questo controesempio, mi fiderò senz’altro dei tuoi autorevoli consigli: se mi dici che quella non è una buona prassi (e l’hai ribadito con estrema chiarezza), è senz’altro così!
Enrico, ti ringrazio di cuore per la tua pazienza!
Ti saluto molto cordialmente,
Lorenzo
-
16 Settembre 2008 alle 9:13 #22367::
Ecco, io mi trovo nei panni di Pierino: ho scoperto che scrivendo
`\includegraphics[width=\linewidth]{…}`
le immagini vengono inserite correttamente in tutti i casi che ho provato (immagini fuori testo in ambiente figure e figure*, immagini in testo, all’interno di elenchi, …; in documenti composti su una o più colonne).Ma tu, sulla base della tua esperienza, mi dici che questa non è una buona prassi, che esistono (o possono esistere) casi in cui quel parametro potrebbe essere ridefinito e dare problemi.
Ecco, io vorrei, se possibile, toccare con mano uno solo di questi casi.
In ogni caso, anche in assenza di questo controesempio, mi fiderò senz’altro dei tuoi autorevoli consigli: se mi dici che quella non è una buona prassi (e l’hai ribadito con estrema chiarezza), è senz’altro così!
Enrico, ti ringrazio di cuore per la tua pazienza!
Avevo detto che la risposta precedente sarebbe stata l’ultima, ma preso da pietà nei tuoi confronti provo di nuovo a spiegarti. 😉
Un tale di nome Isaac scoprì una regola quasi magica che spiegava un sacco di cose e si mise a usare la sua regoletta con entusiasmo, insegnandola a tutti i suoi amici. Poi, molti anni dopo, un tale Albert, non fidandosi della regoletta di Isaac, ci riflettè su e venne fuori con una nuova regoletta che comprendeva casi a cui Isaac non aveva nemmeno pensato.
Non c’è alcuna legge che vieti l’uso di \linewidth nei casi che indichi, può anche darsi che durante la tua vita nessuno si troverà mai nella situazione di doversi grattare indeciso la capoccia perché non capisce come mai la sua bella illustrazione non sia al posto giusto. L’impiego di \linewidth in quelle situazioni è concettualmente sbagliato, e ti ho già spiegato il perché.
Supponiamo che uno creda che i tuoni siano rumorini prodotti dagli angioletti che hanno mangiato fagioli. È una faccenda che non ha alcuna conseguenza pratica e non penso che quel tale si troverà mai in una situazione in cui la conoscenza del vero motivo del tuono gli sia essenziale. Ma, a meno che non sia un bambino innocente, è probabile che qualcuno prima o poi gli spiegherà la dura verità.
LaTeX ha ben tre parametri per contenere le lunghezze “orizzontali” rilevanti per la composizione. Si deve usare quello giusto per il proprio scopo. In un ambiente figure o figure* l’uso del parametro \linewidth non ha senso, ce l’ha solo in un ambiente per liste, dove assume il valore adeguato.
Se vuoi insegnare una regola pratica che “funziona”, fallo pure, ma poi non lamentarti se qualcuno ti accusa di ingannare il discente. Il famoso Ferrauto (libro di testo mai abbastanza deprecato) contiene un buon numero di falsità matematiche; alcuni insegnanti lo adottavano perché aveva molti esercizi, anche guidati: “tanto, poi, nessuno degli studenti incontrerà casi in cui quello che c’è scritto sul libro non funziona”.
Vado OT, forse. Sul volume per il quinto anno c’è una “definizione” di successione che è stupidamente ridicola. Concepire un esempio in cui sia davvero necessaria una corretta definizione di successione è complicato e richiederebbe forse concetti superiori a quelli che uno studente liceale si troverebbe davanti. Possiamo forse tacere di fronte a quella “definizione”, tanto per gli studenti va bene lo stesso? Lo so, è una scusa per non produrre l’esempio che tanto vai chiedendo, ma non ho voglia di rompermi la testa per trovare un caso in cui la faccenda non funziona, perché so che comunque quell’uso è sbagliato.
Ciao
EnricoPS: guardando sul tuo sito le fotografie mi sono accorto che chiami cattedrale la chiesa del Tyn, è scorretto: non è affatto una cattedrale. Lo sai che dentro c’è la pietra tombale di Tycho Brahe?
-
17 Settembre 2008 alle 6:36 #22368::
Avevo detto che la risposta precedente sarebbe stata l’ultima, ma preso da pietà nei tuoi confronti provo di nuovo a spiegarti. 😉
Un tale di nome Isaac scoprì una regola quasi magica che spiegava un sacco di cose e si mise a usare la sua regoletta con entusiasmo, insegnandola a tutti i suoi amici. Poi, molti anni dopo, un tale Albert, non fidandosi della regoletta di Isaac, ci riflettè su e venne fuori con una nuova regoletta che comprendeva casi a cui Isaac non aveva nemmeno pensato.
Non c’è alcuna legge che vieti l’uso di \linewidth nei casi che indichi, può anche darsi che durante la tua vita nessuno si troverà mai nella situazione di doversi grattare indeciso la capoccia perché non capisce come mai la sua bella illustrazione non sia al posto giusto. L’impiego di \linewidth in quelle situazioni è concettualmente sbagliato, e ti ho già spiegato il perché.
Supponiamo che uno creda che i tuoni siano rumorini prodotti dagli angioletti che hanno mangiato fagioli. È una faccenda che non ha alcuna conseguenza pratica e non penso che quel tale si troverà mai in una situazione in cui la conoscenza del vero motivo del tuono gli sia essenziale. Ma, a meno che non sia un bambino innocente, è probabile che qualcuno prima o poi gli spiegherà la dura verità.
LaTeX ha ben tre parametri per contenere le lunghezze “orizzontali” rilevanti per la composizione. Si deve usare quello giusto per il proprio scopo. In un ambiente figure o figure* l’uso del parametro \linewidth non ha senso, ce l’ha solo in un ambiente per liste, dove assume il valore adeguato.
Se vuoi insegnare una regola pratica che “funziona”, fallo pure, ma poi non lamentarti se qualcuno ti accusa di ingannare il discente. Il famoso Ferrauto (libro di testo mai abbastanza deprecato) contiene un buon numero di falsità matematiche; alcuni insegnanti lo adottavano perché aveva molti esercizi, anche guidati: “tanto, poi, nessuno degli studenti incontrerà casi in cui quello che c’è scritto sul libro non funziona”.
Vado OT, forse. Sul volume per il quinto anno c’è una “definizione” di successione che è stupidamente ridicola. Concepire un esempio in cui sia davvero necessaria una corretta definizione di successione è complicato e richiederebbe forse concetti superiori a quelli che uno studente liceale si troverebbe davanti. Possiamo forse tacere di fronte a quella “definizione”, tanto per gli studenti va bene lo stesso? Lo so, è una scusa per non produrre l’esempio che tanto vai chiedendo, ma non ho voglia di rompermi la testa per trovare un caso in cui la faccenda non funziona, perché so che comunque quell’uso è sbagliato.
Caro Enrico, ho capito perfettamente, e ti ringrazio per la simpatica ed esauriente spiegazione “a prova di zuccone”! 😉
Proprio ieri, prima di aver letto quest’ultima tua risposta, ho aggiornato le guide:
http://www.lorenzopantieri.net/LaTeX_files/LaTeXimpaziente.pdf
http://www.lorenzopantieri.net/LaTeX_files/ArteLaTeX.pdfCome vedi, uso \columnwidth in tutti gli esempi, in entrambi i lavori. Poi, alla fine del paragrafo sulle figure in testo e fuori testo, accenno al comando \linewidth:
Se si inseriscono figure o tabelle in un elenco o in una citazione, è opportuno servirsi del comando \linewidth, che indica la lunghezza della riga corrente: normalmente essa è uguale a \columnwidth, ma in alcuni ambienti, come per l’appunto quelli per gli elenchi e per le citazioni, è più corta [Beccari, 2008, p. 88].
E, in nota:
È preferibile evitare di servirsi del comando \linewidth fuori dagli ambienti per gli elenchi e per le citazioni, in quanto il suo valore è, in generale, imprevedibile al di fuori di quei contesti.
Nel promemoria degli aggiornamenti alla versione di ottobre avevo buttato giù questo appunto:
Nonostante il comando \linewidth funzioni nella maggior parte dei casi (e il lettore impaziente possa trovarne allettante l’utilizzo), ho preferito non consigliarlo (al di fuori degli ambienti per gli elenchi e per le citazioni), in quanto vorrei abituare il lettore (anche impaziente) ad un LaTeX quanto più “ortodosso” possibile.
Un ringraziamento davvero speciale a Claudio Beccari e a Enrico Gregorio che mi hanno aiutato a sviscerare questo punto.
Concluderei questa vicenda con la parafrasi: “per scrivere un’ introduzione a LaTeX, essere un po’ testone non è necessario, ma aiuta”. 😉
Ti saluto molto cordialmente e, visto che siamo in tema di citazioni einsteiniane, mi firmo:
“Il tuo devoto scolaro”,
LorenzoPS: guardando sul tuo sito le fotografie mi sono accorto che chiami cattedrale la chiesa del Tyn, è scorretto: non è affatto una cattedrale. Lo sai che dentro c’è la pietra tombale di Tycho Brahe?
Non lo sapevo (è il colmo, per un laureato in astronomia 😳 ), come -ma adesso mi documento- pensavo che una cattedrale fosse solo, più o meno, una specie di “grande chiesa”… 😳 Ti ringrazio anche per questa dritta!
-
17 Settembre 2008 alle 8:48 #22369::
Come vedi, uso \columnwidth in tutti gli esempi, in entrambi i lavori. Poi, alla fine del paragrafo sulle figure in testo e fuori testo, accenno al comando \linewidth:
Se si inseriscono figure o tabelle in un elenco o in una citazione, è opportuno servirsi del comando \linewidth, che indica la lunghezza della riga corrente: normalmente essa è uguale a \columnwidth, ma in alcuni ambienti, come per l’appunto quelli per gli elenchi e per le citazioni, è più corta [Beccari, 2008, p. 88].
In realtà non è corretto nemmeno questo: \linewidth può essere utile per inserire oggetti grafici “nella lista”, ma non al livello più alto in un ambiente table o figure. Sono dettagli.
Ciao
EnricoS. Petronio a Bologna non è una cattedrale, perché non è la sede del vescovo. “Cattedrale” si dice di una chiesa dove c’è la “cathedra episcopi”. La cattedrale di Bologna è la chiesa di S. Pietro in via Indipendenza. A Venezia la cattedrale è S. Marco dal 1807, mentre prima lo era la chiesa di S. Pietro a Castello.
Almeno sapevi che Brahe morì quando era al servizio di Rodolfo II? 🙂
-
18 Settembre 2008 alle 9:21 #22370::
Se si inseriscono figure o tabelle in un elenco o in una citazione, è opportuno servirsi del comando \linewidth, che indica la lunghezza della riga corrente: normalmente essa è uguale a \columnwidth, ma in alcuni ambienti, come per l’appunto quelli per gli elenchi e per le citazioni, è più corta [Beccari, 2008, p. 88].
In realtà non è corretto nemmeno questo: \linewidth può essere utile per inserire oggetti grafici “nella lista”, ma non al livello più alto in un ambiente table o figure. Sono dettagli.
Quindi, se ho ben capito, metteresti un più blando
Se si inseriscono figure o tabelle in un elenco o in una citazione, può essere utile servirsi del comando \linewidth, che indica la lunghezza della riga corrente: normalmente essa è uguale a \columnwidth, ma in alcuni ambienti, come per l’appunto quelli per gli elenchi e per le citazioni, è più corta.
Sono dettagli, certo!
Grazie mille,
LorenzoS. Petronio a Bologna non è una cattedrale, perché non è la sede del vescovo. “Cattedrale” si dice di una chiesa dove c’è la “cathedra episcopi”. La cattedrale di Bologna è la chiesa di S. Pietro in via Indipendenza. A Venezia la cattedrale è S. Marco dal 1807, mentre prima lo era la chiesa di S. Pietro a Castello.
Almeno sapevi che Brahe morì quando era al servizio di Rodolfo II? 🙂
Ahem… 😳 non si finisce mai d’imparare…
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.