表格 - 将带有选项的新命令应用于整列

表格 - 将带有选项的新命令应用于整列

我创建了一个带有选项的命令,例如(仅为示例):

\newcommand{\form}[1]{\textcolor{blue}{\textit{#1}}}

我想将此格式应用于表格环境中的整列。使用简单的颜色格式,我通常会执行以下操作:

\begin{tabular}{|>{\color{red}}c|c|}

我如何使用“表单”命令执行类似操作。我尝试了以下代码,但没有任何结果:

\begin{tabular}{|>{\form{}}c|c|}   %compiles with no changes
\begin{tabular}{|>{\form}c|c|}     %compiles with no changes
\begin{tabular}{|>{\form{#1}}c|c|} %does not compile

谢谢

答案1

在这个特殊的情况下,>{\color{red}\itshape}c就足够了,但是对于更一般的情况,您可以使用collcell

\documentclass{article}
\usepackage{xcolor}
\usepackage{array}
\usepackage{collcell}

\newcommand{\form}[1]{\textcolor{red}{\textit{#1}}}

\begin{document}

\begin{tabular}{
  >{\collectcell\form}c<{\endcollectcell} % red italic
  >{\color{red}\itshape}c % red italic as well
}
abc & defghi \\
defghi & abc
\end{tabular}

\end{document}

在此处输入图片描述

答案2

该表达式\begin{tabular}{|>{\form{#1}}c|c|}无法工作,因为 LaTeX 期望的不是正式参数(“ #1”),而是具体参数,例如“blurb”。例如,可以\begin{tabular}{|>{\form{blurb}}c|c|}正常工作。

完整的 MWE (最小工作示例):

\documentclass{article}
\usepackage{array,xcolor}
\newcommand{\form}[1]{\textcolor{blue}{\textit{#1}}}
\begin{document}

\begin{tabular}{|>{\form{blurb}}c|c|}
aaa & bbb \\
ccc & ddd
\end{tabular} 
\end{document}

表格第一列中的每个单元格将以蓝色斜体显示前缀“blurb”。


但是,如果目标是使第一列的所有单元格变为蓝色和斜体,则定义\form如下即可:

\newcommand{\form}{\color{blue}\itshape}

tabular并按如下方式启动环境: \begin{tabular}{|>{\form}c|c|}

相关内容