我有一个有三列的 tabularx,在某些行中,我需要将两列放在一起并使用类型 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}