Tenho um problema quando há muitas figuras em questão. Algumas figuras tendem a “voar por aí”, ou seja, estar um parágrafo abaixo, embora eu as tenha colocado antes desse parágrafo. Eu uso o código:
\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}
para colocar minhas figuras. Como posso dizer ao látex que REALMENTE quero a figura naquele lugar específico, não importa quanto espaço em branco sobrará?
Comentários
Resposta
A resposta curta: use o pacote “ float ” e depois o [H]
opção para sua figura.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
A resposta mais longa: O comportamento padrão das figuras é flutuar, para que o LaTeX possa encontrar a melhor maneira de organizá-las em seu documento e torná-lo melhor. Se você der uma olhada, é assim que os livros costumam ser compostos. Portanto, normalmente a melhor coisa a fazer é deixar o LaTeX fazer seu trabalho e não tentar forçar a colocação de figuras em locais específicos. Isso também significa que você deve evitar o uso de frases como “in the following figure:
”, que exige que a figura seja definida em um local específico e use“ in Figure~\ref{..}
“, aproveitando as referências cruzadas do LaTeX.
Se por algum motivo você realmente quiser que alguma figura específica seja colocada “AQUI”, e não onde o LaTeX deseja colocá-la, use o [H]
opção do pacote “ float ” que basicamente transforma a figura flutuante em um não flutuante regular.
Observe também que, se você não queira adicionar um caption
à sua figura, então você não precisa usar o ambiente figure
de forma alguma! Você pode usar o comando \includegraphics
em qualquer lugar do documento para inserir uma imagem.
Comentários
- obrigado por notar isso! Eu não estava ‘ ciente da mudança.
H
não ‘ não parece funcionar sem nenhum pacote, mas funciona ao carregarfloat
.H
defloat
é o mesmo que!h
? - não , [! h] é alterado de qualquer maneira pela maioria das classes de documentos para [! ht]. E o significado de h é apenas: aqui, se possível, mas não absolutamente aqui. O ! permite que o LaTeX minimize todos os contadores e comprimentos que se referem a ambientes flutuantes.
- obrigado, funcionou para mim! Normalmente deixo o látex colocá-lo onde quiser, mas às vezes simplesmente preciso onde quero.
- Para documentos que não devem ser impressos, não há motivo para tentar e salvar papel, então grandes áreas de espaço em branco não são ‘ um problema. Portanto, é ‘ muito melhor ter a figura quebrando o texto no ponto mais lógico, em vez de flutuando em outro lugar. Essas convenções estranhas serão como o latim.
- Eu não ‘ não acho que as preocupações usuais sejam sobre como economizar espaço, em vez de tentar encontrar o melhor estilisticamente lugar onde colocar uma figura, tabela, etc.
Resposta
não não use um ambiente flutuante se não quiser que ele flutue.
\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}
ou
\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center}
Comentários
- Olá @Herbert – MUITO obrigado por esta resposta! Eu nunca tinha entendido que
\begin{figure}
é um ambiente flutuante – enquanto\begin{minipage}
não ! Tive um problema em querer incluir uma imagem no final da página com texto e nem mesmo[H]
ajudou; só isso! Acabei de substituirminipage
porfigure
– ecaptionof
porcaption
– e finalmente consegui o que queria !! Muito obrigado novamente, saúde! - Por que você usa um
\makebox
? Não parece o mesmo sem ele? - @Tobi: se a imagem não for maior do que
\textwidth
sim, caso contrário, não!\makebox
centraliza a imagem independentemente de sua largura - Isso foi muito útil; IMHO, esta deve ser a resposta aceita, pois funciona mais conforme o esperado do que a atualmente aceita.
Resposta
Uma solução não mencionada por nenhuma das outras respostas que apenas me resolveram é usar \clearpage
Nenhum pacote especial é necessário.
\clearpage
força todas as figuras acima dele no arquivo .tex
a serem impressas antes de continuar com o texto. Isso pode deixar grandes espaços em branco.
Para mim esta foi a melhor solução porque não tive que alterar nenhuma formatação e apenas certifiquei-me de que todas as figuras eram impressas antes da próxima parte do texto. Meu problema era uma parte do documento com muitas figuras e pouco texto.
Comentários
- Solução simples e eficaz, obrigado !!
Resposta
Agora você pode usar o pacote adjustbox
para transformar seu material embalado em um substituto flutuante não flutuante usando o nofloat=<type>
chave. A legenda e o rótulo podem ser adicionados pelas próprias chaves, antes de nofloat
. Para centralizar a center
chave pode ser usada. Para adicionar o espaço vertical, use a tecla vspace
. Esta solução tem a vantagem de que você também pode usar todos os muitos outros recursos de adjustbox
para modificar o conteúdo (escala mín. / Máx., Enquadramento etc.)
Observe que se o conteúdo da figura for apenas uma única imagem, você pode usar as mesmas teclas em \adjustbox
e obter uma linha única. Se você quiser apenas uma tabela, existe a tabular
chave para {adjustbox}
.
Se você quiser mais tarde altere-o para um flutuador real apenas gire nofloat
para float
e remova a chave vspace
. adjustbox
coloca a legenda na parte superior para table
se na parte inferior para figure
s. Isso pode ser alterado usando as chaves captionbelow
ou captionabove
em vez de caption
. Consulte o adjustox
manual para todas as opções.
Se você não quiser encaixotar o conteúdo, ainda pode usar o pacote adjustbox
, pois ele fornece o {adjnofloat}{<type>}
ambiente. É usado internamente para implementar a chave nofloat
. Os usuários podem redefinir este ambiente para alterar ou corrigir o nofloat
comportamento ou usar o ambiente diretamente. O ambiente usa um código muito semelhante ao da resposta de Herberts .
Exemplos de uso:
\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}
Parte do resultado:
Resposta
Use [ht!]
para ser mais enfático sobre o posicionamento. E, se você quiser que o texto siga a figura, em vez de começar antes, use \usepackage{parskip}
em seu preâmbulo e deixe um espaço antes do texto em questão.
Eu também emprego \vspace{}
ou antes do ambiente da figura para manipular o espaço entre o texto e a figura para dar uma aparência mais equilibrada. Não tenho nenhum problema dessa forma, mesmo com ambientes multifiguras mais complexos que empregam \subfigure
.
center
ambiente, mas o comando\centering
para figuras. Veja Devo usar centro ou centralização para figuras e tabelas?\FloatBarrier
em algum lugar entre a figura e o parágrafo. Ele força todas as figuras definidas antes do comando a serem renderizadas antes desse ponto no texto. Você precisará adicionar\usepackage{placeins}
no preâmbulo para usar o comando. Às vezes, acho isso muito útil.