Sweave xtable: how to position tables between text?

griffin picture griffin · Jul 1, 2010 · Viewed 13k times · Source

I have a number of tables with text around them describing them. Something like this:

This table shows blah blah...

<<echo=FALSE, results=tex>>=
print(
    xtable(x,
        caption = "blah", label = "tab:four", table.placement = "tbp", caption.placement = "top")
  , size = "small", table.placement="ht")
@

This table shows blah blah...

<<echo=FALSE, results=tex>>=
print(
    xtable(x,
        caption = "blah", label = "tab:five", table.placement = "tbp", caption.placement = "top")
  , size = "small", table.placement="ht")
@

I want all my descriptive text to be in line with the tables so that they follow in the sequence that I am writing them. But around the end of a page, some tables move off onto the next page and the descriptive text is just free floating. Is there some particular table.placement command that will ensure that everything stays the way that it is written?

Answer

nullglob picture nullglob · Jul 1, 2010

The latex float package provides the float specifier H, which allows you to force tables and figures to be precisely in the location they occur in the latex code. For example:

\usepackage{float} 

...

<<echo=FALSE, results=tex>>=
print(xtable(x),table.placement="H")
@