Figura do TikZ sempre posicionada no centro de uma nova página

Figura do TikZ sempre posicionada no centro de uma nova página

Eu me deparo com esse problema bastante estranho ao usar o TikZ com LyX 2. Eu tenho esse gráfico programado usando o TikZ e ele deve seguir um parágrafo de texto e ser posicionado no topo da próxima nova página. Em vez disso, ele é posicionado exatamente no centro da nova página, deixando um espaço entre o texto e ele mesmo. No meu documento, coloco o código tex da figura imediatamente após o próprio texto com um espaço, e o código TikZ é o seguinte.

\usetikzlibrary{shapes}
\usetikzlibrary{fit}
\usetikzlibrary{calc}
\usetikzlibrary{arrows}
\begin{figure}[ht!]
    \centering
    \begin{tikzpicture} [label distance=2mm,
        vertice/.style={circle, fill=gray!30, thick, inner sep=0pt, minimum size=7mm},
        dot/.style={shape=circle, fill=black, minimum size=2pt, inner sep=0pt, outer sep=2pt}]
        \node [vertice] (a) at (0,7) {$t_1$};
        \node [vertice] (b) at (0,6) {$t_2$};
        \node [vertice] (c) at (0,5) {$t_3$};
        \node [dot] (d) at ($(c) + (270:1)$) {};
        \node [dot] (e) at ($(d) + (270:0.5)$) {};
        \node [dot] (f) at ($(e) + (270:0.5)$) {};
        \node[draw, ellipse, label=below:$T$, fit=(a) (b) (c) (d) (e) (f)] {};\node [vertice] (h) at (5,7) {$a_1$};
        \node [vertice] (i) at (5,6) {$a_2$};
        \node [vertice] (j) at (5,5) {$a_3$};
        \node [dot] (k) at ($(j) + (270:1)$) {};
        \node [dot] (l) at ($(k) + (270:0.5)$) {};
        \node [dot] (m) at ($(l) + (270:0.5)$) {};
        \node[draw, ellipse, label=below:$A$, fit=(h) (i) (j) (k) (l) (m)] {};

        \path (h) edge [-stealth, auto, swap] node {$w_1$} (a)
                  edge [-stealth, auto] node[below, sloped] {$w_2$} (e)
            (i) edge [-stealth, auto, swap] node {$w_3$} (b)
            (j) edge [-stealth, auto] node[below, sloped] {$w_4$} (a)
                  edge [-stealth, auto] node[above, sloped] {...} (f)
              (k) edge [-stealth, auto] node[above, sloped] {...} (c)
              (l) edge [-stealth, auto] node[below, sloped] {...} (d)
              (m) edge [-stealth, auto] node {...} (f);
    \end{tikzpicture}
    \caption{A graph $G$}
\end{figure}

Alguma sugestão de como isso pode ser corrigido?

Estou usando a classe de documento Springer LNCS, se isso faz alguma diferença.

Responder1

Se a figura estiver na última página sem nenhum texto a seguir, ela será centralizada conforme ilustrado pelo MWE abaixo (se você comentar a \setlengthlinha).

ConformeLayout vertical de páginas flutuantesos valores que controlam as distâncias entre os carros alegóricos são:

\@fptopdefine a distância do topo da página ao topo do primeiro ponto flutuante,

\@fpsepdefine a separação entre carros alegóricos, e

\@fpbotdefine a distância da parte inferior do último ponto flutuante da página até a parte inferior da página.

e os valores padrão são:

\@fptop = 0pt + 1fil
\@fpsep = 8pt + 2fil
\@fpbot = 0pt + 1fil

Portanto, definir \@fptopalgo sem o 1fill, alcança o resultado desejado.

\documentclass{article}
\usepackage[demo]{graphicx}% Remove [demo] option in real use
\usepackage[showframe]{geometry}
\usepackage{lipsum}

\makeatletter% Set distance from top of page to first float
\setlength{\@fptop}{5pt}
\makeatother

\begin{document}
\lipsum[1-5]
\begin{figure}[ht!]
    \centering
    \includegraphics{foo}
    \caption{A graph $G$}
\end{figure}
\end{document}

informação relacionada