我使用 R 通过 xtable 生成表格,但我没有使用 Sweave 编写文档。相反,我使用 TexStudio,如果可能的话,我会继续使用它。
因此,我使用\input
来导入我的表格。理想情况下,我希望所有表格的宽度都为\textwidth
。似乎 xtable 中还没有办法\tabcolsep
在函数中直接应用修改。因此必须在 Latex 中完成,这意味着我必须为每个表格手动执行此操作。
这个想法是创建一个宏,它可以应用于环境\renewcommand{\tabcolsep}{VALUE}
中的正确位置table
。
这是我用 R 生成的所有表格格式的 MWE 表(想象这是一个外部 .tex 文件)
\begin{table}[htbp]
\centering
\caption[a]{bbb}
\label{x}
{\normalsize
\begin{tabular}{lccc}
\toprule
\multicolumn{1}{l}{Delta} & \multicolumn{1}{c}{Gamma} & \multicolumn{1} {c}{Omega} & \multicolumn{1}{c}{Theta} \\
\midrule
\multicolumn{1}{l}{$a+x$} & 0.1231 & 0.1122 & 7124 \\
\multicolumn{1}{l}{$a+x$} & 0.3333 & 0.1122 & 7343 \\
\multicolumn{1}{l}{$a-x$} & 0.3333 & 0.1231 & 9344 \\
\multicolumn{1}{l}{$a-x$} & 0.2222 & 0.1231 & 9342 \\
\bottomrule
\end{tabular}
}
\end{table}
因此,我认为该命令 \renewcommand{\tabcolsep}{VALUE}
必须包含在 \normalsize 之后。同样,目标是创建一个tabular
具有宽度的\textwidth
。
这可能吗?谢谢。
答案1
\tabcolsep
是长度而不是宏,因此应使用以下方法设置
\setlength\tabcolsep{10pt}
不是\renewcommand
。
您可以在表格之前的任何位置设置它,如果您在文档前言中设置它,它将应用于文档中的所有表格。
如果你只想影响你输入的一个表,那么你可以这样做
{\setlength\tabcolsep{15pt}\input{tablefile}}
然而我刚刚注意到
再次,目标是创建一个宽度为的表格
\textwidth
。
设置\tabcolsep
是使用 来影响表格大小的一种棘手方法tabular
,如果您想影响总表格宽度,您确实需要一个采用宽度参数的环境,例如tabular*
。然后您需要调整\extracolsep
而不是\tabcolsep
。
为了指定你不想要\begin{tabular}
的总表格宽度
\begin{tabular*}{\textwidth}{@{\extracolumnsep{\fill}....
xtable 手册建议 xtable 有width
要指定的参数\textwidth
和tabular.environment
您可以指定的参数,tabular*
而不是tabular
。
答案2
感谢 Mico 在 2017 年 5 月更新了您对优化表格的大小(字体和宽度)。
我还无法找到集成@{\extracolsep{\fill}}
该xtable
函数的方法,除非我将它添加到中间 tex 文件中的 {lrrrrrrr} 对齐括号内。
为了节省初级到中级xtable
用户(我就是)的时间,我发现可以在的参数\setlength{\tabcolsep}{VALUE pt}
中指定,如下所示size
xtable
xtable Gallery 小插图由 Jonathan Swinton 在“5.7 表级命令”下制作。我在搜索tablecolsep
参数而不是width
主题后发现了这一点。“表格级命令”没有明确说明将表格调整到页面宽度等操作。专门的章节“5.13 表格宽度”没有指定如何自动扩展列以使其适合整个页面宽度。在我的情况下,只有最后一列被扩展(即行被扩展直到与文本宽度对齐,没有选项告诉 xtable 将该扩展划分到列之间(我可能弄错了)。
tabular.environment = "tabular*"
由于使用和时表格(和行)会随着 tabcolseps 的增加而自动扩展width = "\\textwidth"
,因此用户可以调整参数scalebox
以将表格大小调整为大约文本的宽度(视觉上)。 tabcolsep
也可以与这两个一起使用。尽管如此,此解决方案仍然需要tabcolsep
针对每个表格或文档进行手动调整。