Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Table does not show up at the same position it was inserted in the TeX file. I got the understanding through bit of reading on this forum that they are floats and they pick the best place on the current or next page.

Because of this the text written below the table in TeX file ends up showing on the previous page. Is there any way to make the table appear in the same place as it was put in the TeX file.

In my case I created a table and below that I wrote "as shown in the above table..." but when I created the PDF it appeared on the previous page and there was no table there. One workaround is refer to the table # but I was wondering if there is any better way. I am using \begin{table}[!ht]

share|improve this question
add comment

2 Answers 2

up vote 24 down vote accepted

Suppressing floating is often not the best option. But it may be done, for example using the float package:

\usepackage{float}
...
\begin{figure}[H]
...

Often choosing further placement options would be sufficient, such as

\begin{figure}[!htbp]

Or set a barrier which may not be crossed by floats:

\usepackage{placeins}
...
\FloatBarrier
\begin{figure}[H]
...
share|improve this answer
    
Great! The \FloatBarrier trick was really useful for me. –  Andrea Spadaccini Feb 14 '11 at 15:56
    
Very helpful for me. It fixed my table floating problem. Thanx –  user21670 Nov 2 '12 at 11:17
add comment

To avoid discrepancies between phrases like "as shown in the above table" and the actual table position, one may either supress floating of tables or employ the varioref package for "intelligent" cross-referencing. Here's an example using varioref.

\documentclass{article}

\usepackage{varioref}

\begin{document}

\begin{table}
\centering
(Content of first table)
\caption{A table}
\label{tab:first}
\end{table}

\clearpage

For the first topic see the \vpageref[above table][table ]{tab:first}.

OR: For the first topic see table~\vref{tab:first}.

\begin{table}
\centering
(Content of second table)
\caption{Another table}
\label{tab:second}
\end{table}

For the second topic see the \vpageref[above table][table ]{tab:second}.

OR: For the first topic see table~\vref{tab:second}.

\end{document}
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.