由于我正在使用 R,因此我使用该xtable
包在 Latex 中生成表格。有些表格只有旋转后才能适合页面。似乎总是sidewaystable
从新页面开始。我现在的问题是,各部分的顺序是错误的。旋转后的表格从新页面开始,但应该出现在旋转后的表格之后的部分现在直接打印在第二部分之后。以下是一个例子:
\documentclass{article}
\usepackage{float}
\usepackage{rotating}
\begin{document}
\section{first}
<<table1,echo=FALSE,results='asis',message=FALSE>>=
require(xtable)
t1 <- xtable(data.frame(a=rnorm(10),b=rnorm(10)))
print(t1)
@
\section{second}
<<table2,echo=FALSE,results='asis'>>=
t2 <- xtable(data.frame(z=rnorm(20),y=rnorm(20),x=rnorm(20)))
print(t2,floating.environment="sidewaystable")
@
\section{third}
<<table3,echo=FALSE,results='asis'>>=
t3 <- xtable(data.frame(z=rnorm(20),y=rnorm(20),x=rnorm(20)))
print(t3,floating.environment="sidewaystable")
@
\end{document}
我想要的是:
- 表格保持在正确的位置
- 没有开始新的一页(如果表格 2 适合,则应以水平模式打印在与表格 1 相同的页面上。如果没有足够的空间来打印整个表格,则应将其打印在下一页上。
有什么建议么?
答案1
问题是 R 表也是浮点数,因此您需要包含该floating=F
选项。然后可以旋转或旋转 R 块,如 MWE 中所示:
这样做的问题是,标题不能由 R 在没有浮动的表中生成,并且\caption
包\captionof
不能caption
放在旋转对象内,但你可以将旋转对象放在浮动对象中,然后使用\rotcaption
:
\documentclass{article}
\usepackage{caption}
\usepackage{rotating}
\begin{document}
\SweaveOpts{concordance=TRUE}
\section{Turning}
\begin{table}[h]
\centering
\begin{minipage}[c]{.05\linewidth}
\rotcaption{Turned 90\textdegree}
\end{minipage}
\begin{minipage}[c]{.8\linewidth}
\begin{turn}{90}
<<table1,echo=F,results=tex>>=
require(xtable)
print(xtable(data.frame(a=rnorm(10),b=rnorm(10)),caption="x"),floating=F)
@
\end{turn}
\end{minipage}
\end{table}
\section{Rotating}
\begin{table}[h]
\centering
\begin{minipage}[c]{.05\linewidth}
\rotcaption{Rotated 90\textdegree}
\end{minipage}
\begin{minipage}[c]{.8\linewidth}
\rotatebox{90}{
<<tablex,echo=F,results=tex>>=
print(xtable(data.frame(z=rnorm(20),y=rnorm(20),x=rnorm(20))),floating=F)
@
}
\end{minipage}
\end{table}
\end{document}