makecell宏包使用简介
很多刚开始输入表格的时候,经常遇到表格内容换行的问题,除了固定列宽,很多用户用parbox,这里给大家介绍
makecell包,应该是非常好用的换行包,当然还有其他应用,这里引用用户的整理,希望能够帮助大家更好使用该包。
一,基础部分① 盒子(box)上下重直间距——
\Gape[Heith corr][depth corr]{<text>}和 \gape
②
\theadset——表头文字的行距;
③
\theadfont——表头文字的字体;
④
\theadalign——表头文字的对齐; \theadalign{cc},默认行列均居中对齐,再如 \theadalign{lc}:为行居左,列居中对齐。
⑤
\theadgape——表头文字上下垂直距离。可以将 \Gape或 \gape作为参数。
二、单元格格式⑴表格单元格(注意:不包括表头)设置:
①
\cellset——单元格文字的行距;
②
\cellalign——单元格中文字垂直方向基线 (t, c, b)与单元格中多行文字水平 (l,c, r)对齐方式(注意:是多行文字之间的对齐,绝不是相对于单元格的对 齐;如l(左)对齐,并不是单元格中的每行文字均对齐到单元格的最左 边,而是单元格中的每行文字左边对齐到一条垂直直线上。)。如: \renewcommand\cellalign{t c }:文字基线在上方;多行文字水平居中。 \renewcommand\cellalign{b r }:文字基线在下方;多行文字右对齐。
默认对齐方式:
\renewcommand\cellalign{cc}
③
\cellgape——单元格文字上下垂直距离。可以将\Gape 或 \gape作为参数。如: \renewcommand\cellgape{\Gape[1pt]}\renewcommand\cellgape{\gape[t]}
⑵
\makecell
格式:
\makecell[<vertical or/and horizontal alignment>]{<hcell text>}
Ⅰ Vertical alignment——垂直方向基线,取值:
t,c,b; 优先级比 \cellalign的 t,c,b高。若省略,则按 \cellalign的设置的基线进行。
Ⅱ Horizontal alignment——水平对齐(相对于单元格),取值l,c,r,或
{p{3cm}}, {m{3cm}}、 {b{3cm}},或 {>{\parindent 1cm}p{3cm}}(缩进1cm长度)。
\makecell[c]——只有一个参数,代表水平居中,不代表重直基线居中。
[说明:3cm是指单元格中每行文字的长度,而不是单元格的宽度]
Ⅲ 若
\makecell后面接一个星号(即 \makecell*),则相当于文字与单元格上下 边线之间的垂直空隙增加了一个 \jot(约3pt)。
Ⅳ 如果采用
{p{3cm}}形式的水平对齐方式,则:
1)若定义了垂直基线位置参数
(t,c,b),则形式为 [c{p{3cm}}]。
[说明:一般不采用这种方式,因为
p{3cm},m{3cm},b{3cm}中已包含垂直基线位置。]
2)若未定义垂直参数,则形式必须有双{},如:
[{{p{3cm}}}],或 [{}{p{3cm}}]。
[说明:该种方式为通常采用的方式。]
三、单元格格式①
\setcellgapes [<t or b>]{<value>}
作用:
try to emulate one of possibilities of tabls package: to get necessary vertical spacing around cells. 仿真tabls宏包,在表格所有单元中产生单元格上下边线之间的垂直间隙。
②
\makegapedcells
作用:使能 \setcellgapes [<t or b>]{<value>}。
使用:要用在table环境中。若用到table环境外,则对位于后面所有表格均起作用,但对位于其前面的表格不起作用;若在table环境中加上 \nomakegapedcells,则会取消前面 \makegapedcells对该表格的影响。
\begin{table}[htbp]\makegapedcells…\end{table}③
\nomakegapedcells
作用:与
\makegapedcells相反,取消使能作用。
③ 不能更改单元格中文字行距,即下列指令与 \makegapedcells不兼容。
%\renewcommand\cellset{\renewcommand\arraystretch{1}%\setlength\extrarowheight{0pt}}④ 比较
\setcellgapes[t]{8pt}:适用于表格中所有单元格。
\renewcommand\cellgape{\Gape[15pt][0pt]},只适用于\makecell{}的单元格。
\renewcommand\theadgape{\Gape[15pt][0pt]},只适用于\thead{}的单元格。
四、合并行首先,要在导言区(Preamble)将以下两个宏包包含进来。
\usepackage{multirow}\usepackage{makecell}缺一不可。否则,会出现
\multirowthead与 \multirowcell中文字不竖向居中!
①
\multirowhead命令
\multirowhead{<nrow>}[<vmove>][<hor alignment >]{<contents>}
②
\multirowcell命令
\multirowcell{<nrow>}[<vmove>][<hor alignment >]{<contents>}
[对照:multirow宏包应用:multirow宏包有命令:
\multirow{<nrow>}[<njot>]{<width>}[<vmove>]{<contents>}]
\multirowcell中省略了[<njot>]和{<width>}。表格中文字垂直位移的微调可以采用[<vmove>],而不用[<njot>],故省略了。 \multirowcell使用{<contents>}中文字的自然宽度,相当于{<width>}=*。
\multirowcell中增加了[<hor alignment >]参数。表示水平对齐方式。
[对照:multirow宏包用命令参数
\multirowsetup来改变文本在格子中被排版的方式。这个参数的默认定义就是 \raggedright,即文本在格子中左对齐,因而命令 \renewcomand{\multirowsetup}{\centering}使文本在格子中居中排列。]
选自:http://blog.csdn.net/lishoubox/article/details/7300054