将函数应用于表的列

将函数应用于表的列

我让 Bruno 的解决方案奏效了,但现在彩色当我使用时,奇怪的是出现了“TeX 容量超出”的错误 \rowcolors

\documentclass{article}
\usepackage{ltablex,colortbl}
\usepackage[table]{xcolor}
\keepXColumns
\makeatletter
\def\KWP@safe@newline{%
  \iffalse{\fi
  \let\KWP@old@newline\\%
  \let\\\cr
  \iffalse}\fi
}
\def\KWP@restore@newline{\iffalse{\fi\let\\\KWP@old@newline\iffalse}\fi}

\newcolumntype{\arg}[1]{%
  >{\KWP@safe@newline
    #1{\ignorespaces \@sharp\unskip}%
    \KWP@restore@newline
    \span\@gobbletwo}%
  m{3cm}%
}
\newcolumntype{\argmulti}[1]{%
  >{\KWP@safe@newline
    #1{\ignorespaces \@sharp\unskip}%
    \KWP@restore@newline
    \@gobbletwo}%
  c%
}
\makeatother
% A simple test function:
\newcommand{\macro}[1]{\textcolor{red}{#1}}

\begin{document}
\arrayrulecolor{orange}
\rowcolors[\hline]{1}{yellow!25}{gray!25}
\begin{tabularx}{\linewidth}{|\arg{\macro}|m{2.5cm}|X|}
%\noalign{\hrule}
\hline
  aaa & bbb & AAA \\\hline
  fff & ggg & FFF\\\hline
  hhh & \multicolumn{2}{|\argmulti{\macro}|}{HHH}\\\hline
\end{tabularx}
\end{document}

“容量超出”问题似乎源于表格型表格编译无问题。

答案1

您没有描述您想要实现的目标,也没有说明为什么另一个问题中的代码不适合您的目的。我假设问题是“为什么代码无法编译?”

  • \documentclass您的代码片段中没有,没有\begin{document}\end{document}
  • \textcolor需要一个包(例如\usepackage{color},但它可能已被其他包取代);
  • 当定义名称中带有 的宏时@,它们需要放在\makeatletter和之间\makeatother
  • 你省略了两个定义,\KWP@safe@newline\KWP@restore@newline
  • 并且\ang应该位于\arg表格的序言中。

随着这些变化,

\documentclass{article}
\usepackage{ltablex}
\usepackage{color}
\keepXColumns
\makeatletter
\def\KWP@safe@newline{%
  \iffalse{\fi
  \let\KWP@old@newline\\%
  \let\\\cr
  \iffalse}\fi
}
\def\KWP@restore@newline{\iffalse{\fi\let\\\KWP@old@newline\iffalse}\fi}

\newcolumntype{\arg}[1]{%
  >{\KWP@safe@newline
    #1{\ignorespaces \@sharp\unskip}%
    \KWP@restore@newline
    \span\@gobbletwo}%
  m{3cm}%
}
\newcolumntype{\argmulti}[1]{%
  >{\KWP@safe@newline
    #1{\ignorespaces \@sharp\unskip}%
    \KWP@restore@newline
    \@gobbletwo}%
  c%
}
\makeatother
\newcommand{\macro}[1]{\textcolor{red}{#1}}

\begin{document}
\hsize.5\hsize\noindent
\begin{tabularx}{\linewidth}{|\arg{\macro}|m{2.5cm}|X|}
  aaa & bbb & AAA \\
  fff & ggg & FFF\\ 
  % hhh & \multicolumn{2}{|\argmulti{\macro}|}{HHH}\\
\end{tabularx}
\end{document}

附注:在序言中可以将整列变为红色>{\color{red}}c

相关内容