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

  • Nota lateral: Não ‘ t use o center ambiente, mas o comando \centering para figuras. Veja Devo usar centro ou centralização para figuras e tabelas?
  • Para colocar definitivamente um parágrafo após uma figura, use o comando \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.

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 carregar float. H de float é 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 substituir minipage por figure e captionof por caption – 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:

insira a descrição da imagem aqui

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *