Jag har problem när många siffror är ifrågasatta. Vissa figurer tenderar att ”flyga runt”, det vill säga vara ett stycke nedan, även om jag placerade dem före det stycket. Jag använder kod:
\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}
för att placera mina siffror. Hur kan jag säga till latex att jag verkligen vill ha figuren på den specifika platsen, oavsett hur mycket utrymme som finns kvar?
Kommentarer
Svar
Det korta svaret: använd paketet ” float ” och sedan [H]
alternativ för din figur.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
Det längre svaret: Figurernas standardbeteende är att flyta, så att LaTeX kan hitta det bästa sättet att ordna dem i ditt dokument och få det att se bättre ut. Om du tittar är det så här böcker ofta är typsatta. Så vanligtvis är det bästa att göra bara att låta LaTeX göra sitt arbete och inte försöka tvinga fram placering av siffror på specifika platser. Detta innebär också att du bör undvika att använda fraser som ”in the following figure:
”, vilket kräver att figuren ställs in på en specifik plats och använder istället“ in Figure~\ref{..}
“och utnyttjar LaTeX: s korsreferenser.
Om du av någon anledning verkligen vill att någon viss figur ska placeras ”HÄR” och inte där LaTeX vill placera den, använd sedan [H]
alternativet ” float ” -paketet som i grunden förvandlar den flytande figuren till en vanlig icke-float.
Observera också att om du vill inte lägga till en caption
till din figur, då behöver du inte använda figure
-miljön alls! Du kan använda kommandot \includegraphics
var som helst i ditt dokument för att infoga en bild.
Kommentarer
- tack för att notera detta! Jag var ’ inte medveten om förändringen.
H
verkar inte ’ t fungerar utan några paket, men fungerar att laddafloat
. ÄrH
frånfloat
samma som!h
? - nej , [! h] ändras ändå av de flesta dokumentklasser till [! ht]. Och innebörden av h är bara: här, om möjligt, men inte absolut här. Den! låter LaTeX minimera alla räknare och längder som hänvisar till flytande miljöer.
- tack, fungerade för mig! Jag låter vanligtvis latex placera det där det vill, men ibland behöver jag bara det där jag vill.
- För dokument som inte är avsedda att skrivas ut finns det ingen anledning att försöka spara papper, så stora delar av det vita utrymmet är ’ ett problem. Så det ’ är mycket bättre att ha figuren som bryter texten vid den mest logiska punkten, snarare än att flyta någon annanstans. Dessa besvärliga konventioner kommer att gå precis som latin gick.
- Jag tror inte ’ tänker inte att de vanliga bekymmerna handlar om att spara utrymme snarare än att stilistiskt försöka hitta det bästa placera var du ska placera en siffra, tabell etc.
Svar
gör inte använd en flytande miljö om du inte vill att den ska flyta.
\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}
eller
\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center}
Kommentarer
- Hej @Herbert – mycket tack för det här svaret! Jag hade aldrig förstått att
\begin{figure}
är en flytande miljö – medan\begin{minipage}
inte är inte ! Jag hade problem med att vilja inkludera en bild längst ner på sidan med text och inte ens[H]
hjälpte; bara det här! Jag har precis bytt utminipage
förfigure
– ochcaptionof
caption
– och äntligen fick vad jag ville !! Tack så mycket igen, skål! - Varför använder du en
\makebox
? Ser det inte ut utan det? - @Tobi: om bilden inte är större än
\textwidth
ja, annars inte!\makebox
centrerar bilden oberoende av dess bredd - Detta var så super hjälpsamt; IMHO detta bör vara det accepterade svaret eftersom det fungerar mer som förväntat som det för närvarande accepterade.
Svar
En lösning som inte nämns av något av de andra svaren som bara ordnade mig är att använda \clearpage
Inga speciella paket behövs.
\clearpage
tvingar alla siffror ovanför i .tex
-filen att skrivas ut innan du fortsätter med texten. Detta kan lämna stora vita utrymmen.
För mig var detta den bästa lösningen eftersom jag inte behövde ändra någon av formateringen och det såg till att alla figurer skrevs ut innan nästa textbit. Min fråga var en del av dokumentet med många siffror och inte mycket text.
Kommentarer
- Enkel och effektiv lösning, tack !!
Svar
Du kan nu använda paketet adjustbox
för att förvandla dina boxade grejer till en icke-flytande flottörbyte med nofloat=<type>
-tangent. Bildtext och etikett kan läggas till med egna tangenter före nofloat
. För centrering kan tangenten center
användas. För att lägga till det vertikala utrymmet använder du vspace
-tangenten. Denna lösning har fördelen att du också kan använda alla de många andra funktionerna i adjustbox
för att ändra innehållet (min / max skalning, inramning etc.)
Observera att om figurinnehållet bara är en enstaka bild kan du bara använda samma tangenter på \adjustbox
och få en one-liner. Om allt du vill ha är en tabell är det tabular
-tangenten för {adjustbox}
.
Om du senare vill ändra det till ett riktigt flottör bara vrid nofloat
till float
och ta bort vspace
-tangenten. adjustbox
placerar bildtexten överst för table
s och på botten för figure
s. Detta kan ändras med hjälp av tangenterna captionbelow
eller captionabove
istället för caption
. Se handboken adjustox
för alla alternativ.
Om du inte vill markera innehållet kan du fortfarande använda adjustbox
eftersom det ger {adjnofloat}{<type>}
miljö. Den används internt för att implementera nofloat
-tangenten. Användare kan antingen omdefiniera den här miljön för att ändra eller lappa nofloat
beteende eller använda miljön direkt. Miljön använder kod som är mycket lik som i Herberts svar .
Användningsexempel:
\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}
En del av resultatet:
Svar
Använd [ht!]
för att vara mer eftertryckligt om placering. Och om du vill att texten ska följa figuren istället för att börja innan, använd \usepackage{parskip}
i ingressen och låt ett mellanslag före texten i fråga.
Jag använder också \vspace{}
eller före figurmiljön för att manipulera utrymmet mellan text och figur för att ge ett mer balanserat utseende. Jag har inga problem på detta sätt, även med mer komplexa multifigurmiljöer som använder \subfigure
.
center
miljö men\centering
-kommandot för siffror. Se Ska jag använda centrering eller centrering för figurer och tabeller?\FloatBarrier
någonstans mellan figuren och stycket. Det tvingar alla figurer som definierats före kommandot att återges före den punkten i texten. Du måste lägga till\usepackage{placeins}
i ingressen för att använda kommandot. Ibland har jag tyckt att det här är mycket användbart.