好的,我想创建一个环境来准备我的表格,以便获得一致的结果。
\documentclass[10pt]{article}
\usepackage[table]{xcolor}
\usepackage{graphics}
\usepackage{colortbl} %make alternating row colours
\usepackage{tabu} % \rowfont
\usepackage{multirow} % for multirow and multicol
\usepackage{booktabs}
\usepackage{hhline} %to make hlines over a certain number of columns
\usepackage{array} % adds more features on how tables are used
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} %left-align with specific size
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}%centre-align with specific size
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\rowcolors{2}{blue!15}{white}
\arrayrulecolor{blue}
\providecommand{\theader}{\rowfont{\color{white}}\rowcolor{blue}}
\newenvironment{myTable}[4][htbp]
{
\begin{table}[#1]
\begin{center}
\caption{#4}\label{#3}
\begin{tabu}{#2}
\hline
}{
\end{tabu}
\end{center}
\end{table}
}
\begin{document}
\begin{myTable}[htb]{*{4}{c |}|*{2}{C{1.5cm} |}| C{3cm}}%
{tbl:label}%
{Caption Text}
\theader$a$ & $b$ & $c$ & $d$ & $(a\land b)$ & $(c\land d)$ & $(a\land b)\lor(c\land d)$\\\hline
0 & 0 & 0 & 0 & 0 & 0 & 0\\
\multicolumn{4}{@{}c@{}}{\upbracefill} & \multicolumn{2}{@{}c@{}}{\upbracefill} & \upbracefill\\
\end{myTable}
\end{document}
我创造一个环境我的表包含一个表格和禁忌环境。然而,每当我使用\多列和...一起\行颜色。我收到以下编译器错误:
! 紧急停止。\multispan ->\omit @multispan l.46 \end{myTable}
我在表格环境中也遇到了同样的问题,它运行良好。当我删除多列命令时,它运行良好。当我删除 rowcolor 命令时,它运行良好。
我可以在每个多列命令中放置一个 \cellcolor{white} 来解决这个问题。但这不是一个解决方案。
有人知道如何修复它吗?任何帮助都将不胜感激!
答案1
另一个选择是新的表格数组包。该包允许您将格式与内容完全分开。它支持跨多列和多行的单元格以及颜色。
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{tabularray}
\NewColumnType{C}[1]{Q[c,wd=#1]}
\newenvironment{myTable}[4][htbp]
{
\begin{table}[#1]
\centering
\caption{#4}\label{#3}
\begin{tblr}{
colspec={#2},
hline{1-Y}={blue},
vline{1-Z}={1}{1-Y}{blue}, vline{5, 7}={2}{1-Y}{blue},
row{even}={white}, row{odd}={blue!15},
row{1}={bg=blue, fg=white, mode=math},
row{Z}={white, rowsep=0pt},
}
}{
\end{tblr}
\end{table}
}
\begin{document}
\begin{myTable}{*{4}{c}*{2}{C{1.5cm}}C{3cm}}%
{tbl:label}%
{Caption Text}
a & b & c & d & (a\land b) & (c\land d) & (a\land b)\lor(c\land d) \\
0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\SetCell[c=4]{c} \raisebox{2mm}{$\underbrace{\hspace{2cm}}$} & & & & \SetCell[c=2]{c} \raisebox{2mm}{$\underbrace{\hspace{4cm}}$} & & \raisebox{2mm}{$\underbrace{\hspace{3cm}}$} \\
\end{myTable}
\end{document}
输出结果如下:
row
您可以使用和参数指定格式column
,我使用了等式设置mode=math
,因此您不必$$
每次都在第一行写入。