桌位限制:Sweave

桌位限制:Sweave

我遇到了一个问题。似乎当我尝试将超过 17 或 18 个表格输出到 PDF 文档时,其余表格会被忽略。当我将它们拆分到多个 Rnw 文件中时,加载任何一个表格都没有问题。

它没有返回任何错误,前 17 或 18 个表的输出似乎也没有任何超出预期的内容。

  • Windows 7 专业版
  • Miketex 2.29
  • RStudio(使用 CompilePdf())
  • R 版本 2.14.1

我正在使用以下软件包:

\documentclass[12pt]{report}
\usepackage[landscape]{geometry}

% PREAMBLE

\usepackage{wallpaper}
\usepackage[linktoc=Section]{hyperref}
\usepackage{fullpage}

有什么想法吗?或者有什么我可以再检查一下的吗?

答案1

正如其他人指出的那样,这与默认xtable()使用表格放置规范有关。但是,这可以被覆盖。而不是[ht]

xtable(...)

在你的 Sweave 文件中,你可以指定

print(xtable(...), table.placement="!htp")

或任何其他规范。我经常使用"H"来自float

答案2

问题似乎在于每个table环境都传递了[h]选项;如果可以按照此选项(或自动提供的)放置表格[ht],则它和所有后续表格将排队,并且在其他 17 个表格之后 LaTeX 将达到限制。

扩大队列并不是一个合适的答案,因为在那种情况下,所有表格都将打印在章节末尾。

最好的策略是修改 R 生成 LaTeX 代码的方式(我不知道如何修改);另一种可能性是让 LaTeX 忽略该[h]选项并提供一组不同的选项:例如

\makeatletter
\renewcommand{\table}[1][]{\@float{table}[!htp]}
\makeatother

将把选项传递[!htp]给所有table环境(无论是否由 R 生成)。

答案3

原文作者的评论是:“\clearpage在每个表的末尾添加一个,问题就彻底解决了”。这个方法很好,但并不能真正解决背后的问题。因此我引用了整段更多浮点数此处的软件包作为更一般的参考:

3 替代方案(某种)

如果你真的想增加(可能的)浮点数,那么这个包是正确的。另一方面,如果你遇到了太多未处理的浮点数的问题,但又接受较少的浮点数,那么还有其他一些可能性:

  • 该命令\clearpage强制 LaTeX 输出该命令之前出现的任何浮动对象(并转到下一页)。

  • \cleardoublepage执行相同操作但确保下一页输出的是奇数页。

  • 使用不同的浮点说明符:浮点t顶部、b底部、p页面。

  • 建议 LaTeX 将对象放在原来的位置:h(= 此处)浮点说明符。

  • 告诉 LaTeX 请将对象放在原处:h!(= 此处!)浮点说明符。

  • 强制 LaTeX 将对象放在原处并关闭:浮动包提供了“此处的样式选项,为浮动环境提供了一个[H]选项,表示“将其放在此处”(而不是标准[h]选项,表示“您可以将其放在此处,如果您愿意)”(截至 2001/11/08 的浮动包文档 v1.3d)。例如,更改\begin{figure}[tbp]...\begin{figure}[H]...强制将图形放在此处,而不是浮动。浮动包 2001/11/08 v1.3d 可在 CTAN 获得:http://ctan.org/pkg/float

  • placeins 包提供了命令\FloatBarrier。在 之前出现的浮动\FloatBarrier不允许浮动到 之后的位置,在 之后出现的浮动\FloatBarrier不允许浮动到 之前的位置\FloatBarrier。(一个文档中可以有多个\FloatBarrier。)同一个包还提供了一个选项,可以自动添加到节标题\FloatBarriers。还可以使其\FloatBarriers不那么严格(请参阅该包的文档)。placeins 包,2005/04/18 v2.2,可在 CTAN 获得:http://ctan.org/pkg/placeins

另请参阅英国网络上 TeX 常见问题列表中的以下条目:

以及 Frank Mittelbach 在“如何影响 LaTeX 中浮动环境(如图片和表格)的位置?”上的精彩文章https://tex.stackexchange.com/a/39020

相关内容