Mam problem, gdy kwestionuje się wiele liczb. Niektóre figury mają tendencję do „latania”, to znaczy są akapitami poniżej, chociaż umieściłem je przed tym akapitem. Używam kodu:
\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}
do umieszczania moich figurek. Jak mogę powiedzieć lateksowi, że NAPRAWDĘ chcę, aby figura znajdowała się w tym konkretnym miejscu, bez względu na to, ile pozostanie spacji?
Komentarze
Odpowiedź
Krótka odpowiedź: użyj pakietu „ float ”, a następnie [H]
opcja dla twojej figury.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
Dłuższa odpowiedź: Domyślnym zachowaniem liczb jest unoszenie się, aby LaTeX mógł znaleźć najlepszy sposób na ułożenie ich w dokumencie i poprawienie ich wyglądu. Jeśli spojrzysz, tak często składa się książki. Dlatego zazwyczaj najlepiej jest po prostu pozwolić LaTeXowi wykonać swoją pracę i nie próbować wymuszać umieszczania figur w określonych miejscach. Oznacza to również, że należy unikać używania wyrażeń takich jak „in the following figure:
”, co wymaga ustawienia określonej lokalizacji na rysunku i zamiast tego użyj„ in Figure~\ref{..}
”, korzystając z odsyłaczy LaTeX.
Jeśli z jakiegoś powodu naprawdę chcesz, aby jakaś konkretna figura została umieszczona „TUTAJ”, a nie tam, gdzie LaTeX chce ją umieścić, użyj [H]
opcja pakietu „ float ”, która w zasadzie zamienia pływającą figurę w zwykłą niepływającą.
Zwróć też uwagę, że jeśli nie chcesz dodawać caption
do swojej figury, więc nie musisz w ogóle używać środowiska figure
! Możesz użyć polecenia \includegraphics
w dowolnym miejscu w dokumencie, aby wstawić obraz.
Komentarze
- dzięki za zauważenie tego! Nie ' nie wiedziałem o zmianie.
H
nie ' Wydaje się, że nie działa bez żadnych pakietów, ale ładuje sięfloat
. CzyH
fromfloat
to to samo co!h
? - nie , [! h] i tak jest zmieniane przez większość klas dokumentów na [! ht]. A znaczenie h jest tylko: tutaj, jeśli to możliwe, ale nie tutaj. The! pozwala LaTeX na zminimalizowanie wszystkich liczników i długości, które odnoszą się do środowisk pływających.
- Dzięki, pracował dla mnie! Zwykle pozwalam lateksowi umieszczać go tam, gdzie chce, ale czasami po prostu potrzebuję go tam, gdzie chcę.
- W przypadku dokumentów, które nie mają być drukowane, nie ma powodu, aby próbować zapisywać papier, więc duże obszary białych znaków nie są ' problemem. Dlatego ' znacznie lepiej jest, gdy liczba łamie tekst w najbardziej logicznym miejscu, zamiast unosić się w innym miejscu. Te niezręczne konwencje będą przebiegać tak samo jak łacina.
- Nie ' nie sądzę, że zwykłe obawy dotyczą oszczędzania miejsca, a nie stylistycznego szukania najlepszego miejsce, gdzie umieścić figurę, tabelę itp.
Odpowiedź
rób nie użyj środowiska pływającego, jeśli nie chcesz, aby było pływające.
\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}
lub
\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center}
Komentarze
- Cześć @Herbert – bardzo dziękuję za tę odpowiedź! Nigdy wcześniej nie rozumiałem, że
\begin{figure}
to środowisko pływające – podczas gdy\begin{minipage}
nie ! Miałem problem z chęcią umieszczenia obrazu na dole strony z tekstem, a nawet[H]
nie pomogło; tylko to! Właśnie wymieniłemminipage
nafigure
– icaptionof
nacaption
– i wreszcie dostałem to, czego chciałem !! Jeszcze raz wielkie dzięki, okrzyki! - Dlaczego używasz
\makebox
? Czy bez niego nie wygląda tak samo? - @Tobi: jeśli obraz nie jest większy niż
\textwidth
tak, w przeciwnym razie nie!\makebox
wyśrodkowuje obraz niezależnie od jego szerokości - To było bardzo pomocne; IMHO to powinna być zaakceptowana odpowiedź, ponieważ działa bardziej zgodnie z oczekiwaniami, jak obecnie akceptowana.
Odpowiedź
Jednym z rozwiązań niewymienionych w żadnej z odpowiedzi, które właśnie mnie rozwiązały, jest użycie \clearpage
Nie są potrzebne żadne specjalne pakiety.
\clearpage
wymusza wydrukowanie wszystkich cyfr nad nim w pliku .tex
przed kontynuowaniem tekstu. Może to spowodować pozostawienie dużych białych przestrzeni.
Dla mnie to było najlepsze rozwiązanie, ponieważ nie musiałem zmieniać żadnego formatowania i po prostu upewniłem się, że wszystkie figury zostały wydrukowane przed kolejnym fragmentem tekstu. Mój problem był częścią dokumentu, zawierającą dużo rysunków i niewiele tekstu.
Komentarze
- Proste i skuteczne rozwiązanie, dzięki !!
Odpowiedź
Możesz teraz użyć pakietu adjustbox
, aby zamienić swoje zapakowane rzeczy w niepływający element zastępczy za pomocą nofloat=<type>
. Podpis i etykietę można dodać za pomocą własnych kluczy, przed nofloat
. Do wyśrodkowania można użyć klucza center
. Aby dodać spację w pionie, użyj klawisza vspace
. To rozwiązanie ma tę zaletę, że możesz również użyć wszystkich wielu innych funkcji adjustbox
do modyfikowania treści (skalowanie min / max, kadrowanie itp.)
Zauważ, że jeśli zawartość rysunku to tylko pojedynczy obraz, możesz po prostu użyć tych samych klawiszy na \adjustbox
i uzyskać jednolinijkowy. Jeśli chcesz tylko tabelaryczne, to jest klucz tabular
dla {adjustbox}
.
Jeśli chcesz później zmień go na prawdziwy zmiennoprzecinkowy, po prostu zmień nofloat
na float
i usuń klucz vspace
. adjustbox
umieszcza podpis na górze dla table
si i na dole dla figure
s. Można to zmienić za pomocą klawiszy captionbelow
lub captionabove
zamiast caption
. Wszystkie opcje znajdziesz w instrukcji adjustox
.
Jeśli nie chcesz umieszczać treści w ramkach, nadal możesz użyć pakietu adjustbox
, ponieważ zawiera on {adjnofloat}{<type>}
. Jest używany wewnętrznie do implementacji klucza nofloat
. Użytkownicy mogą przedefiniować to środowisko, aby zmienić lub załatać zachowanie nofloat
lub użyć bezpośrednio do środowiska. Środowisko używa kodu bardzo podobnego jak w odpowiedzi Herbertsa .
Przykłady użycia:
\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}
Część wyniku:
Odpowiedź
Użyj [ht!]
, aby być bardziej z naciskiem na umieszczanie. Jeśli chcesz, aby tekst podążał za rysunkiem, zamiast zaczynać przed nim, zastosuj \usepackage{parskip}
w preambule i zostaw spację przed odpowiednim tekstem.
Zatrudniam również \vspace{}
lub przed środowiskiem rysunku, aby manipulować odstępem między tekstem a rysunkiem, aby uzyskać bardziej zrównoważony wygląd. W ten sposób nie mam żadnych problemów, nawet w bardziej złożonych środowiskach z wieloma figurami, w których używa się \subfigure
.
center
, ale polecenie\centering
dla liczb. Zobacz Czy powinienem używać środkowania lub środkowania dla rysunków i tabel?\FloatBarrier
gdzieś pomiędzy rysunkiem a akapitem. Zmusza wszystkie figury zdefiniowane przed poleceniem do renderowania przed tym punktem w tekście. Aby użyć polecenia, musisz dodać\usepackage{placeins}
w preambule. Czasami uważam to za bardzo przydatne.