Jeg har et problem når det er mange figurer det er snakk om. Noen figurer har en tendens til å «fly rundt», det vil si være et avsnitt nedenfor, selv om jeg plasserte dem før det avsnittet. Jeg bruker 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} 

for å plassere figurene mine. Hvordan kan jeg fortelle latex at jeg VIRKELIG vil ha figuren på det spesifikke stedet, uansett hvor mye mellomrom som blir igjen?

Kommentarer

  • Sidenote: Don ‘ t bruk center miljø men \centering kommandoen for figurer. Se Skal jeg bruke senter eller sentrering for figurer og tabeller?
  • For å definitivt plassere et avsnitt etter en figur, bruk kommandoen \FloatBarrier et sted mellom figuren og avsnittet. Det tvinger alle figurene som er definert før kommandoen til å gjengi før det punktet i teksten. Du må legge til \usepackage{placeins} i innledningen for å bruke kommandoen. Noen ganger har jeg funnet dette veldig nyttig.

Svar

Det korte svaret: bruk pakken « float » og deretter [H] alternativ for figuren din.

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

Jo lengre svar: Standardoppførselen til figurer er å flyte, slik at LaTeX kan finne den beste måten å ordne dem i dokumentet ditt og få det til å se bedre ut. Hvis du ser, er det slik bøker ofte blir satt. Så vanligvis er det beste å la LaTeX gjøre jobben sin og ikke prøve å tvinge plassering av figurer på bestemte steder. Dette betyr også at du bør unngå å bruke setninger som «in the following figure: ”, som krever at figuren skal angis en bestemt plassering, og bruk“ in Figure~\ref{..} “i stedet, og utnytt LaTeXs kryssreferanser.

Hvis du av en eller annen grunn virkelig vil at en bestemt figur skal plasseres “HER”, og ikke der LaTeX vil sette den, så bruk [H] valg av pakken “ float ” som i utgangspunktet gjør den flytende figuren til en vanlig ikke-float.

Vær også oppmerksom på at hvis du ikke vil legge til en caption til figuren din, så trenger du ikke å bruke figure -miljøet i det hele tatt! Du kan bruke kommandoen \includegraphics hvor som helst i dokumentet for å sette inn et bilde.

Kommentarer

  • takk for å merke dette! Jeg var ikke ‘ ikke klar over endringen. H virker ikke ‘ t fungerer uten noen pakker, men fungerer ikke med å laste float. Er H fra float det samme som !h?
  • nei , [! h] endres uansett av de fleste dokumentklasser til [! ht]. Og betydningen av h er bare: her, hvis mulig, men ikke absolutt her. Den! lar LaTeX minimere alle tellere og lengder som refererer til flytende miljøer.
  • takk, jobbet for meg! Jeg lar latex vanligvis plassere det der det vil, men noen ganger trenger jeg det der jeg vil.
  • For dokumenter som ikke er ment å skrives ut, er det ingen grunn til å prøve å lagre papir, så store områder med mellomrom er ikke ‘ et problem. Så det er ‘ mye bedre å ha figuren som bryter teksten på det mest logiske punktet, i stedet for å flyte et annet sted. Disse vanskelige konvensjonene vil gå akkurat som latin gikk.
  • Jeg tror ikke ‘ Jeg tror ikke de vanlige bekymringene handler om å spare plass, i stedet for å stilistisk prøve å finne det beste. sted hvor du skal plassere en figur, tabell osv.

Svar

gjør ikke bruk et flytende miljø hvis du ikke vil at det skal flyte.

\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

  • Hei @Herbert – tusen takk for dette svaret! Jeg hadde aldri før forstått at \begin{figure} er et flytende miljø – mens \begin{minipage} er ikke ! Jeg hadde et problem med å ønske å inkludere et bilde nederst på siden med tekst, og ikke engang [H] hjalp; bare dette! Jeg byttet akkurat ut minipage for figure og captionof for caption – og til slutt fikk det jeg ville !! Tusen takk igjen, skål!
  • Hvorfor bruker du en \makebox? Ser det ikke likt ut uten det?
  • @Tobi: hvis bildet ikke er større enn \textwidth ja, ellers ikke!\makebox sentrerer bildet uavhengig av bredden
  • Dette var så veldig nyttig; IMHO dette bør være det aksepterte svaret ettersom det fungerer mer som forventet som det for tiden aksepterte.

Svar

En løsning som ikke er nevnt av noen av de andre svarene som bare ordnet meg, er å bruke \clearpage

Ingen spesielle pakker er nødvendig.

\clearpage tvinger alle figurene over den i .tex -filen til å skrives ut før du fortsetter med teksten. Dette kan gi store hvite mellomrom.

For meg var dette den beste løsningen fordi jeg ikke trengte å endre noen av formateringen, og det sørget bare for at alle figurene ble skrevet ut før neste tekstbit. Problemet mitt var en del av dokumentet med mange figurer og ikke mye tekst.

Kommentarer

  • Enkel og effektiv løsning, takk !!

Svar

Du kan nå bruke adjustbox -pakken til å gjøre boksegjenstandene dine til en ikke-flytende flyterstatning ved hjelp av nofloat=<type> -tasten. Tekst og etikett kan legges til med egne nøkler, før nofloat. For sentrering kan center -tasten brukes. For å legge til den vertikale plassen, bruk vspace -tasten. Denne løsningen har fordelen at du også kan bruke alle de mange andre funksjonene i adjustbox for å endre innholdet (min / maks skalering, innramming osv.)

Merk at hvis figurinnholdet bare er et enkelt bilde, kan du bare bruke de samme tastene på \adjustbox og få en one-liner. Hvis alt du vil ha er en tabell, er det tabular -tasten for {adjustbox}.

Hvis du senere vil endre den til en ekte flottør bare vri nofloat til float og fjern vspace -tasten. adjustbox plasserer bildeteksten øverst for table s og nederst for figure s. Dette kan endres ved å bruke tastene captionbelow eller captionabove i stedet for caption. Se adjustox manualen for alle alternativer.

Hvis du ikke vil bokse innholdet, kan du fortsatt bruke adjustbox -pakken, da den gir {adjnofloat}{<type>} miljø. Det brukes internt til å implementere nofloat -tasten. Brukere kan enten definere dette miljøet på nytt for å endre eller lappe nofloat atferd eller bruke miljøet direkte. Miljøet bruker veldig lik kode som i Herberts svar .


Eksempler på bruk:

\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:

skriv inn bildebeskrivelse her

Svar

Bruk [ht!] for å være mer ettertrykkelig om plassering. Hvis du vil at teksten skal følge figuren, i stedet for å begynne før, bruk \usepackage{parskip} i innledningen din, og la det være mellomrom før teksten det gjelder.

Jeg bruker også \vspace{} eller før figurmiljøet for å manipulere rommet mellom tekst og figur for å gi et mer balansert utseende. Jeg har ikke noen problemer på denne måten, selv med mer komplekse multifigurmiljøer som bruker \subfigure.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *