我让 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
。