Sou novo no Tex e esta pergunta talvez não esteja bem escrita, então tentarei explicá-la melhor.
Estou escrevendo um manual de referência onde existem muitos "blocos" que têm a mesma estrutura: um pedaço de texto (talvez um ou dois parágrafos curtos) e depois uma imagem (normalmente uma captura de tela).
Gostaria de poder definir tal bloco de forma que, ao exportar um documento para PDF, a saída fique na mesma página. Entendo que haverá algumas páginas meio preenchidas quando esse "bloco" começar e não caber na página atual. Nestes casos, espero que o bloco seja colocado inteiramente na próxima página.
Tenho brincado com \begin{samepage}
, \begin{minipage}
e coisas assim (pesquisando muito nesta mesma web) sem sorte. Obviamente estou fazendo algo errado ou adotando uma abordagem errada para resolver o problema.
Dê uma olhada no meu código:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Phasellus leo ipsum, dictum non auctor quis, euismod vitae enim. Mauris varius.
\begin{figure}[h]
\begin{center} \includegraphics[scale={0.7}]{IMG1} \end{center}
\caption{Image caption}
\label{fig:IMG1}
\end{figure}
Gostaria que todo esse texto (2 parágrafos) e uma figura estivessem sempre na mesma página.
Isso pode ser alcançado? Na verdade, pensei que tinha conseguido quando descobri \begin{minipage}
! Se for esse o caso, você pode escrever um pequeno código mostrando como usá-lo? (lembre-se que sou um novato e algumas coisas óbvias não são tão óbvias para mim agora).
Editar:Vou tentar a dica do @Werner, mas já estou usando um \newcommand para encurtar todo o ambiente \begin{figure} escrito anteriormente. Como isto:
\newcommand{\figureSF}[4]{
\begin{figure}[h]
\begin{center} \includegraphics[scale={#4}]{#1} \end{center}
\caption{#2}
\label{#3}
\end{figure}
}
Portanto, o trecho de código anterior se transforma em:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Phasellus leo ipsum, dictum non auctor quis, euismod vitae enim. Mauris varius.
\figureSF{IMG1}{Image caption}{fig:IMG1}{0.7}
Como este novo comando aceita apenas 4 parâmetros, existe uma maneira fácil de modificá-lo para lidar com a situação que você está descrevendo?
Responder1
Parece que você está escrevendo um monte de texto e, no meio, existem esses "blocos" que você deseja que sejam "mantidos juntos". Para isso, visto que atualmente você já utiliza um figure
ambiente para a imagem, você pode incluir o texto do parágrafo dentro do seu arquivo figure
. O TeX não se importa com o que está contido no ambiente - pode ser uma tabela, uma imagem, algum texto, o que for. Aqui está um pequeno exemplo:
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}
\lipsum[1-2]
\begin{figure}
\hrulefill\par
\lipsum[3-4]
\centering\includegraphics[scale={0.7}]{IMG1}
\caption{Some caption}\label{fig:label1}
\hrulefill
\end{figure}
\lipsum[5-6]
\lipsum[7-8]
\begin{figure}
\hrulefill\par
\lipsum[9-10]
\centering\includegraphics[scale={0.7}]{IMG2}
\caption{Some other caption}\label{fig:label2}
\hrulefill
\end{figure}
\lipsum[11-12]
\end{document}
Adicionei um \hrulefill
"bloco" acima e abaixo do flutuante para deixar claro que o conteúdo do texto flutua com a imagem. Além disso, a [demo]
opção degraphicx
é apenas para este exemplo, pois não tenho as imagens que você menciona/usa.
Observe que todas as restrições (e benefícios!) relacionadas ao float referem-se a esse uso. Por exemplo, a parte de texto/flutuante permitida na parte superior/inferior de uma página, etc.layouts
pacote documentação(seção6 layouts flutuantes, pág. 21).
Em termos de posicionamento da figura, consulteComo influenciar a posição de ambientes flutuantes como figura e tabela no LaTeX?(eManter tabelas/figuras próximas de onde são mencionadas).
Também é possível agrupar isso em um único comando:
\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\usepackage[demo]{graphicx}% http://ctan.org/pkg/graphicx
\newcommand{\figureSF}[5]{%
\begin{figure}[ht]
\hrulefill\par
#1\par\bigskip
\centering\includegraphics[scale=#5]{#2}
\caption{#3}\label{#4}
\hrulefill
\end{figure}
}
\begin{document}
\lipsum[1-2]
\figureSF{\lipsum[3-4]}{IMG1}{Some caption}{fig:label1}{0.7}
\lipsum[5-6]
\lipsum[7-8]
\figureSF{\lipsum[9-10]}{IMG2}{Some other caption}{fig:label2}{0.7}
\lipsum[11-12]
\end{document}