在表格中自定义“单元格环境”

在表格中自定义“单元格环境”

有没有办法修改单元格的布局tabular

我想要一个环境 mytable,我可以像这样使用tabular

\begin{mytable}{l|l}
entry & entry \\
entry & entry 
\end{mytable}

这将创建一个tabular,并且对于每个条目,它会 \mycommand在每个单元格的开头插入一些。

是否可以?

答案1

collcell包裹:

您可以使用包裹collcell根据列类型处理条目。下面我定义了L列类型并将其应用于第一列,在本例中,将文本颜色更改为红色。

在此处输入图片描述

如果要将相同的宏应用于每一列,请使用L该列的列类型。您还可以定义其他列类型,并将不同的宏应用于不同列中的单元格。

\documentclass{standalone}
\usepackage{xcolor}
\usepackage{collcell}

\newcommand{\MyCommand}[1]{\textcolor{red}{#1}}

\newcolumntype{L}{>{\collectcell\MyCommand}{l}<{\endcollectcell}}

\begin{document}
\begin{tabular}{L | l}
entry & entry \\
entry & entry 
\end{tabular}
\end{document}

array包裹:

如果您想要应用不需要访问单元格内容的宏,您可以简单地使用包裹array并且不需要collcell

在此处输入图片描述

\documentclass{standalone}
\usepackage{array}

\newcolumntype{L}{>{\begin{math}}l<{\end{math}}}%

\begin{document}
\begin{tabular}{L | l}
entry & entry \\
entry & entry 
\end{tabular}
\end{document}

处理每一行的宏:

或者,如果您愿意,您可以为每一行添加一个宏并在该宏中应用特定命令:

在此处输入图片描述

\documentclass{standalone}
\usepackage{xcolor}

\newcommand{\MyCommand}[2]{\textcolor{red}{#1}&\textcolor{blue}{#2}}

\begin{document}
\begin{tabular}{l | l}
\MyCommand{entry}{entry} \\
\MyCommand{entry}{entry} 
\end{tabular}
\end{document}

答案2

以下解决方案假设两件事:

  1. 固定的 2x2 矩阵结构;以及
  2. 您想要对所有条目应用相同的命令。

以下 MWE 规定\mymatrix[<col spec>]{<tl>}{<tr>}{<bl>}{<br>}将四个强制参数以从左到右、从上到下(或逐行)的方式放置在 2x2 中tabular

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newcommand{​\mymatrix}[5][l|l]{% \mymatrix[<col spec>]{<tl>}{<tr>}{<bl>}{<br>}
  \begin{tabular}{#1}
    \MyCommand{#2} & \MyCommand{#3} \\ \MyCommand{#4} & \MyCommand{#5}
  \end{tabular}
​}
\begin{document}
\newcommand{\MyCommand}[1]{#1}% \MyCommand{<stuff>} just prints <stuff> untouched
\mymatrix{a}{b}{c}{d}

\bigskip

\renewcommand{\MyCommand}[1]{\textcolor{red}{#1}}% \MyCommand{<stuff>} prints <stuff> in red
\mymatrix{a}{b}{c}{d}

\bigskip

\renewcommand{\MyCommand}[1]{\textcolor{blue!50}{\textsf{#1}}}% \MyCommand{<stuff>} prints <stuff> in 50% blue and serif font
\mymatrix[|p{2in}|l|]{a}{b}{c}{d}% Also changed the column specification
\end{document}

可选命令 允许\mymatrix[<col-spec>]您(重新)指定tabular列规范,默认为l|l。最后一个命令利用了此修改。

相关内容