Jeg har et problem, når der er mange tal. Nogle figurer har tendens til at “flyve rundt”, det vil sige være et afsnit nedenfor, selvom jeg placerede dem foran dette afsnit. Jeg bruger kode:
\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}
til at placere mine tal. Hvordan kan jeg fortælle latex, at jeg VIRKELIG vil have figuren på det specifikke sted, uanset hvor meget hvidt mellemrum der er tilbage?
Kommentarer
Svar
Det korte svar: brug pakken “ float ” og derefter [H]
mulighed for din figur.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
Det længere svar: Figurernes standardopførsel er at flyde, så LaTeX kan finde den bedste måde at arrangere dem i dit dokument og få det til at se bedre ud. Hvis du har et kig, er det sådan, bøger ofte er typesæt. Så normalt er den bedste ting at gøre bare at lade LaTeX gøre sit arbejde og ikke forsøge at tvinge placeringen af figurer på bestemte steder. Dette betyder også, at du bør undgå at bruge sætninger som “in the following figure:
”, som kræver, at figuren skal indstilles til en bestemt placering, og brug i stedet“ in Figure~\ref{..}
“og drager fordel af LaTeXs krydsreferencer.
Hvis du af en eller anden grund virkelig vil have, at en bestemt figur placeres “HER”, og ikke hvor LaTeX vil placere den, skal du bruge [H]
mulighed for pakken “ float ”, som grundlæggende forvandler den flydende figur til en almindelig ikke-float.
Bemærk også, at hvis du vil ikke tilføje en caption
til din figur, så behøver du slet ikke at bruge figure
-miljøet! Du kan bruge kommandoen \includegraphics
hvor som helst i dit dokument til at indsætte et billede.
Kommentarer
- tak for at bemærke dette! Jeg var ikke ‘ ikke klar over ændringen.
H
virker ‘ ikke til at fungere uden nogen pakker, men virker ved at indlæsefloat
. ErH
frafloat
det samme som!h
? - nej , [! h] ændres alligevel af [! ht] af de fleste dokumentklasser. Og betydningen af h er kun: her, hvis det er muligt, men ikke absolut her. Det ! giver LaTeX mulighed for at minimere alle tællere og længder, der refererer til flydende miljøer.
- tak, arbejdede for mig! Jeg lader normalt latex placere det, hvor det vil, men nogle gange har jeg bare brug det, hvor jeg vil.
- For dokumenter, der ikke er beregnet til at blive udskrevet, er der ingen grund til at prøve at gemme papir, så store områder med hvidt mellemrum er ‘ et problem. Så det ‘ er meget bedre at få figuren til at bryde teksten på det mest logiske punkt i stedet for at flyde et andet sted. Disse akavede konventioner vil gå ligesom latin gik.
- Jeg tror ikke ‘ Jeg tror ikke, at de sædvanlige bekymringer handler om at spare plads i stedet for stilistisk at prøve at finde det bedste placere hvor du skal placere en figur, tabel osv.
Svar
gør ikke brug et flydende miljø, hvis du ikke vil have det flydende.
\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 – MYE tak for dette svar! Jeg havde aldrig før forstået, at
\begin{figure}
er et flydende miljø – mens\begin{minipage}
er ikke ! Jeg havde et problem med at ville medtage et billede nederst på siden med tekst, og ikke engang[H]
hjalp; kun dette! Jeg har lige erstattetminipage
tilfigure
– ogcaptionof
forcaption
– og endelig fik hvad jeg ville !! Mange tak igen, skål! - Hvorfor bruger du en
\makebox
? Ser det ikke ens ud uden det? - @Tobi: hvis billedet ikke er større end
\textwidth
ja, ellers ikke!\makebox
centrerer billedet uafhængigt af dets bredde - Dette var så super nyttigt; IMHO dette skal være det accepterede svar, da det fungerer mere som forventet som det aktuelt accepterede.
Svar
En løsning, der ikke er nævnt af nogen af de andre svar, der lige har ordnet mig ud, er at bruge \clearpage
Ingen specielle pakker er nødvendige.
\clearpage
tvinger alle figurer over det i .tex
-filen til at blive udskrevet, inden du fortsætter med teksten. Dette kan efterlade store hvide rum.
For mig var dette den bedste løsning, fordi jeg ikke behøvede at ændre formateringen, og det sørgede bare for, at alle figurer blev udskrevet før den næste bit tekst. Mit spørgsmål var en del af dokumentet med mange figurer og ikke meget tekst.
Kommentarer
- Enkel og effektiv løsning, tak !!
Svar
Du kan nu bruge pakken adjustbox
til at gøre dine boksede ting til en ikke-flydende float-erstatning ved hjælp af nofloat=<type>
-tast. Billedtekst og etiket kan tilføjes med egne nøgler før nofloat
. Til centrering kan center
-tasten bruges. For at tilføje det lodrette mellemrum skal du bruge tasten vspace
. Denne løsning har fordelen, at du også kan bruge alle de mange andre funktioner i adjustbox
til at ændre indholdet (min / maks skalering, indramning osv.)
Bemærk, at hvis figurindholdet kun er et enkelt billede, kan du bare bruge de samme taster på \adjustbox
og få en one-liner. Hvis alt, hvad du vil have, er en tabel, er der tabular
-tasten til {adjustbox}
.
Hvis du senere vil skift det til en reel float, drej bare på nofloat
til float
og fjern vspace
-tasten. adjustbox
placerer billedteksten øverst for table
s og nederst for figure
s. Dette kan ændres ved hjælp af tasterne captionbelow
eller captionabove
i stedet for caption
. Se adjustox
manualen for alle muligheder.
Hvis du ikke ønsker at markere indholdet, kan du stadig bruge adjustbox
-pakken, da den giver {adjnofloat}{<type>}
miljø. Det bruges internt til at implementere nofloat
-tasten. Brugere kan enten omdefinere dette miljø for at ændre eller lappe nofloat
adfærd eller bruge miljøet direkte. Miljøet bruger kode, der ligner meget på Herberts svar .
Eksempler på brug:
\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 af resultatet:
Svar
Brug [ht!]
til at være mere eftertrykkelig om placering. Og hvis du vil have tekst til at følge figuren, i stedet for at begynde før, skal du anvende \usepackage{parskip}
i din indledning og tillade et mellemrum før den pågældende tekst.
Jeg bruger også \vspace{}
eller før figurmiljøet for at manipulere mellemrummet mellem tekst og figur for at give et mere afbalanceret udseende. Jeg har ikke problemer på denne måde, selv med mere komplekse multifigurmiljøer, der anvender \subfigure
.
center
miljø, men\centering
kommandoen for tal. Se Skal jeg bruge center eller centrering til figurer og tabeller?\FloatBarrier
et sted mellem figuren og afsnittet. Det tvinger alle figurer, der er defineret før kommandoen, til at gengive før dette punkt i teksten. Du bliver nødt til at tilføje\usepackage{placeins}
i indledningen for at bruge kommandoen. Nogle gange har jeg fundet dette meget nyttigt.