删除合并列

删除合并列

我有一张用作考试答题纸的表格。这是去年遗留下来的,当时考试有 4 个部分。但是,我现在有 3 个部分……所以我想删除第 IV 部分的列(基本上是 6 列)。我认为这很简单……只需从每行末尾删除 6 个表示列边框的 &(并对 3 个标题行执行相应的操作)。不幸的是,这不起作用 :-( 问题是我不理解 arraystretch 和 linewidth/tabcolsep 的作用……

需要澄清的是,我确实希望这 3 个部分能够扩展以适应原始表格的宽度......

{\rowcolors{5}{black!15}{black!5} 
\def\arraystretch{1.8}% 
\begin{tabular}{ |p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|p{\dimexpr 0.0416667\linewidth-2\tabcolsep}|  } 
\hline 
\multicolumn{6}{|c|}{\textbf{SECTION I}} & \multicolumn{6}{|c|}{\textbf{SECTION II}} & \multicolumn{6}{|c|}{\textbf{SECTION III}} & \multicolumn{6}{|c|}{\textbf{SECTION IV}} \\
 \multicolumn{6}{|c|}{\textbf{Name 1}} & \multicolumn{6}{|c|}{\textbf{Name 2}} & \multicolumn{6}{|c|}{\textbf{Name 3}} & \multicolumn{6}{|c|}{\textbf{Name 4}} \\
 \multicolumn{6}{|c|}{\textbf{Analysis}} & \multicolumn{6}{|c|}{\textbf{Analysis}} & \multicolumn{6}{|c|}{\textbf{Analysis}} & \multicolumn{6}{|c|}{\textbf{Analysis}} \\
 \hline 
\# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E & 
\hline\hline 
1 &   &   &   &   &   & 1 &   &   &   &   &   & 1 &   &   &   &   &   & 1 &   &   &   &   &   & 
\hline 
2 &   &   &   &   &   & 2 &   &   &   &   &   & 2 &   &   &   &   &   & 2 &   &   &   &   &   & 
\hline 
3 &   &   &   &   &   & 3 &   &   &   &   &   & 3 &   &   &   &   &   & 3 &   &   &   &   &   & 
\hline 
4 &   &   &   &   &   & 4 &   &   &   &   &   & 4 &   &   &   &   &   & 4 &   &   &   &   &   & 
\hline 
5 &   &   &   &   &   & 5 &   &   &   &   &   & 5 &   &   &   &   &   & 5 &   &   &   &   &   & 
\hline 
6 &   &   &   &   &   & 6 &   &   &   &   &   & 6 &   &   &   &   &   & 6 &   &   &   &   &   & 
\hline 
7 &   &   &   &   &   & 7 &   &   &   &   &   & 7 &   &   &   &   &   & 7 &   &   &   &   &   & 
\hline 
8 &   &   &   &   &   & 8 &   &   &   &   &   & 8 &   &   &   &   &   & 8 &   &   &   &   &   & 
\hline 
9 &   &   &   &   &   & 9 &   &   &   &   &   & 9 &   &   &   &   &   & 9 &   &   &   &   &   & 
\hline 
10 &   &   &   &   &   & 10 &   &   &   &   &   & 10 &   &   &   &   &   & 10 &   &   &   &   &     & 
\hline 
11 &   &   &   &   &   & 11 &   &   &   &   &   & 11 &   &   &   &   &   & 11 &   &   &   &   &   & 
\hline 
12 &   &   &   &   &   & 12 &   &   &   &   &   & 12 &   &   &   &   &   & 12 &   &   &   &   &   & 
\hline 
13 &   &   &   &   &   & 13 &   &   &   &   &   & 13 &   &   &   &   &   & 13 &   &   &   &   &   & 
\hline 
14 &   &   &   &   &   & 14 &   &   &   &   &   & 14 &   &   &   &   &   & 14 &   &   &   &   &   & 
\hline 
15 &   &   &   &   &   & 15 &   &   &   &   &   & 15 &   &   &   &   &   & 15 &   &   &   &   &   & 
\hline 
\end{tabular}}

答案1

这是原始表格的更正/简化版本以及占用相同宽度但仅包含 3 个而不是 4 个部分的改编版本:

在此处输入图片描述

与原始代码相比,我所做的更改是:

  • &将每一行中的最后一个替换\\为以获得可编译的代码。
  • |删除了命令列声明中的部分内容\multicolumn,以避免阅读器行中的垂直线过宽
  • \rowcolor{white}为读者添加行。
  • 使用嵌套表格以避免\multicolumn多次重复该命令。
  • 替换tabulartabularx以便能够访问灵活的宽度X类型列,该列可以代替原始代码中使用的手动计算的列宽。
  • 用来*{4}{rXXXXX}代替rXXXXXrXXXXXrXXXXXrXXXXX以避免重复

为了从 4 节表切换到 3 节表,我做了以下更改:

  • & <number> & & & & &删除每行中最后一次出现的
  • 切换自*{4}{rXXXXX}*{3}{rXXXXX}

以下是最终的完整且可编译的 MWE:

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[table]{xcolor}
\usepackage{tabularx}
\usepackage{makecell}
\renewcommand{\theadfont}{\normalsize\bfseries}

\begin{document}

\noindent
{\rowcolors{5}{black!15}{black!5} 
\def\arraystretch{1.8}% 
\begin{tabularx}{\linewidth}{|*{4}{r|X|X|X|X|X|}} 
\hline 
\rowcolor{white}
    \multicolumn{6}{|c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION I\\ Name 1\\ Analysis\end{tabular}} 
  & \multicolumn{6}{c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION II\\ Name 2\\ Analysis\end{tabular}} 
  & \multicolumn{6}{c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION III\\ Name 3\\ Analysis\end{tabular}}   
  & \multicolumn{6}{c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION IV\\ Name 4\\ Analysis\end{tabular}} \\
 \hline 
\rowcolor{white}\# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E \\
\hline\hline 
1 &   &   &   &   &   & 1 &   &   &   &   &   & 1 &   &   &   &   &   & 1 &   &   &   &   &    \\
\hline 
2 &   &   &   &   &   & 2 &   &   &   &   &   & 2 &   &   &   &   &   & 2 &   &   &   &   &    \\
\hline 
3 &   &   &   &   &   & 3 &   &   &   &   &   & 3 &   &   &   &   &   & 3 &   &   &   &   &    \\
\hline 
4 &   &   &   &   &   & 4 &   &   &   &   &   & 4 &   &   &   &   &   & 4 &   &   &   &   &    \\
\hline
\end{tabularx}}
\bigskip


\noindent
{\rowcolors{2}{black!15}{black!5} 
\def\arraystretch{1.8}% 
\begin{tabularx}{\linewidth}{|*{3}{r|X|X|X|X|X|}} 
\hline 
\rowcolor{white}
    \multicolumn{6}{|c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION I\\ Name 1\\ Analysis\end{tabular}} 
  & \multicolumn{6}{c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION II\\ Name 2\\ Analysis\end{tabular}} 
  & \multicolumn{6}{c|}{\bfseries\begin{tabular}{@{}c@{}}SECTION III\\ Name 3\\ Analysis\end{tabular}} \\
 \hline 
\rowcolor{white}\# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E \\ 
\hline\hline 
1  &   &   &   &   &   & 1  &   &   &   &   &   & 1  &   &   &   &   &  \\ 
\hline 
2  &   &   &   &   &   & 2  &   &   &   &   &   & 2  &   &   &   &   &  \\ 
\hline 
3  &   &   &   &   &   & 3  &   &   &   &   &   & 3  &   &   &   &   &  \\ 
\hline 
4  &   &   &   &   &   & 4  &   &   &   &   &   & 4  &   &   &   &   &  \\ 
\hline 
\end{tabularx}}




\end{document}

答案2

正常情况下,你的方法应该可以工作。我认为问题在于这个代码从一开始就无法工作,因为多了一个&,而大部分都\\缺失了。

Arraystretch 只是拉伸了数组。;)如果您注释掉此行,您将看到行将更加密集。“技巧”是此表格中的列定义:以前有 24 列,应扩展为\linewidth。这就是为什么每列的宽度都应该为 1/24=0.0416667(您必须从此值中减去所有自动插入的空格,这是垂直线的宽度(\linewidth)和列文本与垂直线之间空间的两倍(\tabcolsep)。唯一需要更改的是现在使用宽度\linewidth/16 = 0.055555\linewidth并删除最后 6 列。 在此处输入图片描述

\def\arraystretch{1.8}% 
\begin{tabular}{
      |p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|p{\dimexpr 0.0555555\linewidth-2\tabcolsep}|  }
   \hline
   \multicolumn{6}{|c|}{\textbf{SECTION I}} & \multicolumn{6}{|c|}{\textbf{SECTION II}} & \multicolumn{6}{|c|}{\textbf{SECTION III}} \\
   \multicolumn{6}{|c|}{\textbf{Name 1}}    & \multicolumn{6}{|c|}{\textbf{Name 2}}     & \multicolumn{6}{|c|}{\textbf{Name 3}}      \\
   \multicolumn{6}{|c|}{\textbf{Analysis}}  & \multicolumn{6}{|c|}{\textbf{Analysis}}   & \multicolumn{6}{|c|}{\textbf{Analysis}}    \\
   \hline
   \# & A & B & C & D & E & \# & A & B & C & D & E & \# & A & B & C & D & E \\ \hline\hline
   1  &   &   &   &   &   & 1  &   &   &   &   &   & 1  &   &   &   &   &   \\ \hline
   2  &   &   &   &   &   & 2  &   &   &   &   &   & 2  &   &   &   &   &   \\ \hline
   3  &   &   &   &   &   & 3  &   &   &   &   &   & 3  &   &   &   &   &   \\ \hline
   4  &   &   &   &   &   & 4  &   &   &   &   &   & 4  &   &   &   &   &   \\ \hline
   5  &   &   &   &   &   & 5  &   &   &   &   &   & 5  &   &   &   &   &   \\ \hline
   6  &   &   &   &   &   & 6  &   &   &   &   &   & 6  &   &   &   &   &   \\ \hline
   7  &   &   &   &   &   & 7  &   &   &   &   &   & 7  &   &   &   &   &   \\ \hline
   8  &   &   &   &   &   & 8  &   &   &   &   &   & 8  &   &   &   &   &   \\ \hline
   9  &   &   &   &   &   & 9  &   &   &   &   &   & 9  &   &   &   &   &   \\ \hline
   10 &   &   &   &   &   & 10 &   &   &   &   &   & 10 &   &   &   &   &   \\ \hline
   11 &   &   &   &   &   & 11 &   &   &   &   &   & 11 &   &   &   &   &   \\ \hline
   12 &   &   &   &   &   & 12 &   &   &   &   &   & 12 &   &   &   &   &   \\ \hline
   13 &   &   &   &   &   & 13 &   &   &   &   &   & 13 &   &   &   &   &   \\ \hline
   14 &   &   &   &   &   & 14 &   &   &   &   &   & 14 &   &   &   &   &   \\ \hline
   15 &   &   &   &   &   & 15 &   &   &   &   &   & 15 &   &   &   &   &   \\ \hline
\end{tabular}

一些额外的东西:

  • 我漏掉了\rowcolors
  • 表格无法完美地容纳在一页中:原因是,例如,没有考虑其中一条垂直线(在像这样的表格中,n列中有n+1垂直线)。如果您想减少“过满 \hbox”警告,也许只需使用三位或两位 1/16 的数字。
  • 我希望每个部分的第一列(带有 的列#)右对齐。-p列始终对齐。参见例如https://tex.stackexchange.com/a/12712/237192实现右对齐列。

相关内容