当我不知道宽度时将表格居中

当我不知道宽度时将表格居中

我有一个常见问题。当我不知道宽度时,我想将表格居中。更重要的是,我正在使用tabularx,有时指定的宽度可能太小,这意味着表格比 tabularx 的第一个参数更宽。

以下是我的问题的一些背景。我开发了一个 R 包,可以打印出 HTML、LaTeX 等格式的表格。因此,用户可能会设置宽度 - 可能设置为对于内容来说太小的值。

目前,居中表格使用\centering,如下所示(简化版本):

\begin{table}[h]
\centering
\begin{threeparttable}
\begin{tabularx}{0.5\textwidth}{p{0.5\textwidth}}

\multicolumn{1}{l}{Some content here} \tabularnewline[-0.5pt]

\end{tabularx}\end{threeparttable}

\end{table}

但这可能会导致表格无法真正居中。以下是用户为宽表指定的太小的表格宽度的示例。因此表格无法居中:

\documentclass{article}

\usepackage{threeparttable}
\usepackage{tabularx}
\usepackage{multirow}
\begin{document}
\begin{table}[h]
\centering
\begin{threeparttable}
\begin{tabularx}{0.2\textwidth}{p{0.2\textwidth}}

\multicolumn{1}{l}{Some very long content that goes on and on and on} \tabularnewline[-0.5pt]


\end{tabularx}\end{threeparttable}

\end{table}
\end{document}

有没有办法确保表格保持居中?

请注意,多列命令会覆盖表格宽度规范。我知道这一点,而且它可能不是最佳选择。但默认情况下,我的单元格不会换行。如果用户愿意,他们可以打开换行,在这种情况下,多列命令的宽度规范将为p{0.2\textwidth}或其他。关键是,有时用户可能会做一些事情,使表格比 tabularx 认为的要宽;有没有办法确保它们确实居中?

(注 2:是的,我也知道在这种情况下,multicolumn没有做任何事情。但有时存在真正的多列单元格;该命令允许每个单元格左/右/上/下对齐;并且用不同的语言以编程方式编写 TeX 很困难。)

答案1

Atabularx必须至少有一X列,具体如下

\begin{tabularx}{0.2\textwidth}{p{0.2\textwidth}}

指定表格将放置在宽度为的框中.2\textwidth,但无法对宽度进行任何调整,因为更改X列的宽度是唯一的机制tabularx。此表设置了特别不可能的限制,因为不仅没有X列,而且表格规范只有一p{0.2\textwidth}列,因此其自然宽度为 .2\textwidth+2\tabcolsep,因为\tabcolsep列的两侧都有。在示例中,p列被替换为,l因为所有条目都被跨越。

您应该只tabular在这里使用:

在此处输入图片描述

\documentclass{article}

\usepackage{threeparttable}
\usepackage{tabularx}
\usepackage{multirow}
\begin{document}


\noindent X\dotfill X % just to show the width

\begin{table}[htp]% never use [h] on its own
\centering
\begin{threeparttable}
\begin{tabular}{p{0.2\textwidth}}

\multicolumn{1}{l}{Some very long content that goes on and on and on} \tabularnewline[-0.5pt]


\end{tabular}
\end{threeparttable}

\end{table}
\end{document}

相关内容