补充

补充

我在将此表格(来自在线表格生成器)翻译到tabularx环境中时遇到了问题,因此它无法与文档的其余表格保持一致。您能帮帮我吗?谢谢!

\documentclass{article}
\usepackage{multirow}
\usepackage{graphicx}

\begin{document}
\begin{table}[]
\centering
\caption{My caption}
\resizebox{\textwidth}{!}{%
\begin{tabular}{cccccc}
\hline
1                     & 2                    & 3                    & 4                    & 5                    & 6                    \\
\hline
\multirow{2}{*}{Pepe} & \multirow{2}{*}{a}   & \multirow{2}{*}{b}   & \multirow{2}{*}{c}   & \multirow{2}{*}{d}   & e                    \\
                      &                      &                      &                      &                      & f                    \\
\hline
\multicolumn{1}{l}{}  & \multicolumn{1}{l}{} & \multicolumn{1}{l}{} & \multicolumn{1}{l}{} & \multicolumn{1}{l}{} & \multicolumn{1}{l}{} \\
\hline
\end{tabular}%
}
\end{table}
\end{document}

也就是说,表格应该以以下内容开头:

\documentclass{article}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{tabularx}

\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}
\end{tabularx}
BLA, BLA, BLA.
\end{table}
\end{document}

答案1

这里有两种解决方案。第一种使用tabularx环境,所有六列都使用 X 列类型的居中版本。第二种使用环境tabular*,所有六列都使用c列类型。这两种解决方案都占据了文本块的整个宽度。

由于\multicolumn{1}{l}{}什么也不做,您不妨省略这些指令。

在此处输入图片描述

\documentclass{article}
\usepackage{multirow,tabularx,booktabs}
\newcommand{\mr}[1]{\multirow{2}{*}{#1}} % handy shortcut macro
% centered version of X column type:
\newcolumntype{C}{>{\centering\arraybackslash}X} 

\usepackage[skip=0.333\baselineskip]{caption} % optional

\begin{document}
\begin{table}
%%\centering  % <-- redundant
\caption{tabularx}
\begin{tabularx}{\textwidth}{@{} *{6}{C} @{}}
\toprule
1         & 2      & 3      & 4      & 5      & 6 \\
\midrule
\mr{Pepe} & \mr{a} & \mr{b} & \mr{c} & \mr{d} & e \\
          &        &        &        &        & f \\
\midrule
  &  &  &  &  &  \\ % no need for "\multicolumn{1}{l}{}" stuff
\bottomrule
\end{tabularx}

\vspace{1cm} %
\setlength\tabcolsep{0pt}
\caption{tabular*}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} *{6}{c} }
\toprule
1         & 2      & 3      & 4      & 5      & 6 \\
\midrule
\mr{Pepe} & \mr{a} & \mr{b} & \mr{c} & \mr{d} & e \\
          &        &        &        &        & f \\
\midrule
  &  &  &  &  &  \\ % no need for "\multicolumn{1}{l}{}" stuff
\bottomrule
\end{tabular*}
\end{table}
\end{document} 

答案2

您不需要在每个单元格中都使用多列,也不需要\multirow{2}{*}{...}tabularxtabular*来扩展文本宽度,也不需要空行。这里m(array 包中的) 列就足够了,当然,还有booktabs:)

姆韦

\documentclass{article}
\usepackage{graphicx,array,booktabs}
\begin{document}
\begin{table}
\caption{My caption}
\newcolumntype{C}{>{\centering\arraybackslash}m{\dimexpr\linewidth/6-2\tabcolsep}}
\begin{tabular}{CCCCCC}\toprule
1  & 2 & 3 & 4 & 5 & 6 \\\midrule
Pepe & a & b & c  & d &e\par f\\\bottomrule
\end{tabular}
\end{table}
\end{document}

顺便说一句,我不会在这里使用超过两三列的表格em。尽可能加宽表格而不是使用小的居中表格,这不会使其变得更美观,反而会变得丑陋而散乱。

答案3

正如 @daleif 提到的,您忘记在列规范中添加第二个括号{cccccc}。您可能有理由想要使用 tabularx 环境表格型包裹。

该包定义了一个环境 tabularx,它是 tabular 的扩展,它有一个附加的列指示符 X,它创建一个类似于段落的列,其宽度会自动扩展,以便填满环境声明的宽度。(两个 X 列一起共享它们之间的可用空间,依此类推。)

我猜您想调整第一列的宽度,如下例所示。

编译输出(使用独立类)

我给你相应的代码作为MWE:

\documentclass{article}
\usepackage{tabularx}
\usepackage{multirow}
% The [following] pack­age en­hances the qual­ity of ta­bles [...]
\usepackage{booktabs}
% Macro to simplify the code
\newcommand{\mr}[1]{\multirow{2}{*}{#1}}

\begin{document}
\begin{table}
\caption{My caption}
\centering
\begin{tabularx}{.5\textwidth}{Xccccc}
\toprule
1         & 2      & 3      & 4      & 5      & 6 \\
\midrule
\mr{Pepe} & \mr{a} & \mr{b} & \mr{c} & \mr{d} & e \\
          &        &        &        &        & f \\
\midrule
  &  &  &  &  &  \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}

补充

此外,请记住一个名为tabu的包,其功能比tabularx更加强大。

相关内容