我创建了一个带有选项的命令,例如(仅为示例):
\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|}
。