R,knitr并不尊重块和文本的顺序

时间:2016-04-02 00:01:17

标签: r latex knitr

想象一下,我编织了这个Rnw文件:

\documentclass{article}

\begin{document}

Table1
<<example,results='asis', echo=FALSE>>=
require(xtable)
nn <- 15
mydata <- data.frame(A=1:nn,C=nn:1, C=runif(nn), D=rnorm(nn))
xtable(mydata, caption="Table1")
@

Table2
<<example2,results='asis', echo=FALSE>>=
xtable(mydata, caption="Table2")
@

Table3
<<example3,results='asis', echo=FALSE>>=
xtable(mydata, caption="Table3")
@

\begin{obeylines}
Just some text 
\end{obeylines}


\end{document}

这是一个简单的例子,只打印一些文本和三个表。

奇怪的是,它并不尊重我在代码上写的内容的顺序。 我明白了(两个pdf页面的侧面视图) enter image description here

但&#34;表3&#34; text应该出现在table3本身之前和table2之后,而文本应该出现在#34;只是一些文本&#34;应该出现在文档的最后。

如果我在那里写了几行就会打破这些行。

据我所知,如果某张桌子不适合某个地方,则必须将其移至下一页,但应使用以下文字和表格。

我还观察到,在其他示例中,一些表格在不合适时会随机重新分配。

如何防止编织者这样做? 我不知道是编织问题还是乳胶。

我使用的是Texlive 2015,Rstudio,R 3.2.3和Windows 10以及所有相关软件包的最新版本。

1 个答案:

答案 0 :(得分:1)

默认情况下,print.xtable()会生成一个LaTeX \table{...}环境,该环境被定义为浮动对象。参见`?print.xtable并尝试例如。

<<example2,results='asis', echo=FALSE>>=
print(xtable(mydata, caption="Table2"),floating=FALSE)
@

(未经测试......)

或者你可以试试table.placement="H";您可能需要\usepackage{float}(请参阅this question from tex.stackexchange.com)。

(也未经测试......)