使用X型多列时,宽度计算不太好

使用X型多列时,宽度计算不太好

我有一个有三列的 tabularx,在某些行中,我需要将两列放在一起并使用类型 X 调整它们。问题是,当我使用 X 将列连接在一起时,这一列的边距似乎小于表格的边距。(在图像中你可以看到)

多列X

我怎样才能解决这个问题?

表格上的代码如下所示:

  \begin{tabularx}{\linewidth}{lcX}\toprule
    Name                               & \multicolumn{2}{c}{Clave C.U.}\\\midrule
    Version                            & \multicolumn{2}{X}{1.0}\\\midrule
    Autors                             & \multicolumn{2}{X}{Very long text...}\\\midrule
    Sequence                           & Step & Action \\\midrule
    ...
  \end{tabularx}

答案1

示例 1 - 使用 tabularx

定义一个跨越两个 X 列以及\tabcolsep列之间的 s 的新列类型可以解决您的问题。

与您的表格唯一的不同之处在于第 2 列是居中X列,而不是一c列。

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx, booktabs}

\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{D}{>{\hsize=\dimexpr 2\hsize+2\tabcolsep}X}

%\multicolumn{2}{>{\hsize=\dimexpr 2\hsize+2\tabcolsep}X

\begin{document}

\noindent\begin{tabularx}{\linewidth}{@{}lCX@{}}

\toprule
    Name            & \multicolumn{2}{c@{}}{Clave C.U.}     \\ \midrule
    Version         & \multicolumn{2}{c@{}}{1.0}\\\midrule
    Autors          & \multicolumn{2}{D@{}}{Very long text, but how long do 
                                            you want it to be. since you use
                                            an X column, problably more than 
                                            one line}        \\ \midrule
    Something other & that do & not span the last two columns\\ \midrule
\end{tabularx}

\end{document}

示例 2 - 使用表格

在示例 2 中,第 1 列和第 2 列的宽度设置为列中最长的文本的长度。您必须将文本复制到命令中\setlength。列的宽度用于计算第 3 列的宽度,即行宽减去第 1 列和第 2 列的宽度以及列之间的相关空间。

我也按照同样的逻辑定义了跨段落列(T),不需要定义新的列类型,但是很方便。

在此处输入图片描述

\documentclass{article}
\usepackage{array, booktabs}

\newcolumntype{P}{p{\dimexpr(\linewidth-(\ColOneWidth+\ColTwoWidth+4\tabcolsep))\relax}}
\newcolumntype{T}{p{\dimexpr(\linewidth-(\ColOneWidth+2\tabcolsep))\relax}}

\newlength{\ColOneWidth}
\newlength{\ColTwoWidth}

\settowidth{\ColOneWidth}{Something totally different}  % Add the longest text in col1
\settowidth{\ColTwoWidth}{that do not}                  % Add the longest text in col2

\begin{document}

\setlength{\tabcolsep}{4pt}
\noindent\begin{tabular}{@{}lcP@{}}

\toprule
Name                         & \multicolumn{2}{c@{}}{Clave C.U.}\\\midrule
Version                      & \multicolumn{2}{c@{}}{1.0}\\\midrule
Autors                       & \multicolumn{2}{T@{}}{Very long text, but how long do you want it to be. since you use an X column, problably more than a line}\\\midrule
Something totally different & that do not & span the last two nice columns, which has to be so wide that you have a linebreak\\ \midrule
\end{tabular}

\end{document}

相关内容