我在将此表格(来自在线表格生成器)翻译到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}{*}{...}
、tabularx
或tabular*
来扩展文本宽度,也不需要空行。这里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] package enhances the quality of tables [...]
\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更加强大。