有没有办法修改单元格的布局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
以下解决方案假设两件事:
- 固定的 2x2 矩阵结构;以及
- 您想要对所有条目应用相同的命令。
以下 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
。最后一个命令利用了此修改。