Am o problemă când sunt în discuție o mulțime de figuri. Unele figuri tind să „zboare”, adică să fie un paragraf mai jos, deși le-am plasat înaintea acelui paragraf. Folosesc codul:
\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}
pentru a-mi plasa cifrele. Cum pot să spun latex Îmi doresc cu adevărat figura în acel loc specific, indiferent cât de mult spațiu va rămâne?
Comentarii
Răspuns
Răspunsul scurt: utilizați pachetul „ float ” și apoi [H]
opțiune pentru figura dvs.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
Răspunsul mai lung: Comportamentul implicit al cifrelor este să plutească, astfel încât LaTeX să poată găsi cel mai bun mod de a le aranja în documentul dvs. și de a-l face să arate mai bine. Dacă aveți o privire, acesta este modul în care cărțile sunt adesea tipărite. Deci, de obicei, cel mai bun lucru de făcut este doar să lăsați LaTeX să își facă treaba și să nu încercați să forțați plasarea figurilor în locații specifice. Acest lucru înseamnă, de asemenea, că ar trebui să evitați utilizarea unor expresii precum „in the following figure:
”, care necesită ca figura să fie setată într-o anumită locație și să utilizeze„ in Figure~\ref{..}
“în loc, profitând de referințele încrucișate ale LaTeX.
Dacă dintr-un anumit motiv într-adevăr doriți ca o anumită figură să fie plasată „AICI” și nu unde vrea LaTeX să o pună, atunci utilizați [H]
opțiunea pachetului „ float ”, care transformă în esență figura plutitoare într-un non-float obișnuit.
Rețineți, de asemenea, că nu doriți să adăugați un caption
la cifra dvs., atunci nu trebuie să utilizați deloc mediul figure
! Puteți utiliza comanda \includegraphics
oriunde în documentul dvs. pentru a insera o imagine.
Comentarii
- mulțumesc pentru că am remarcat acest lucru! Nu eram ‘ t conștient de schimbare.
H
nu ‘ pare să funcționeze fără pachete, dar funcționează încărcândfloat
. EsteH
dinfloat
la fel ca!h
? - nu , [! h] este oricum modificat de majoritatea claselor de documente în [! ht]. Și semnificația lui h este doar: aici, dacă este posibil, dar nu absolut aici. The! permite LaTeX să reducă la minim toate contoare și lungimi care se referă la medii plutitoare.
- mulțumesc, a funcționat pentru mine! De obicei, las latexul să-l plaseze acolo unde vrea, dar uneori pur și simplu am nevoie acolo unde vreau.
- Pentru documentele care nu sunt destinate tipăririi, nu există niciun motiv pentru a încerca să salvați hârtie, astfel încât suprafețele mari ale spațiului alb nu sunt ‘ o problemă. Deci, este ‘ mult mai bine să aveți figura care sparge textul în punctul cel mai logic, decât să plutească în altă parte. Aceste convenții incomode vor merge la fel ca latina.
- Nu cred că ‘ nu cred că preocupările obișnuite sunt legate de economisirea spațiului, decât de încercarea stilistică de a găsi cele mai bune locul unde se plasează o figură, un tabel etc.
Răspuns
nu nu utilizați un mediu plutitor dacă nu doriți ca acesta să plutească.
\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}
sau
\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center}
Comentarii
- Bună @Herbert – mulțumesc MULȚI pentru acest răspuns! Nu am mai înțeles până acum că
\begin{figure}
este un mediu plutitor – în timp ce\begin{minipage}
nu ! Am avut o problemă cu dorința de a include o imagine în partea de jos a paginii cu text și nici măcar[H]
nu a ajutat; doar asta! Tocmai am înlocuitminipage
pentrufigure
– șicaptionof
caption
– și în sfârșit am primit ceea ce îmi doream !! Vă mulțumim din nou, noroc! - De ce folosiți un
\makebox
? Nu arată la fel fără ea? - @Tobi: dacă imaginea nu este mai mare decât
\textwidth
da, altfel nu!\makebox
centrează imaginea independent de lățimea sa - Acest lucru a fost foarte util; IMHO, acesta ar trebui să fie răspunsul acceptat, deoarece funcționează mai mult așa cum era de așteptat ca cel acceptat în prezent.
Răspuns
O soluție care nu a fost menționată de niciunul dintre celelalte răspunsuri care tocmai m-au sortat este să folosesc \clearpage
Nu sunt necesare pachete speciale.
\clearpage
forțează toate cifrele de deasupra acestuia din fișierul .tex
să fie tipărite înainte de a continua cu textul. Acest lucru poate lăsa spații albe mari.
Pentru mine, aceasta a fost cea mai bună soluție, deoarece nu a trebuit să schimb niciunul din formatare și s-a asigurat doar că toate cifrele au fost tipărite înainte de următorul fragment de text. Numărul meu a fost o parte a documentului cu multe cifre și nu prea mult text.
Comentarii
- Soluție simplă și eficientă, mulțumesc !!
Răspuns
Acum puteți utiliza pachetul adjustbox
pentru a transforma lucrurile în cutie într-un înlocuitor plutitor non-plutitor utilizând nofloat=<type>
cheie. Subtitrarea și eticheta pot fi adăugate prin propriile chei, înainte nofloat
. Pentru centrare, se poate utiliza tasta center
. Pentru a adăuga spațiul vertical, utilizați tasta vspace
. Această soluție are avantajul că puteți utiliza și multe alte caracteristici ale adjustbox
pentru a modifica conținutul (scalare min / max, încadrare etc.)
Rețineți că, dacă conținutul figurii este doar o singură imagine, puteți utiliza aceleași taste pe \adjustbox
și puteți obține un singur liner. Dacă tot ce doriți este un tabel, atunci există cheia tabular
pentru {adjustbox}
.
Dacă mai târziu doriți să schimbați-l într-un float real, pur și simplu rotiți nofloat
în float
și eliminați cheia vspace
. adjustbox
plasează subtitrarea deasupra pentru table
și în partea de jos pentru figure
s. Acest lucru poate fi modificat utilizând tastele captionbelow
sau captionabove
în loc de caption
. Consultați manualul adjustox
pentru toate opțiunile.
Dacă nu doriți să boxați conținutul, puteți utiliza în continuare pachetul adjustbox
deoarece oferă {adjnofloat}{<type>}
mediu. Este utilizat intern pentru a implementa cheia nofloat
. Utilizatorii pot redefini acest mediu pentru a schimba sau corecta comportamentul nofloat
sau utiliza mediul înconjurător. Mediul utilizează coduri foarte similare ca în Herberts answer .
Exemple de utilizare:
\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}
O parte din rezultat:
Răspuns
Utilizați [ht!]
pentru a fi mai mult emfatic cu privire la plasare. Și, dacă doriți ca textul să urmeze figura, în loc să înceapă înainte, utilizați \usepackage{parskip}
în preambulul dvs. și lăsați un spațiu înainte de textul în cauză.
De asemenea, folosesc \vspace{}
sau înainte de mediul figura pentru a manipula spațiul dintre text și figură pentru a da un aspect mai echilibrat. Nu am probleme în acest fel, chiar și cu medii multifigure mai complexe care folosesc \subfigure
.
center
mediu, dar comanda\centering
pentru cifre. Consultați Ar trebui să folosesc centrul sau centrarea pentru figuri și tabele?\FloatBarrier
undeva între figură și paragraf. Forțează toate cifrele definite înainte de comandă să redea înainte de acel punct din text. Va trebui să adăugați\usepackage{placeins}
în preambul pentru a utiliza comanda. Uneori, am găsit acest lucru foarte util.