Latex:表格:相对定义列宽

Latex:表格:相对定义列宽

通过此代码,我可以将所有 4 列均等划分。

{@{}*{4}{p{.25\textwidth}@{}}}

我该怎么说(例如):

column 1: 20 %
column 2: 30 %
column 3: 25 %
column 4: 25 %

请提供一个完整可编译的代码。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}

\begin{document}

\begin{table}[b!] %Label
    \centering
    \caption[Caption]{Caption.}
    \label{tab:Label}
    \begin{tabular}{@{}*{4}{p{.25\textwidth}@{}}}
        \toprule
        A   & B     & C     & D     \\ \midrule
        A1  & B1    & C1    & D1    \\
        A2  & B2    & C2    & D2    \\
        A3  & B3    & C3    & D3    \\
        A4  & B4    & C4    & D4    \\ \bottomrule
    \end{tabular}
\end{table}

\end{document}

请不要对 A、B、C、D 感到惊讶——我已经将数据匿名化了。

提前致谢!

答案1

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
\begin{table}[hb] %Label
    \centering
    \caption[Caption]{Caption.}
    \label{tab:Label}
    \begin{tabular}{@{}*{4}{p{.25\textwidth}@{}}}
        \toprule
        A   & B     & C     & D     \\ \midrule
        A1  & B1    & C1    & D1    \\
        A2  & B2    & C2    & D2    \\
        A3  & B3    & C3    & D3    \\
        A4  & B4    & C4    & D4    \\ \bottomrule
    \end{tabular}
\end{table}

\begin{table}[b!hb] %Label
    \centering
    \caption[Caption]{Caption.}
    \label{tab:Label}
    \begin{tabular}{@{}p{\dimexpr0.20\textwidth-\tabcolsep}
                       p{\dimexpr0.30\textwidth-2\tabcolsep}
                       p{\dimexpr0.25\textwidth-2\tabcolsep}
                       p{\dimexpr0.25\textwidth-\tabcolsep}
                    @{}}
        \toprule
        A   & B     & C     & D     \\ \midrule
        A1  & B1    & C1    & D1    \\
        A2  & B2    & C2    & D2    \\
        A3  & B3    & C3    & D3    \\
        A4  & B4    & C4    & D4    \\ \bottomrule
    \end{tabular}
\end{table}

\end{document}

第一个表格是您的原始表格,第二个表格包含所需的解决方案(如果我正确理解了您的问题)。注意:在计算所需宽度(作为方程宽度的分数)时,您需要考虑,即单元格内容与列边框之间的距离。在第一列和最后一列中,此距离分别通过列的开头和结尾\tabcolsep移除。@{}

在此处输入图片描述

(红线表示文字边框)

答案2

我建议使用 来实现tabularx,使用语法>{\hsize=coeff\hsize}X,其中系数分别与 20、30、25 和 25 成比例,约束是系数之和等于列数X(4):

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage[showframe]{geometry}

\begin{document}

\begin{table}[h!] %Label
    \centering
    \caption[Caption]{Caption.}
    \label{tab:Label}
    \begin{tabularx}{\textwidth}{>{\hsize=0.8\hsize}X >{\hsize=1.2\hsize}XXX}
        \toprule
        A & B & C & D \\ \midrule
        A1 & B1 & C1 & D1 \\
        A2 & B2 & C2 & D2 \\
        A3 & B3 & C3 & D3 \\
        A4 & B4 & C4 & D4 \\ \bottomrule
    \end{tabularx}
\end{table}

\end{document} 

在此处输入图片描述

相关内容