
Я столкнулся с этой довольно странной проблемой при использовании TikZ с LyX 2. У меня есть этот график, запрограммированный с помощью TikZ, и он должен следовать за абзацем текста и располагаться в верхней части следующей новой страницы. Вместо этого он располагается точно по центру новой страницы, оставляя кусок пространства между текстом и собой. В своем документе я размещаю код tex для рисунка сразу после самого текста с пробелом, а код TikZ выглядит следующим образом.
\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}
Есть ли какие-нибудь предложения, как это можно исправить?
Я использую класс документов Springer LNCS, если это имеет значение.
решение1
Если рисунок находится на самой последней странице и за ним нет текста, он выравнивается по центру, как показано ниже с помощью MWE (если вы закомментируете строку \setlength
).
СогласноВертикальное расположение плавающих страницзначения, контролирующие расстояния между поплавками:
\@fptop
определяет расстояние от верха страницы до верха первого плавающего элемента,
\@fpsep
определяет разделение между поплавками и
\@fpbot
определяет расстояние от низа последнего плавающего элемента на странице до низа страницы.
и значения по умолчанию:
\@fptop = 0pt + 1fil
\@fpsep = 8pt + 2fil
\@fpbot = 0pt + 1fil
Таким образом, установка \@fptop
чего-либо без 1fill
, позволяет достичь желаемого результата.
\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}