Ho un problema quando sono in questione molte figure. Alcune figure tendono a “volare in giro”, cioè a essere un paragrafo sotto, anche se le ho inserite prima di quel paragrafo. Uso il codice:

\begin{figure}[ht] \begin{center} \advance\leftskip-3cm \advance\rightskip-3cm \includegraphics[keepaspectratio=true,scale=0.6]{slike/visina8} \caption{} \label{visina8} \end{center}\end{figure} 

per posizionare le mie figure. Come posso dire al lattice che voglio VERAMENTE la figura in quel posto specifico, non importa quanto spazio sarà lasciato?

Commenti

  • Nota a margine: non ‘ t utilizzare center ambiente ma il comando \centering per le figure. Vedi Devo usare center o centering per figure e tabelle?
  • Per posizionare definitivamente un paragrafo dopo una figura, usa il comando \FloatBarrier da qualche parte tra la figura e il paragrafo. Forza il rendering di tutte le figure definite prima del comando prima di quel punto nel testo. Dovrai aggiungere \usepackage{placeins} nel preambolo per utilizzare il comando. A volte lho trovato molto utile.

Risposta

La risposta breve: utilizza il pacchetto “ float ” e poi il [H] opzione per la tua figura.

\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure} 

La risposta più lunga: Il comportamento predefinito delle figure è di fluttuare, in modo che LaTeX possa trovare il modo migliore per disporle nel documento e renderlo migliore. Se dai unocchiata, è così che i libri sono spesso impaginati. Quindi, di solito la cosa migliore da fare è lasciare che LaTeX faccia il suo lavoro e non cercare di forzare il posizionamento delle figure in posizioni specifiche. Ciò significa anche che dovresti evitare di usare frasi come “in the following figure: “, che richiede che la figura sia impostata in una posizione specifica e utilizza invece” in Figure~\ref{..} “, sfruttando i riferimenti incrociati di LaTeX.

Se per qualche motivo vuoi davvero che una figura particolare sia posizionata “QUI”, e non dove LaTeX vuole metterla, allora usa [H] opzione del pacchetto “ float ” che fondamentalmente trasforma la cifra fluttuante in un normale non flottante.

Nota anche che, se tu non voglio aggiungere un caption alla tua figura, quindi non devi “usare affatto lambiente figure! Puoi utilizzare il comando \includegraphics ovunque nel tuo documento per inserire unimmagine.

Commenti

  • grazie per aver notato questo! ‘ non ero a conoscenza del cambiamento. H ‘ non sembra funzionare senza pacchetti, ma funziona caricando float. H di float è uguale a !h?
  • no , [! h] viene comunque modificato dalla maggior parte delle classi di documenti in [! ht]. E il significato di h è solo: qui, se possibile, ma non assolutamente qui. Il ! consente a LaTeX di ridurre al minimo tutti i contatori e le lunghezze che si riferiscono ad ambienti mobili.
  • grazie, ha funzionato per me! Di solito lascio che latex lo posizioni dove vuole, ma a volte semplicemente mi serve dove voglio.
  • Per i documenti che non devono essere stampati, non cè motivo di provare a salvare carta, quindi grandi aree di spazio bianco non sono ‘ un problema. Quindi ‘ è molto meglio che la cifra spezzi il testo nel punto più logico, piuttosto che fluttuare da qualche altra parte. Queste convenzioni imbarazzanti andranno proprio come è andato il latino.
  • Non ‘ penso che le solite preoccupazioni riguardino il risparmio di spazio, piuttosto che cercare stilisticamente di trovare il meglio luogo in cui posizionare una figura, una tabella, ecc.

Risposta

non utilizza un ambiente mobile se non lo desideri.

\usepackage{caption} ... \noindent% \begin{minipage}{\linewidth}% to keep image and caption on one page \makebox[\linewidth]{% to center the image \includegraphics[keepaspectratio=true,scale=0.6]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{minipage} 

o

\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center} 

