【问题标题】:table* environment from xtablextable 中的 table* 环境
【发布时间】:2015-07-11 17:14:50
【问题描述】:

如果我执行以下命令:

xtable(diamonds[1:5,1:4], label = 'tab:myTab', caption='This is my caption',align = c("rr|lr|r"))

我得到以下输出:

\begin{table}[ht]
\centering
\begin{tabular}{rr|lr|r}
  \hline
 & carat & cut & color & clarity \\ 
  \hline
1 & 0.23 & Ideal & E & SI2 \\ 
  2 & 0.21 & Premium & E & SI1 \\ 
  3 & 0.23 & Good & E & VS1 \\ 
  4 & 0.29 & Premium & I & VS2 \\ 
  5 & 0.31 & Good & J & SI2 \\ 
   \hline
\end{tabular}
\caption{This is my caption} 
\label{tab:myTab}
\end{table}

我的问题是:是否可以让 xtable 输出不是 {table},而是 {table*}?

========================== 编辑===================== ====

我正在考虑 Repmat 的意见。我正在使用此处的代码 (How to center LaTeX xtable output in full text width)。

1) 我在他们的序言中添加了一个包

\usepackage{tabularx}

2) 然后,我改变了他们的命令:

print(x.big, tabular.environment ='longtable', floating = FALSE, include.rownames=FALSE)

到四个命令:

print(x.big, tabular.environment ='tabular*', include.rownames=FALSE, width= "\\linewidth")
print(x.big, tabular.environment ='tabular*', include.rownames=FALSE, width= "\\textwidth")
print(x.big, tabular.environment ='tabularx', include.rownames=FALSE, width = "\\linewidth")
print(x.big, tabular.environment ='tabularx', include.rownames=FALSE, width= "\\textwidth")

每次都会产生如下输出:

当我想要做的输出更像是:

我不介意将 xtable 也移动一个硬编码的指定量(例如向右移动 3 英寸) - 但我也能够弄清楚这一点。

【问题讨论】:

  • {table*}{table} 有什么区别?也许它与乳胶中的表编号有关,是吗?
  • 我认为 {table*} 用于整页宽度的表格
  • (mirrors.ibiblio.org/CTAN/macros/latex/contrib/tufte-latex/…) 第 页。图 3 显示了 figure 和 figure* 环境之间的区别。
  • LaTeX 中的星标环境通常应用于两列或多列布局,其中带星号的版本跨越整个页面宽度,而通常的版本与列宽一样宽。
  • 感谢@RHertel!根据我提供的参考资料,我认为这也是正确的。您认为使用 xtable 命令可以实现此目的吗?我正在使用该参考中给出的相同 Tufte-Handout 格式的 xtable 命令。

标签: r tabular xtable


【解决方案1】:

您需要做的是在对print.xtable 的调用中指定floating.environment = "table*"。我不知道您是否将 Sweave 用于您的文档,但这里有一个使用它的示例。不幸的是,无论第一页是否有空间,latex 都坚持将 table* 移动到第二页,但这里是:

\documentclass[twocolumn]{article}
\usepackage{lipsum}

\begin{document}

<<libraries, include = FALSE>>=
library(xtable)
library(ggplot2) # for diamonds dataset
@

<<table, echo = FALSE, results = 'asis'>>=
print(xtable(diamonds[1:5,1:4], label = 'tab:myTab',
             caption='This is my caption',
             align = c("rr|lr|r")),
      floating.environment = "table*")
@

\lipsum[1-13]

\end{document}

第二页:

【讨论】:

    【解决方案2】:

    print.xtable 命令有一个宽度参数see page 2 in this refence manuel。我没试过,但你会这样称呼:

    require(xtable)
    print(xtable(object, width = "some latex command you would like"))
    

    您可以在xtable gallery - 第 20 页中查看其中的一些示例。

    还要注意,从 LaTeX 的角度来看,* 不适用于表格 或 longtable 环境。

    【讨论】:

    • 感谢@Repmat!我已经尝试了其中的一些建议,但它似乎也没有完成这项工作。我正在为我的原始问题添加一个编辑,所以我可以更详细地说明我对你的建议所做的尝试。如果您在我的编辑后有任何建议可以尝试,请告诉我! :) 感谢您提供有关 * 在 LaTeX 中不起作用的信息。
    • 你介意我问吗,你知道我可以在距左边距指定距离的 LaTeX 中简单地打印 xtable 的方法吗?例如,默认情况下,它打印在页面的左侧。有什么方法可以代替它打印,例如,距页面左侧 3 英寸?感谢您的任何想法...
    • 这是一个问题,最好留给 TeX 堆栈 - 即在他们的网站上添加一个新问题。您可以使用我的答案中的命令从 xtable 控制表格的放置:table.placement = getOption("xtable.table.placement", "placement")。但是,您正在寻找非标准 LaTeX 的东西 - 您需要一些软件包。无论哪种方式,我怀疑它是否适合 Xtable。
    • 感谢@Repmat。所以,基本上,我似乎很难保持 tufte-handout 格式,同时还允许将一些表格定位在页面的中心(总中心,而不仅仅是非边距中心)?我会尝试考虑其他解决方案...
    • 好的,谢谢。我会这样做,但这应该是可以自动生成文档的东西。这些事情比我想象的更难!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2019-10-14
    • 1970-01-01
    • 2015-07-30
    • 2019-09-24
    • 2018-05-07
    相关资源
    最近更新 更多