在乳胶中创建具有不同行长的特殊表格

在乳胶中创建具有不同行长的特殊表格

我怎样才能在乳胶中得到如下图所示的表格? 在此处输入图片描述

答案1

一个可能的解决方案。我建议不使用垂直线,而是booktabs包。对于水平对齐,20您可以利用multirow包,而对于垂直对齐,你可以通过计算第一列最大条目的宽度calc包裹。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs,calc,multirow}

\newlength\wdx% for vertical alignment
\setlength{\wdx}{\widthof{66}}

\begin{document}

\begin{table}
\centering
\addtolength{\tabcolsep}{10pt}% increase distance between cells 
\begin{tabular}{cccccc}
\toprule
\textsf{x} & \multicolumn{5}{c}{\textsf{y}}\\
\cmidrule(l{\wdx}r{\wdx}){1-1}\cmidrule(l){2-6}
10 & 22 & 33 \\
\multirow{2}[2]{\wdx}{20} & 45 & 34 & 88 & 77 & 80 \\
 & 34 & 67\\
66 & 12 & 10 & 45 & 66\\ 
\bottomrule
\end{tabular}
\end{table}

\end{document}

答案2

如果您必须在表格中使用垂直线,我建议您也插入“支柱”,以便在水平线上方和下方获得更好的垂直间距\hline。不过,总的来说,我发现构建表格没有垂直规则并使用该包来获取由、等booktabs绘制的间距适当的水平线。\toprule\midrule

要将第二个条目垂直居中在第一列,请使用\multirow指令。

您还可以自动执行使第一列始终以粗体显示的任务。

最后,如果您想使用该tabularx包,比如因为您想要实现表格的预定宽度,并且如果您希望内容居中(这似乎是您发布的屏幕截图中的情况),您还需要定义一个特殊的“居中”版本的包X提供的列类型tabularx

下面第一个表格使用tabular环境,第二个表格使用tabularx总宽度设置为 的环境0.7\textwidth。第二个表格也设置为 sans-serif。

在此处输入图片描述

\documentclass[10pt,a4paper]{article}
\usepackage{multirow,array}
% define "struts" as suggested by Claudio Beccari in
%    a piece in TeX and TUG News, Vol. 2, 1993.
\newcommand\T{\rule{0pt}{2.6ex}}       % = `top' strut
\newcommand\B{\rule[-0.9ex]{0pt}{0pt}} % = `bottom' strut
\newcommand\TB{\T\B} % top-and-bottom strut 

\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\begin{document}

\begin{tabular}{>{\bfseries}c|ccccc}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabular}

\bigskip

\textsf{ % switch to sans-serif for the second table
\begin{tabularx}{0.7\textwidth}{>{\bfseries}C|CCCCC}
x & \multicolumn{5}{c}{\bfseries y\B}\\
\hline
10 & 22 & 33\TB\\
\hline
\multirow{2}{*}{20} & 45 & 34 & 88 & 77 & 80\T\\
 & 34 & 67\B \\
\hline
66 & 12 & 10 & 45 & 66\T\\
\end{tabularx}}
\end{document}

答案3

除了 之外array,还使用makecell​​包的解决方案。一个优点是,使用命令可以得到更少的紧密行\makecell*(它添加了\jot 对称地在单元格的顶部和底部,与 不同\renewcommand{\arraystretch}{…}。另一个是可以更改 hlines 的粗细(类似booktabs,但保留使用垂直线的可能性)。

    \documentclass{article}

    \usepackage[utf8]{inputenc}
    \usepackage{array, makecell}

    \begin{document}

    \begin{table}
    \centering\sffamily
    \addtolength{\tabcolsep}{10pt}% increase distance between cells
    \begin{tabular}{c!{\vline width1pt}*{5}{c}}
    \makecell*{x} & \multicolumn{5}{c}{y}\\
    \Xhline{1pt}
    \makecell*{10} & 22 & 33 \\
    \hline
    \makecell{20\\[-2.5ex]}& \makecell*[tc]{45\\34} & \makecell[tc]{34\\67} & 88 & 77 & 80 \\
    \hline
    \makecell*{66} & 12 & 10 & 45 & 66
    \end{tabular}
    \end{table}

    \end{document} 

在此处输入图片描述

相关内容