Commenti

  • Ciao @Herbert – grazie mille per questa risposta! Non avevo mai capito che \begin{figure} è un ambiente mobile, mentre \begin{minipage} non lo è! Ho avuto un problema con il desiderio di includere unimmagine in fondo alla pagina con testo e nemmeno [H] ha aiutato; solo questo! Ho appena sostituito minipage con figure e captionof per caption – e finalmente ho ottenuto quello che volevo !! Grazie mille ancora, ciao!
  • Perché usi un \makebox? Non ha lo stesso aspetto senza?
  • @Tobi: se limmagine non è più grande di \textwidth sì, altrimenti no!\makebox centra limmagine indipendentemente dalla sua larghezza
  • È stato estremamente utile; Secondo me questa dovrebbe essere la risposta accettata in quanto funziona più come previsto rispetto a quella attualmente accettata.

Risposta

Una soluzione non menzionata da nessuna delle altre risposte che mi ha appena risolto è usare \clearpage

Non sono necessari pacchetti speciali.

\clearpage forza la stampa di tutte le cifre sopra di essa nel file .tex prima di continuare con il testo. Questo può lasciare ampi spazi bianchi.

Per me questa era la soluzione migliore perché non dovevo cambiare nessuna formattazione e mi assicuravo solo che tutte le figure fossero stampate prima della parte di testo successiva. Il mio problema era una parte del documento con molte figure e poco testo.

Commenti

  • Soluzione semplice ed efficace, grazie !!

Risposta

Ora puoi utilizzare il pacchetto adjustbox per trasformare le tue cose in scatola in una sostituzione float non flottante utilizzando . La didascalia e letichetta possono essere aggiunte con chiavi proprie, prima di nofloat. Per centrare è possibile utilizzare la chiave center. Per aggiungere lo spazio verticale, utilizza la chiave vspace. Questa soluzione ha il vantaggio di poter utilizzare anche tutte le molte altre funzionalità di adjustbox per modificare il contenuto (ridimensionamento min / max, framing, ecc.)

Nota che se il contenuto della figura è solo una singola immagine puoi semplicemente usare gli stessi tasti su \adjustbox e ottenere una riga. Se tutto quello che vuoi è una tabella, allora cè la tabular chiave per {adjustbox}.

Se lo desideri in seguito cambiarlo in un vero float basta girare nofloat in float e rimuovere la chiave vspace. adjustbox inserisce la didascalia in alto per table se in basso per figure. Questo può essere modificato utilizzando i tasti captionbelow o captionabove invece di caption. Consulta il manuale adjustox per tutte le opzioni.

Se non desideri inscatolare il contenuto, puoi comunque utilizzare il pacchetto adjustbox in quanto fornisce {adjnofloat}{<type>} ambiente. Viene utilizzato internamente per implementare la chiave nofloat. Gli utenti possono ridefinire questo ambiente per modificare o correggere il comportamento o utilizzare nofloat direttamente lambiente. Lambiente utilizza un codice molto simile a Herberts answer .


Esempi di utilizzo:

\documentclass{article} \usepackage{blindtext}% for example text here only \usepackage{adjustbox} \begin{document} \blindtext \begin{adjustbox}{center,caption={some caption},label={somelabel},nofloat=figure,vspace=\bigskipamount} % maybe other stuff \includegraphics[width=\textwidth]{example-image}% example only, could also be \adjustimage % maybe other stuff \end{adjustbox} \blindtext % For simple images, a one liner is enough \adjustimage{width=\textwidth,center,caption={some caption},label={somelabel},nofloat=figure,vspace=\bigskipamount}{example-image} \blindtext \begin{adjustbox}{center,caption={some caption},label={somelabel},nofloat=table,vspace=\bigskipamount} % maybe other stuff \begin{tabular}{lll} some & tabular & is\\ also & possible & with this \\ \end{tabular} % maybe other stuff \end{adjustbox} \blindtext % For just a tabular: \begin{adjustbox}{tabular=lll,center,caption={some caption},label={somelabel},nofloat=table,vspace=\bigskipamount} some & tabular & is\\ also & possible & with this \\ \end{adjustbox} \blindtext \end{document} 

Parte del risultato:

inserisci qui la descrizione dellimmagine

Risposta

Usa [ht!] per essere più enfatico sul posizionamento. E, se desideri che il testo segua la figura, invece di iniziare prima, utilizza \usepackage{parskip} nel preambolo e lascia uno spazio prima del testo in questione.

Utilizzo anche \vspace{} o prima dellambiente figure per manipolare lo spazio tra testo e figura per dare un aspetto più equilibrato. Non ho problemi in questo modo, anche con ambienti multifigure più complessi che impiegano \subfigure.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *