很多刚开始输入表格的时候,经常遇到表格内容换行的问题,除了固定列宽,很多用户用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{}[][]{}
\multirowcell 命令 \multirowcell{}[][]{}[对照:multirow宏包应用:multirow宏包有命令:\multirow{<nrow>}[<njot>]{<width>}[<vmove>]{<contents>} ]\multirowcell 中省略了[]和{}。表格中文字垂直位移的微调可以采用[],而不用[],故省略了。\multirowcell 使用{}中文字的自然宽度,相当于{<width>}=*。\multirowcell 中增加了[]参数。表示水平对齐方式。

[对照:multirow宏包用命令参数\multirowsetup 来改变文本在格子中被排版的方式。这个参数的默认定义就是\raggedright ,即文本在格子中左对齐,因而命令 \renewcomand{\multirowsetup}{\centering} 使文本在格子中居中排列。]

选自:http://blog.csdn.net/lishoubox/article/details/7300054http://blog.csdn.net/lishoubox/article/details/7313659http://blog.csdn.net/lishoubox/article/details/7313921http://blog.csdn.net/lishoubox/article/details/7334494