我是一名 StackExchange 和 LaTeX 新手,正在尝试弄明白表格和tabularx
。有时我会复制代码,但实际上不知道自己在做什么,也不知道它为什么有效或失败。
有人能向我解释一下这个\newcolumntype
命令是如何工作的以及这个命令的作用吗?我从官方文档中找到了答案tabularx
。特别是“ >
”这个东西,我不明白。
例子:\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}
答案1
这array
包文档的第 2 页和第 3 页有解释:
其他说明
回答您的具体问题:
\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}
定义一种称为Y
基于X
列的新类型的列(此列类型由包定义tabularx
,它基本上是一个p{ <width>}
列,由包计算),但使用字体大小和右边不规则文本来<width>
排版内容。\small
总之,Y
现在p{<width>}
有一列内容将以\small
字体大小排版,并且排版在右边。现在,不再需要繁琐的
\begin{tabularx}{0.5\linewidth}{c>{\small\raggedright\arraybackslash}Xl>{\small\raggedright\arraybackslash}X}
...
\end{tabularx}
你可以简单地说
\begin{tabularx}{0.5\linewidth}{cYlY}
...
\end{tabularx}
\newcolumntype
带有参数
举例来说,假设我们需要一个具有三种p{}
类型列的表,其规格如下:
- 第一列:宽度 = 4 厘米,颜色 = 蓝色(阴影);内容左侧不齐。
- 第二列:宽度 = 3 厘米,颜色 = 红色(阴影);内容左侧不齐。
- 第一列:宽度 = 5 厘米,颜色 = 绿色(阴影);内容左侧不齐。
这里最好的办法是定义一个新的列类型;\newcolumntype
还接收参数(如\newcommand
),所以在这种情况下,我们需要一个具有两个参数的新类型:颜色和宽度:
\newcolumntype{C}[2]{>{\columncolor{#1}\raggedleft\arraybackslash}p{#2}}
表格格式如下
\begin{tabular}{C{red!30}{4cm}C{blue!20}{3cm}C{green!20}{5cm}}
...
\end{tabular}
完整示例:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{array}
\newcolumntype{C}[2]{>{\columncolor{#1}\raggedleft}p{#2}}
\begin{document}
\noindent
\begin{tabular}{C{red!30}{4cm}C{blue!20}{3cm}C{green!20}{5cm}}
Some test text to illustrate the new column type
& Some test text to illustrate the new column type
& Some test text to illustrate the new column type
\end{tabular}
\end{document}
结果:
\arraybackslash
至于\arraybackslash
,\raggedright
、\raggedleft
和\centering
声明以与在或环境\\
中的使用相冲突的方式重新定义。命令(在和 中实现)恢复了在和中使用的含义(您只需要在最后一列中使用)。tabular
array
\arraybackslash
array
tabularx
\\
array
tabular
\arraybackslash