将 tabcolsep 应用于外部文件中的表的宏

将 tabcolsep 应用于外部文件中的表的宏

我使用 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要指定的参数\textwidthtabular.environment您可以指定的参数,tabular*而不是tabular

答案2

感谢 Mico 在 2017 年 5 月更新了您对优化表格的大小(字体和宽度)。

我还无法找到集成@{\extracolsep{\fill}}xtable函数的方法,除非我将它添加到中间 tex 文件中的 {lrrrrrrr} 对齐括号内。

为了节省初级到中级xtable用户(我就是)的时间,我发现可以在的参数\setlength{\tabcolsep}{VALUE pt}中指定,如下所示sizextablextable Gallery 小插图由 Jonathan Swinton 在“5.7 表级命令”下制作。我在搜索tablecolsep参数而不是width主题后发现了这一点。“表格级命令”没有明确说明将表格调整到页面宽度等操作。专门的章节“5.13 表格宽度”没有指定如何自动扩展列以使其适合整个页面宽度。在我的情况下,只有最后一列被扩展(即行被扩展直到与文本宽度对齐,没有选项告诉 xtable 将该扩展划分到列之间(我可能弄错了)。

tabular.environment = "tabular*"由于使用和时表格(和行)会随着 tabcolseps 的增加而自动扩展width = "\\textwidth",因此用户可以调整参数scalebox以将表格大小调整为大约文本的宽度(视觉上)。 tabcolsep也可以与这两个一起使用。尽管如此,此解决方案仍然需要tabcolsep针对每个表格或文档进行手动调整。

相关内容