行颜色、多列和禁忌

行颜色、多列和禁忌

好的,我想创建一个环境来准备我的表格,以便获得一致的结果。

\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,因此您不必$$每次都在第一行写入。

相关内容