Alinhamento vertical para figuras

Oct 08 2020

Considere o seguinte código.

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

O resultado é:

e

Minha pergunta é por que a primeira figura não está centrada verticalmente e como posso torná-la centralizada sem alterar o htbpparâmetro .

Respostas

1 EladDen Oct 08 2020 at 21:51

A maneira mais fácil seria preencher a figura com algum espaço vertical:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htbp]
  \vspace{5cm}
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Outra opção, talvez até melhor, seria preencher a imagem com \vfill

\documentclass{article}
\usepackage{graphicx}

\begin{document}
\null
\vfill
\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\vfill

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Observe que você precisa de \ null no início para dar ao LaTeX algo para fazer referência.

Quanto a POR QUE esse fenômeno ocorre. Eu diria que isso tem a ver com a forma como o LaTeX compõe do topo da página para baixo. Se você adicionar \newpageou \clearpageentre as duas imagens, a segunda também não será centralizada.

A primeira página é uma página normal na qual posiciona a figura aqui [h] e no topo [t]. A segunda página é uma página de figura [p] na qual a figura está centrada. Se você definir \newpagea segunda página seria uma página "normal" e a figura também seria colocada no topo.

- EDITAR -

A melhor opção depende da página de perguntas frequentes . Defina o contador totalnumbercomo 0 para que cada figura seja empurrada para uma página de figura, mesmo que seja a primeira e possa caber no texto. Além disso, defina uma separação muito grande entre os flutuadores fpsep, para forçar cada um a sua própria página:

\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}

\setcounter{totalnumber}{0}
\makeatletter
\setlength\@fpsep{\textheight}
\makeatother

\begin{document}
%\lipsum[1-2] %with or without text, the figure will get pushed to a float page

\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}


\begin{figure}[htbp]
  \includegraphics[width = \linewidth]{example-image-golden}
\end{figure}
\end{document}

Isso é uma espécie de hack: definir o contador para 0 basicamente significa que o LaTeX simplesmente não pode colocar a figura aqui [h], em cima [t] ou embaixo [b]. Isso ocorre porque você não pode ter texto e uma figura na mesma página. Isso força qualquer figura a ir para a página de carros alegóricos.