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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R,knitr不尊重块和文本的顺序相关的知识,希望对你有一定的参考价值。

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

documentclass{article}

egin{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")
@

egin{obeylines}
Just some text 
end{obeylines}


end{document}

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

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

但是“Table3”文本应该出现在table3本身之前和table2之后,文本“只是一些文本”应该出现在文档的最后。

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

我知道如果一个表不适合某个地方,它必须移动到下一页,但应该使用下面的文本和表格。

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

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

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

答案

默认情况下,print.xtable()会生成一个LaTeX able{...}环境,该环境被定义为浮动对象。参见`?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)。

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

以上是关于R,knitr不尊重块和文本的顺序的主要内容,如果未能解决你的问题,请参考以下文章

knitr 中 R 代码块和 LaTeX 的全局变量

R- knitr:kable - 如何显示没有列名的表格?

R Markdown、Knitr、Pandoc和Bookdown之间的关系

从函数返回 print xtable 包括转义字符 knitr r

当 listview 行项目中包含隐藏视图时,片段不尊重匹配父高度

R语言使用knitr生成机器学习模型全流程步骤示例:knitr与自动化结果报告knitr常用参数