我想创建一个类似于图片中的表格。我不知道如何自定义表格边框粗细和配色方案以实现所需的输出。
代码:
我应该跨越 4 或 5 行多少行?对于“年龄”,我已将其{5}
作为参数提供\multirow
。这样正确吗?
\newcolumntype{y}{>{\bfseries\arraybackslash}m{4cm}}
\newcolumntype{L}{>{\centering\arraybackslash}m{3.5cm}}
\begin {table}
\caption{Demographic Profiles of Participants}
\begin{center}
\begin{tabular}{ |y | L | L | L | >{$} Sr <{$}}
\hline
Socio Demographic Factors & \textbf{Ranges} & \textbf{Frequency} & \textbf{Responses (\%)} \\ \hline
\multirow{5}{3em}{\textbf{AGE}} & 18-25 YEARS & 84 & 57 \\
& 26-35 YEARS & 32 & 22 \\
& 36-45 YEARS & 11 & 7 \\
& 46-55YEARS & 14 & 9 \\
& 56-ABOVE & 7 & 5 \\ \hline
\multirow{1}{7em}{GENDER} & MALE & 87 & 59\\
& FEMALE & 61 & 41 \\ \hline
\multirow{5}{7em}{COMPUTER PROFICIENCY LEVEL} & LESS THAN 1 YEAR & 5 & 3 \\
& 1 TO 3 YEARS & 37 & 25 \\
& 4 TO 6 YEARS & 43 & 29 \\
& 7 TO 9YEARS & 25 & 17 \\
& MORE THAN 9 YEARS & 42 &28 \\ \hline
\multirow{4}{7em}{EDUCATION} &UNDER GRADUATE STUDENT (HONS) & 5 & 3 \\
& GRADUATE STUDENT (HONS) & 67 & 45 \\
& POST GRADUATE STUDENT & 37 & 25 \\
& DOCTORATE STUDENTS & 18 & 12 \\ \hline
\multirow{2}{3em}{COMPUTER EXPERIENCE} & YES & 101 & 68 \\
& NO & 47 & 32 \\ \hline
\multirow{2}{7em}{MAJOR DISCIPLINE} & IT STUDENTS & 42 & 48 \\
& NON-IT STUDENTS & 59 & 42 \\ \hline
\end{tabular}
\end{center}
\end{table}
答案1
包multirow
要求您声明多行单元格后面的行数(而不是行数)。在您的例子中:AGE:5,GENDER:2,COMPUTER ... 5,Education:7,等等。通常,这意味着您应该在生成表格后计算行数,然后计算正确的跨行数。例如,我在这里做的:
\documentclass{article}
\usepackage{array,multirow}
\begin{document}
\newcolumntype{y}{>{\bfseries\arraybackslash}m{4cm}}
\begin {table}
\caption{Demographic Profiles of Participants}
\centering
\begin{tabular}{ |y|>{\raggedright}p{4cm}|c|c<{\%}|}
\hline
\centering
Socio Demographic Factors
& \multicolumn{1}{c|}{\textbf{Ranges}}
& \textbf{Frequency}
& \textbf{Responses (\%)} \\ \hline
\multirow{5}{4cm}{\textbf{AGE}}
& 18-25 YEARS & 84 & 57 \\
& 26-35 YEARS & 32 & 22 \\
& 36-45 YEARS & 11 & 7 \\
& 46-55YEARS & 14 & 9 \\
& 56-ABOVE & 7 & 5 \\ \hline
\multirow{1}{4cm}[-1.5ex]{GENDER}
& MALE & 87 & 59 \\
& FEMALE & 61 & 41 \\ \hline
\multirow{5}{4cm}{COMPUTER PROFICIENCY LEVEL}
& LESS THAN 1 YEAR & 5 & 3 \\
& 1 TO 3 YEARS & 37 & 25 \\
& 4 TO 6 YEARS & 43 & 29 \\
& 7 TO 9YEARS & 25 & 17 \\
& MORE THAN 9 YEARS & 42 & 28 \\ \hline
\multirow{7}{4cm}{EDUCATION}
&UNDER GRADUATE STUDENT (HONS)
& 5 & 3 \\
& GRADUATE STUDENT (HONS)
& 67 & 45 \\
& POST GRADUATE STUDENT & 37 & 25 \\
& DOCTORATE STUDENTS & 18 & 12 \\ \hline
\multirow{2}{4cm}{COMPUTER EXPERIENCE}
& YES & 101 & 68 \\
& NO & 47 & 32 \\ \hline
\multirow{2}{4cm}{MAJOR DISCIPLINE}
& IT STUDENTS & 42 & 48 \\
& NON-IT STUDENTS & 59 & 42 \\ \hline
\end{tabular}
\end{table}
\end{document}
multirow cell
如果后面的所有行都只有一行,那么您的任务就比较简单了。在这种情况下,您应该为第二列使用列类型。有关其他可能性,请访问 Johannes_B 提供的链接l
。p
我也稍微简化了表格构造。
答案2
对于表格的颜色规则,有些像序言中的那样:
\usepackage{colortbl} \arrayrulecolor{blue!70}
要自定义规则的厚度和周围的垂直填充,您可以使用包
booktabs
和带有三个参数的命令\specialrule{}{}{}
:厚度、上方空间和下方空间。是的,五是正确的。因子“年龄”有 5 个级别(行),并且第一个参数
\multirow
必须是这些行的数量。关于填充,Werner 的链接已经足够了。我在这里要强调的是
tabularx
和tabulary
包。
解决了这个问题,嗯……没有什么品味可言,但你的表格对我来说就是不应该做的事情的例子(我担心对其他人来说也是如此)。因此,有一些建议:
避免垂直线(理想数字:0。什么时候?总是)
避免过多的水平线(理想数量:3 条)对于简单的表格,一条
\toprule
、一条\bottomrule
、一条\midrule
就足够了。复杂的表格可以有更多的 \midrules 或 \cmidrules,但在大多数情况下,越少(线)越清晰。避免在表格中间打勾规则,a
\midrule
就足够了。避免在普通单元格中使用大写或小写字母(当然,在标题单元格中也一样)。仅在需要特别强调(标题)、缩写等时才使用左大写字母。
尽量使表格简洁明了。例如:如果列的所有单元格都使用相同的测量单位,则可以在列标题中显示该单位,而不会遮挡单元格的数字。“< 9 年”与“超过 9 年”一样具有信息量,但占用的空间更少。使用单个标题
--
代替单个-
标题来表示范围。“社会人口因素”对于单行来说太长,而多行标题又不好看,但您可以使用更具信息量的标题来省略此标题。
遵循这些规则的结果可能是这样的:
\documentclass{article}
\usepackage{array,multirow,booktabs,mathtools,tabulary,xcolor}
%\usepackage[table]{xcolor}
\usepackage{colortbl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\let\belowcaptionskip\abovecaptionskip
\let\oldmidrule\midrule
\arrayrulecolor{blue!70}
\begin{document}
\begin {table}
\caption{Demographic profiles of participants according to the socio demographic factors.}
\centering
\begin{tabulary}{\textwidth}{>{\bfseries}LlRR}
\toprule & \textbf{Ranges} & \mbox{\textbf{Frequency}} & \mbox{\textbf{Responses (\%)}}\\
\midrule \multirow{5}{.2\textwidth}{Age} & 18-25 years & 84 & 57 \\
& 26--35 years & 32 & 22 \\
& 36--45 years & 11 & 7 \\
& 46--55 years & 14 & 9 \\
& < 56 years & 7 & 5 \\
\midrule \multirow{2}{.2\textwidth}{Gender} & Male & 87 & 59\\
& Female & 61 & 41 \\
\midrule \multirow{5}{.2\textwidth}{Computer\newline proficiency\newline level} & < 1 year & 5 & 3 \\
& 1 to 3 years & 37 & 25 \\
& 4 to 6 years & 43 & 29 \\
& 7 to 9years & 25 & 17 \\
& $>$ 9 years & 42 &28 \\
\midrule \multirow{4}{.2\textwidth}{Education} & Under graduate (hons) & 5 & 3 \\
& Graduate (hons) & 67 & 45 \\
& Post graduate & 37 & 25 \\
& Doctorate & 18 & 12 \\
\midrule \multirow{2}{.2\textwidth}{Computer experience} & Yes & 101 & 68 \\
& No & 47 & 32 \\
\midrule \multirow{2}{.2\textwidth}{Major discipline} & IT students & 42 & 48 \\
& Non-IT students & 59 & 42 \\
\bottomrule
\end{tabulary}
\end{table}
\end{document}