代码:(collcell所有单元格):

代码:(collcell所有单元格):

我正在用程序生成表格,但必须穿插样式和内容信息,这有点不方便。例如,在下面的注释中说明如何在数据中穿插。如果在下面的代码中的点或点处\cellcolor{red}有一个或多个语句,表明在第 3 列、第 3-4 行中单元格应为红色,那么生成会更容易。这可以实现吗?%% A%% B

\documentclass{article}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}
\begin{document}

\begin{center}
%% A
\begin{tabu}{XXXX}
%% B
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & \cellcolor{red} 11 & 12 \\
13 & 14 & \cellcolor{red} 15 & 16 \\
17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

输出:

截屏

顺便说一句,我已经看过了这个问题这也是关于分离样式和内容,但据我所知,它并没有真正提供此处请求的上述示例的解决方案类型。

编辑:如果不清楚,这里是所需的代码类型:

\documentclass{article}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}
\begin{document}

\begin{center}
\begin{tabu}{XXXX}
\preCell{3}{3}{\cellcolor{red}} % specifies that row 3 col 3 is red
\preCell{4}{3}{\cellcolor{red}} % specifies that row 4 col 3 is red
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12 \\
13 & 14 & 15 & 16 \\
17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

答案1

\multicolum您可以做这样的事情,但一旦涉及它可能会中断:

\documentclass{article}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}
\begin{document}
\makeatletter
\newcommand\preCell[3]{\@namedef{tabstyle-#1-#2}{#3}}
\makeatother
\newcounter{rowcounter}
\newcounter{columncounter}

\begin{center}
\setcounter{rowcounter}{0}
\setcounter{columncounter}{0}

\preCell{3}{3}{\cellcolor{red}} % specifies that row 3 col 3 is red
\preCell{4}{3}{\cellcolor{red}} % specifies that row 4 col 3 is red

\begin{tabu}{>{\stepcounter{rowcounter}%
               \setcounter{columncounter}{0}\stepcounter{columncounter}%
               \csname tabstyle-\therowcounter-\thecolumncounter\endcsname}X
             >{\stepcounter{columncounter}%
              \csname tabstyle-\therowcounter-\thecolumncounter\endcsname}X
             >{\stepcounter{columncounter}%
              \csname tabstyle-\therowcounter-\thecolumncounter\endcsname}X
             >{\stepcounter{columncounter}%
              \csname tabstyle-\therowcounter-\thecolumncounter\endcsname}X}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12 \\
13 & 14 & 15 & 16 \\
17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

答案2

1. 所有细胞:

如果希望特定列中的所有单元格具有相同的格式,则可以使用collcell它允许您将每列的条目传递给命令以进行进一步处理:

在此处输入图片描述

或者你也可以使用array,并定义:

\newcolumntype{R}{>{\cellcolor{red}}X<{}}

2. 选择单元格:

如果您仅希望对选定数量的单元格进行着色,那么您可以使用其他命令,例如根据\ActivateColorCell需要启用单元格着色和\DectivateColorCell禁用单元格着色:

在此处输入图片描述

笔记:

  • 我用了etoolbox提供切换开关来测试是否启用了颜色,但如果需要,可以使用以下解决方案轻松调整它,不需要该包LaTeX 条件表达式

代码:(collcell所有单元格):

\documentclass{article}
\usepackage{collcell}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}

\newcommand{\ColorCellRed}[1]{\cellcolor{red}{#1}}

\newcolumntype{R}{>{\collectcell\ColorCellRed}X<{\endcollectcell}}


\begin{document}

\begin{center}
\begin{tabu}{XXRX}
   1 &  2 &  3 &  4 \\
   5 &  6 &  7 &  8 \\
   9 & 10 & 11 & 12 \\
  13 & 14 & 15 & 16 \\
  17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

代码:(array所有单元格):

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}

\newcolumntype{R}{>{\cellcolor{red}}X<{}}


\begin{document}

\begin{center}
\begin{tabu}{XXRX}
   1 &  2 &  3 &  4 \\
   5 &  6 &  7 &  8 \\
   9 & 10 & 11 & 12 \\
  13 & 14 & 15 & 16 \\
  17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

代码:(collcell部分单元格):

\documentclass{article}
\usepackage{collcell}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}
\usepackage{etoolbox}

\newtoggle{EnableColorCell}
\togglefalse{EnableColorCell}

\newcommand*{\ActivateColorCell}{\global\toggletrue{EnableColorCell}}
\newcommand*{\DectivateColorCell}{\global\togglefalse{EnableColorCell}}
\newcommand{\ColorCellRed}[1]{%
    \iftoggle{EnableColorCell}{%
        \cellcolor{red}{#1}%
    }{%
        #1% no cell color as it is disabled
    }%
}

\newcolumntype{R}{>{\collectcell\ColorCellRed}X<{\endcollectcell}}


\begin{document}
\begin{center}
\begin{tabu}{XXRX}
   1 &  2 &  3 &  4 \\
   5 &  6 &  7 &  8 \\\ActivateColorCell
   9 & 10 & 11 & 12 \\
  13 & 14 & 15 & 16 \\\DectivateColorCell
  17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}
\end{document}

代码:(array部分单元格):

\documentclass{article}
\usepackage{array}
\usepackage{colortbl}
\usepackage[table]{xcolor}
\usepackage{tabu}
\usepackage{etoolbox}

\newtoggle{EnableColorCell}
\togglefalse{EnableColorCell}
\newcommand*{\ActivateColorCell}{\global\toggletrue{EnableColorCell}}
\newcommand*{\DectivateColorCell}{\global\togglefalse{EnableColorCell}}


\newcolumntype{R}{>{\iftoggle{EnableColorCell}{\cellcolor{red}}{}}X<{}}


\begin{document}

\begin{center}
\begin{tabu}{XXRX}
   1 &  2 &  3 &  4 \\
   5 &  6 &  7 &  8 \\\ActivateColorCell
   9 & 10 & 11 & 12 \\
  13 & 14 & 15 & 16 \\\DectivateColorCell
  17 & 18 & 19 & 20 \\
\end{tabu}
\end{center}

\end{document}

相关内容