- Questo topic ha 10 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 6 mesi fa da
OldClaudio.
-
CreatoreTopic
-
15 Febbraio 2014 alle 17:01 #92477::
Salve a tutti,
sto lavorando ad un documento piuttosto corposo che conterrà alla fine 4 o 5 immagini flottanti oltre alle due fisse. Le flottanti, o almeno alcune vorrei contornarle di testo..
Al momento le fisse non hanno problemi e delle flottanti ce ne sono solo 2.
Nel preambolo ho inserito la riga `\usepackage{wrapfig} %Consente immagini contornate da testo`
Confortato dall’”arte” nel corso del testo ho inserito il codice
`\begin{wrapfloat}{figure}{I}{0pt}
\includegraphics[width=0.5\textwidth]{./immagini/filomena.jpg}
\caption{Nonno Agostino e Nonna Filomena}
\end{wrapfloat}`
Tutto funziona alla grande, ma ….Poichè già prevedo che alla fine il documento potrebbe superare le 600 pagine rendendo precaria la rilegatura e volendo evitare di spezzare l’opera in due volumi ho inserito nel preambolo 10pt per i font anziché 11pt.
A questo punto succede che Latex per la prima immagine flottante non fa una piega e continua ad accettare `width=0.5\textwidth` mentre per la seconda mi scrive sopra alla immagine a meno che non la riduca ad almeno 0.4\textwidth.
Alla vista risulta un po’ piccola, ma alla fine accettabile, tuttavia mi rimane la curiosità di capirne il motivo.
Il manuale del pacchetto mi è risultato molto ostico e non sono riuscito ad approfondire.
Qualcuno mi sa indirizzare?
Grazie
-
CreatoreTopic
-
AutoreRisposte
-
-
15 Febbraio 2014 alle 18:01 #92478::
Nella guida di wrapfig, che puoi leggere con texdoc wrapfig, innanzi tutto non si usa la scrittura \begin{wrapfluat}{figure} ma si scirve direttamante \begin{wrapfigure}; probabilmente le due cose sono equivalenti, a la seconda mi sembra molto più comprensibile.
La sintassi è `\begin{wrapfigure}[12]{r}[34pt]{5cm} 〈figure〉 \end{wrapfigure}`dove i dati forniti come esempio indicano nell’orine
[12] valore facoltativo per specificare quante righe di testo impegni la figura con la sua didascalia
{r} la posizione della figura avvolta, in questo caso viene richiesto di ritagliarla dal margine destro
[34pt] ammontare facoltativo dell’overhang, cioè della sporgenza fuori dal margine
{5cm} larghezza della figura.Confrontando le tue impostazioni si vede che chiedi di avere la figura contornata dal testo in posizione I, cioè flottante e messa nel maringe interno; e vuoi che la figura abbia una larghezza di 0pt. Questo è quello che hai scritto, e mi stupisco che quando usavi il corpo di 11pt, invece di quello a 10pt, ti includesse la figura senza protestare.
-
15 Febbraio 2014 alle 18:59 #92479::
No, OldClaudio, non mi pare che sia così.
A parte la differenza irrilevante fra` \begin{wrapfloat}{figure}` e `\begin {wrapfigure} `che non produce errori, esaminando il tuo esempio di sintassi, ho omesso il numero di righe facoltativo; poi c’è la posizione senza problemi.
Segue la misura dell’immagine e questo è il problema. Se la scrivo qui non ne tiene assolutamente conto e segue la specifica delle riga seguente (quella dell’immagine) e tuttavia se non scrivo niente mi da un errore che non riesco a interpretare.
Ti ricordo comunque che, come dicevo nel mio post ho fatto esattamente come dice nell’”Arte”.
Io credo che i casi sono due: o non ho capite niente della sintassi di questo ambiente, oppure effettivamente la dimensione dei caratteri pone dei vincoli.
Alra perplessità è che l’altra immagine non risente affatto del cambio della dimensione dei font.
Ciao
-
15 Febbraio 2014 alle 19:20 #92480::
Ho capito benissimo il tuo punto, ma la stringa di codice con l’esempio non l’ho scritta io, ma l’ho copiata con un copia-incolla dal file PDf di Donald Arsenau, l’autore di wrapfig, e l’ho incollata nel messaggio del forum; ho controllato con molta attenzione di non aver letto (non scritto, perché con il copia-incolla, non si cambia niente) correttamante le parentesi graffe e le parentesi quadre; quindi so distinguere bene i caratteri e di conseguenza che cosa è obbligatorio e che cosa è facoltativo. Tu nel tuo codice non hai usato i due campi facoltativi, quindi ti restano i campi obbligatori, e per questi tu hai I per il posizionamento e 0pt per la larghezza dell’immagine; capisco che magari il codice interno di wrapfig consideri una larghezza nulla come una larghezza da gestire in modo speciale, quindi non mi stupisce che tenga conto solo della dimensione vera specificata con \includegraphics, ma dovresti almeno provare a leggere la documentazione di Arsenau con texdoc wrapfig. Convengo con te che non sia una delel documentazioni più chiare, ma… pensa che fino a pochi anni fa non esisteva nemmeno quella documentazione.Comunque quell’esempio di cui ho fatto il copia-incolla è alla fine del primo capoverso della documentazione. Alla fine del primo capoverso della seconda pagina dice che \begin{wrapfigure} è del tutto equivalente a \begin{wrapfloat}{figure} e l’esempio senza argomenti opzionali che segue conferma che l’ultimo argomento obbligatorio va fissato diverso da 0; probabilmente dando il valore zero non si ritagliano le righe e il tutto viene infilato nel margine, con la figura che va a finire sopra o sotto il testo circostante.
All’inzio del §2 cè scritto chiaramante:
Parameter #4 (the second required parameter) is the width of the figure or table. Given the way that LATEX puts just about everything into boxes with the current line-width, the width parameter will take precedence over whatever natural width the figure has. In particular, the caption is always typeset with the specified width. If the figure is wider than the space allotted, you will get an “overfull box” warning.
However, if you specify a width of zero (0pt), the actual width of the figure will determine the wrapping width. A following \caption should have the same width as the figure, but it might fail badly; it is safer to specify a width when you use a caption.
Quindi una larghezza nulla specificata come secondo argomento obbligatorio (o come quarto argomento complessivo) dovrebbe far sì che la rientranza calcolata sia proprio la larghezza naturale dell’oggetto da includere (il trattamento speciale di cui dicevo) ma poi se si lascia 0pt e ci si mette la didascalia possono succedere cose strane. Per cui Arsenau stesso dice di usare una larghezza esplicita, non una larghezza nulla che determina l’automatismo del calcolo del rientro.
L’Arte è sicuramente autorevole, ma preferisco leggere la documentazione originale. Ti suggerisco di fare altrettanto.
-
16 Febbraio 2014 alle 7:19 #92481::
Ho capito quello che dici e quello che dice il manuale, ma facendo prove vedo che solo in parte riesco a riprodurlo, invece ho scoperto un’altra cosa: il casino avviene solo con le immagini a sviluppo verticale.
La didascalia che uso in effetti è lunga (secondo il manuale potrebbe interferire col calcolo degli spazi?) ma anche riducendola non si risolve.Rimane la mia domanda originale: “Perché con i caratteri di 11 pt tutto funziona?”
Tra parentisi ho anche provato ad esplicitare il numero di righe interessate, ma senza risultati.
Ciao
-
16 Febbraio 2014 alle 8:09 #92482::
spino” post=92076Ho capito quello che dici e quello che dice il manuale, ma facendo prove vedo che solo in parte riesco a riprodurlo, invece ho scoperto un’altra cosa: il casino avviene solo con le immagini a sviluppo verticale.
La didascalia che uso in effetti è lunga (secondo il manuale potrebbe interferire col calcolo degli spazi?) ma anche riducendola non si risolve.Rimane la mia domanda originale: “Perché con i caratteri di 11 pt tutto funziona?”
Tra parentisi ho anche provato ad esplicitare il numero di righe interessate, ma senza risultati.
CiaoLa figura che vedi nell’Arte è flottante e nel margine interno, e il carattere del testo principale è 10 punti. Tutto funziona. Certo, dopo molte prove per avere la figura in una posizione comoda.
Puoi far vedere il tuo preambolo?
Ciao
Tommaso
-
16 Febbraio 2014 alle 10:57 #92483::
Il fatto che a 11pt venga e a 10 pt non venga potrebbe essere dovuto proprio alla didascalia che per motivi strani, legati al suo contenuto, non si compone nella dua giustezza, ma forse ha una o più righe che sforano, Conoscere il contenuto della didascalia potrebbe essere utile.Pulce nell’orecchio: i fatto che la figura stretta e alta dia problemi, forse dipende proprio dalla didascalia in cui la prima parola dopo il titolino non può essere divisa in sillabe come non può esserlo qualunque paroa dopo un cambiamento di font, cambiamento che avviene dopo aver composto il titolino,. quanto è larga effettivamente la figura che vuoi includere in termini assoluti? (si quanti millimetri o quanti punti è larga?, se ci dici che è larga 0.25 \textwidth, non serve perché non sappiamo quanto sia \textwidth.
-
16 Febbraio 2014 alle 12:30 #92484::
Per la domanda di Tommaso posto il preambolo:
`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex
% !TEX spellcheck = it-IT
\documentclass[10pt]{book}
\usepackage[italian]{babel}
\usepackage{type1ec} %insieme a lettrine realizzano i capolettera. Vanno inseriti in quest'ordine.
\usepackage[T1]{fontenc}
\usepackage{lettrine}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[papersize={155.93mm,233.89mm}]{geometry} %Aggiusta le proporzioni della pagina. Esistono molte opzioni
\usepackage{microtype} %Migliora l'impaginazione della riga.
\usepackage{graphicx} %Indispensabile per inserire figure
\usepackage{wrapfig} %Consente immagini contornate da testo
\newcommand{\cambiaFont}[2]{{\fontencoding{T1}\fontfamily{#1}%Definisce nuovo comando
\selectfont#2}}
\usepackage{imakeidx} %Serve per gli indici analitici
\makeindex[name=favole,title=Elenco delle favole,columns=1]`
La foto originale è larga 83,40 mm ed alta 131,49 mm. A titolo sperimentale ne ho fatto due copie ridotte: (33,87 x 53,42) e (50,80 x 80,09)mmQuando scrivo 0.5\textwidth, di fatto intendo 55 mm. La Didascalia è quella vera ed ho anche provato ad accorciarla senza esito.
Per sgombrare il campo ad eventuali problemi di comprensione fra noi, posto il codice incriminato:
`\begin{wrapfigure}{I} {50mm}
\includegraphics{./immagini/filomena.jpg}
\caption{Nonno Agostino e Nonna Filomena}
\end{wrapfigure}`
Con la grandezza originale, non la riduce e quindi non riesce a piazzarla a la mette alla fine, con la grandezza intermedia la riduce correttamente, ma scrive sopra alla metà inferiore e con la grandezza minima opera correttamente ma la riduce troppo.Ho costruito un esempio da postare. Da questo deduco che l’immagine non viene affatto ridimensionata, ma a differenza del caso reale in effetti non ci scrive sopra.
[attachment]prova.zip[/attachment]
Mi dispiace, non riesco ad allegareMi auguro che avrai la pazienza di compilarlo e vedrai che con la sintassi corretta non esegue il ridimensionamento, mentre lo fa con quella che acevo scelto il che in pratica gli passa l’immagine già ridimensionata.
Ciao
-
16 Febbraio 2014 alle 14:32 #92485::
Facciamo due conti sulle dita: usi geometry per specificare la grandezza del foglio di carta 155.93mm e 233.89 mm (da dove hai scelto questi numeri non lo so, potevi certamante specificare un numero intero di millimetri; per fortuna a geometry e a pdflatex non importa nente) Comunue visto che non specifichi nient’altro, le misure dello specchio di stampa sono prese secondo i valori di default specificati nel § 6.4 della documentazione di geometry; quindi la larghezza del testo, \textwidth risulta pari a 0.7 \times 155,.83 mm = 109.08mm; i margini stampando fronte retro sono in proporzione 2:3, quindi lo spazio totale epr i margini è 155.83mm – 109.08mm = 46.75mm; Il margine interno sara quindi i 2/5= 0.4 di questo valore e il margine esterno i 3/5= 0.6 di questo valore: margine interno 18.70mm e margine esterno 18.05mm.OK; ora abbiamo le dimensioni orizzontali della carta e dello specchio di stampa; se tu scali l’immagine in modo che la larghezza sia 0.5’textwudth, lo spazio da ritagliare sarà leggermente più grande perché bisogna tenere conto dello spazio fra la figura circondata e il testo, ma questo non dovrebbe influire sulla larghezza delle adiasclaia che quindi sarà largaa 54.54mm (ottima approssimazione del tuo valore di 55mm).
Veniamo all’altezza; Credo, ma non sono sicuro, che di default la testatina e il piedino facciano parte dello specchio di stampa; supponiamo che che non sia così, ma non sarebbe complicato ricalcolare il tutto se tenessimo conto anche della testatina e del piedino. quindi l’altezza \texheight è il 70% (di default) della altezza della carta; si ottiene allora \textheight = 163.72mm. Dovrebbe essere abbondantemente sufficiente per ;’altezza del tue foto scalate, Ma una cosa che non mi torna è che il rapporto altezza/larghezze dell’immagine originale e di quella più grande delle due ridotte sia 1.5766, mentre per la più piccola delle due scalate sia 1.8725. C’è un’errore di scrittura nei tuoi dati oppure davvero quel rapporto è così?
Detto questo è chiaro che se scali la base a metà della larghezza del testo, quindi di fatto usi un rapporto di scala tale che la foto grande abbia un’altezza di 86.71mm che sta abbondantemente dentro alla \textheight. la foto media viene alta uguale, mentre la foto piccole, se non ci sono errori nei tuoi dati viene alta 102.98 mm, ma anche questa sta abbondantemente dentro la \textheight.
Il comportamento di wrapfig è perciò un poco strambo, ma la documentazione lo dice chiaramente che ci sono molte situazioni in cui il codice si comporta in modo strano. La documentazione consiglia di usare le figure avvolte come oggetti flottanti, finchè non si compone la versione finale, poi è meglio passare alla posizione manuale; prova quindi a spostare l’ambiente un po’ più in alto nella pagina mettendo un codice di posizione minuscolo e spostando col copia-incolla l’ambiente fra due parole dovve avviene un fine riga “naturale, un po’ prima o un po’ dopo di dove verrebbe spontanemente se lasciato flottare, e vedi che cosa succede.
PS: Gli attachment con il meccanismi del forum devono aver solo certe estensioni e non devono superare certe dimensioni; controlla quando clicchi sul bottone per includere dei file sia il tipo di estensione sia la dimensione massima del file. Piuttosto accludi due o tre file distinti, invece di un file unico.
PPS: non caricare il pacchetto type1ec se usi i font latin modern, perché questi sono già da soli continuamante scalabili, quindi non hanno bisogno di uell’aiuto, neccessario invece se usassi i font di default (CM-super).
PPPS: nella definizione di \cambiafont è del tutto superfluo specificare la codifica T1, visto che è quella di default.
-
16 Febbraio 2014 alle 15:02 #92486::
Forse ci siamo, ma lo dico sottovoce. Ho spostato l’ambiente in alto dove era un inizio pagina e sta funzionando anche con una immagine che va oltre i 50% della riga.
Mi sa però che dovrò rimetterci le mani alla fine per riposizionarla.
Potrei amche mettere fissa l’immagine, ma da quello che capisco dovrei rinunciare a contornarla col testo e questo invece mi piaceva.
Ad ogni modo ti ringrazio per esserti prodigato così tanto anche di sabato e domenica.
Ciao
-
16 Febbraio 2014 alle 15:39 #92487::
spino” post=92095Forse ci siamo, ma lo dico sottovoce. Ho spostato l’ambiente in alto dove era un inizio pagina e sta funzionando anche con una immagine che va oltre i 50% della riga.
Mi sa però che dovrò rimetterci le mani alla fine per riposizionarla.
Potrei anche mettere fissa l’immagine, ma da quello che capisco dovrei rinunciare a contornarla col testo e questo invece mi piaceva.
Ad ogni modo ti ringrazio per esserti prodigato così tanto anche di sabato e domenica.
CiaoRimetterci el ami alla fine epr il “fine tuning” di tutto è comunque obbligatorio. ma se metti le lettere miuscole per il codice di posizionamento, cioè i al posto di I, wrapfig continua bellamente a inserire la figura attorniata dal testo.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.