使用以下代码:
\documentclass{article}
\usepackage[svgnames,table]{xcolor}
\usepackage{multirow}
\usepackage{booktabs}
\newcommand\heading[1]{\multicolumn1l{\textcolor{White}{\large\textbf{#1}\strut}}}
\usepackage{etoolbox}
\newcommand\colouredRows{}% initialise empty list
\forcsvlist{\listadd\colouredRows}{ 7, 8, 9, 10}
\newcommand\SetRowColour{%
\xifinlist{\number\rownum}\colouredRows{\cellcolor{DodgerBlue!20}}{}%
}
\usepackage{array}
\newcolumntype{C}{>{\centering\arraybackslash}c}
\newcolumntype{L}{>{\raggedright\arrybackslash}l}
\newcolumntype{R}{>{\raggedleft\arraybackslash}r}
\rowcolors{2}{White}{white}% initialise the \rownum counter from xcolor
\begin{document}
\begin{center}
\begin{tabular}{ LL CCCC R }
\rowcolor{MidnightBlue}
\heading{Student}
& \heading{Marker}
& \multicolumn{4}\heading{\textcolor{White}{\large\textbf{Essay}}}
& \heading{Total} \\
& & Originality & Synthesis & Effort & Overall & \\
\cmidrule(lr){3-6}
\multirow{2}*{James} & Alice & 9 & 8 & 7 & 8.0 & \multirow{4}*{\textbf{7.9}}\\
& Amelia & 8 & 9 & 7 & 8.0 & \\
& Anton & 9 & 7 & 7 & 7.7 & \\
& Arthur & 7 & 8 & 8 & 7.7 & \\
& Alice & 9 & 9 & 7 & 8.3 & \\
& Amelia & 9 & 8 & 8 & 8.3 & \\
& Anton & 8 & 8 & 8 & 8.0 & \\
& Arthur & 7 & 9 & 7 & 7.7 & \\
& Alice &10 & 9 &10 & 9.7 & \\
& Amelia & 9 & 7 & 8 & 8.0 & \\
& Anton & 9 & 8 & 8 & 8.3 & \\
& Arthur & 9 &10 & 9 & 9.3 & \\
\end{tabular}
\end{center}
\end{document}
任何帮助,将不胜感激。
答案1
由于问题在于如何\multirow
正确使用,我通过省略与颜色、字体大小和字体粗细相关的所有指令来简化布局。
\documentclass{article}
\usepackage{multirow,booktabs}
\begin{document}
\begin{center}
\begin{tabular}{@{} ll cccc r @{}}
\toprule
Student & Marker & \multicolumn{4}{c}{Essay} & Total \\
\cmidrule(lr){3-6}
& & Originality & Synthesis & Effort & Overall & \\
\midrule
\multirow{4}{*}{James} & Alice & 9 & 8 & 7 & 8.0 & \multirow{4}{*}{7.9}\\
& Amelia & 8 & 9 & 7 & 8.0 & \\
& Anton & 9 & 7 & 7 & 7.7 & \\
& Arthur & 7 & 8 & 8 & 7.7 & \\
\addlinespace
\multirow{4}{*}{Janice} & Alice & 9 & 9 & 7 & 8.3 & \multirow{4}{*}{8.1}\\
& Amelia & 9 & 8 & 8 & 8.3 & \\
& Anton & 8 & 8 & 8 & 8.0 & \\
& Arthur & 7 & 9 & 7 & 7.7 & \\
\addlinespace
\multirow{4}{*}{Julie} & Alice &10 & 9 &10 & 9.7 & \multirow{4}{*}{8.8}\\
& Amelia & 9 & 7 & 8 & 8.0 & \\
& Anton & 9 & 8 & 8 & 8.3 & \\
& Arthur & 9 &10 & 9 & 9.3 & \\
\bottomrule
\end{tabular}
\end{center}
\end{document}
答案2
编辑:
multirow
单元格应在着色表格行之后写入,因此应将其放置在跨行数为负数的最后一个颜色单元格中。该表格代码具有统一格式,在下面的 MWE 中,所有multirow
单元格都以相同的方式写入。
与您的代码相比,进行了以下更改:
- 重新定义是
\heading
命令 - 定义为
multicolumn
单元格的命令 - 前四列带有数字,使用
S
列类型 - 用于表格
tabularx
(对于具有数字的均匀分布的列,在定义用于列中列标题的命令时使用X
列单元格)\mcx
S
- 更正了新列类型的定义(因为您定义它们没有意义)
- 下面的 MWE 重现了您在问题图像中显示的表格
\documentclass{article}
\usepackage[svgnames,table]{xcolor}
\usepackage{booktabs, multirow, tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
%\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\usepackage{siunitx}
\NewExpandableDocumentCommand\heading{m}
{\large\textbf{\textcolor{white}{#1}}}
\NewExpandableDocumentCommand\mcc{O{1}m}
{\multicolumn{#1}{c}{#2}}
\NewExpandableDocumentCommand\mcx{O{1}m}
{\multicolumn{#1}{C}{#2}}
\begin{document}
\begin{center}
\setlength\extrarowheight{2pt}
\setlength\tabcolsep{3pt}
\begin{tabularx}{\linewidth}{ll *{3}{S[table-format=2.0]}
S[table-format=1.1] c}
\rowcolor{MidnightBlue}
\heading{Student}
& \heading{Marker}
& \mcc[4]{\heading{Essay}}
& \heading{Total} \\
& & \mcx{Originality}
& \mcx{Synthesis}
& \mcx{Effort}
& \mcx{Overall} & \\
\cmidrule(lr){3-6}
& Alice & 9 & 8 & 7 & 8.0 & \\
& Amelia & 8 & 9 & 7 & 8.0 & \\
& Anton & 9 & 7 & 7 & 7.7 & \\
\multirow{-3.8}{*}{James}
& Arthur & 7 & 8 & 8 & 7.7 & \multirow{-3.8}{*}{\textbf{7.9}} \\
\rowcolor{cyan!20}
& Alice & 9 & 9 & 7 & 8.3 & \\
\rowcolor{cyan!20}
& Amelia & 9 & 8 & 8 & 8.3 & \\
\rowcolor{cyan!20}
& Anton & 8 & 8 & 8 & 8.0 & \\
\rowcolor{cyan!20}
\multirow{-3.8}{*}{Janice}
& Arthur & 7 & 9 & 7 & 7.7 & \multirow{-3.8}{*}{\textbf{8.1}}\\
& Alice &10 & 9 &10 & 9.7 & \\
& Amelia & 9 & 7 & 8 & 8.0 & \\
& Anton & 9 & 8 & 8 & 8.3 & \\
\multirow{-3.8}{*}{Julie}
& Arthur & 9 &10 & 9 & 9.3 & \multirow{-3.8}{*}{\textbf{7.9}}\\
\bottomrule
\end{tabularx}
\end{center}
\end{document}
答案3
{NiceTabular}
您可以使用轻松构建该表格nicematrix
。
table
此外,如果您使用键,则将不会看到某些 PDF 查看器中出现的细白线xcolor
(例如,参见 Zarko 的回答)。
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{booktabs}
\usepackage{nicematrix}
\usepackage{siunitx}
\NewExpandableDocumentCommand\heading{m}
{\large\textbf{\textcolor{white}{#1}}}
\begin{document}
\begin{center}
\setlength\extrarowheight{2pt}
\setlength\tabcolsep{3pt}
\begin{NiceTabular}{ll *{3}{S[table-format=2.0]}S[table-format=1.1]>{\bfseries}c}
\CodeBefore
\rowcolor{MidnightBlue}{1}
\rowcolor{cyan!20}{7-10}
\Body
\heading{Student} & \heading{Marker} & \Block{1-4}{\heading{Essay}} &&&& \heading{Total} \\
& & {Originality} & {Synthesis} & {Effort} & {Overall} \\
\cmidrule(lr){3-6}
\Block{4-1}{James}
& Alice & 9 & 8 & 7 & 8.0 & \Block{4-1}{7.9} \\
& Amelia & 8 & 9 & 7 & 8.0 & \\
& Anton & 9 & 7 & 7 & 7.7 & \\
& Arthur & 7 & 8 & 8 & 7.7 \\
\Block{4-1}{Janice}
& Alice & 9 & 9 & 7 & 8.3 & \Block{4-1}{8.1}\\
& Amelia & 9 & 8 & 8 & 8.3 \\
& Anton & 8 & 8 & 8 & 8.0 \\
& Arthur & 7 & 9 & 7 & 7.7 \\
\Block{4-1}{Julie}
& Alice &10 & 9 &10 & 9.7 & \Block{4-1}{7.9}\\
& Amelia & 9 & 7 & 8 & 8.0 \\
& Anton & 9 & 8 & 8 & 8.3 \\
& Arthur & 9 &10 & 9 & 9.3 \\
\bottomrule
\end{NiceTabular}
\end{center}
\end{document}
您需要多次编译(因为nicematrix
使用 PGF/Tikz 节点)。