LATEX中表格的制作.docx
《LATEX中表格的制作.docx》由会员分享,可在线阅读,更多相关《LATEX中表格的制作.docx(6页珍藏版)》请在冰豆网上搜索。
LATEX中表格的制作
LATEX中表格的制作
LATEX中表格的制作
一,基本表格制作
标准LaTeX提供有array和tabular两个制表环境,它们的完整格式如下:
\begin{array}[表格位置]{列样式}\end{array}
\begin{tabular}[表格位置]{列样式}\end{tabular}
\begin{tabular*}{表格总宽度}[表格位置]{列样式}\end{tabular*}
这两个环境的选项和参数定义是相同的,不过array主要用于数组矩阵的排版,且只能用在数学环境中,如equation等。
array宏包扩展了array和tabular环境功能,主要增加和增强了列样式选项,甚至可编程定义新的列样式;还增加了许多细部微调功能,如改变垂直表格线的粗细和自动调整表格间隙等。
使用该宏包可以排印出外形美观、功能丰富的表格。
该宏包没有任何选项,扩展后的两个环境的列样式选项:
选项
说明
l
该列左对齐排列
c
该列居中排列
r
该列右对齐排列
p{列宽}
设置该列宽度,文本顶对齐
@{声明}
该列每行插入声明中文本
m{列宽}
设置该列宽度,文本居中对齐
b{列宽}
设置该列宽度,文本底对齐
>{声明}
声明可以是命令或插入列元素之前的文本
<{声明}
声明可以是命令或插入列元素之后的文本
|
列边或列间加入一条垂直线
!
{声明}
用声明要求的样式取代列间垂直线
源文件经过LaTeX、dvips、pspdf编译后,得到:
源文件
DavidCarlisle
dcolumn
若表格中一列的数字位数不一且都带有小数点或逗号时,为便于阅读和美观起见,应将这些符号上下对齐,但做起来很麻烦。
该宏包就可解决这一问题,它把小数点或逗号也定义为一列。
一般可以直接使用其提供的“D”格式:
D{键入符号}{输出符号}{小数点位数},举例说明:
另外也可使用\newcolumntype命令自行定义对齐样式。
该宏包是LaTeX工具宏包套件之一。
源文件
DavidCarlisle
hhline
带框的表格中总会有水平线与垂直线相交,在交点处会出现各种形态,这在标准LaTeX表格环境中是不可改变的。
该宏包提供了一条\hhline{交点样式}画线命令,用它可以很好地处理交点形态问题。
编注:
从美观角度讲,排版表格要尽可能避免使用垂直线,即尽量不使用该宏包。
源文件
DavidCarlisle
longtable
在LaTeX中的表格是当做一个“盒子”来处理,不能分割,所以无法跨页显示。
该宏包是LaTeX工具宏包套件之一,可用于跨页表格。
它定义了一个长表环境,只需将tabular环境改为longtable环境,跨页长表格就可自动拆分为多页表格。
注意:
使用长表环境后,须经两或三次编译,才能得到正确结果。
由于改变了原有输出方式,所以它不能用在multicolumn多栏环境或twocolumn双栏页面格式中。
源文件
DavidCarlisle
ltxtable
它将longtable和tabularx两个宏包合并,两者的功能在longtable环境中体现。
当调用ltxtable.tex时,其实就是加载上述两个宏包。
源文件
DavidCarlisle
makecell
它提供了一组命令,可使表格中列数据单独定位:
居中、靠左或靠右,可将某一列标题旋转90度,可在单元格中划对角线,还可设定表格线段的粗细等。
二,分页表格
在标准LaTeX中的表格是当做一个“盒子”来处理的,不能分割,所以无法跨页显示。
其一是使用longtable,其二是使用supertabular.在这里我们使用supertabular.
supertabular是一个tabularenvironment的扩展.通常使用tabular时,表格只能在一页,如果表格太大,超过了bottommargin,就会报Overfullvbox错误.
supertabular接到\\command后,会重新计算可以使用的空间,如果到了页面高度,就会自动插入tabeltail,开始新的一页,新的一页以tablehead连接.
主要用到的command有以下几个.
1,\tablefirstheadtakesoneargument,itdefinesthecontentsofthefirstoccurenceofthetabularhead.Theuseofthiscommandisoptional.Don’tforgettoclosetheheadbya\\.用来显示列第一行.
2,\tableheadtakesoneargument,itdefinesthecontentsofallsubsequentocurrencesofthetabularhead.Don’tforgettoclosetheheadbya\\.当分页时,会显示在下页的第一行.
3,\tabletailtakesoneargument,itdefinessomethingwhichshouldbeinsertedbeforeeach\end{tabular},exceptthelast.当分页时,会显示在该页最后一行,但是最后一页不会显示.
需要注意的是,\tablefirsthead,\tablehead一定要加\\.
具体的使用参考附件document.
三,关于表格并列
经常会遇到表格并列的问题.
并列,一般的做法是用minipage来实现,然后minipage里包含子minipage,分别每个字minipage设定宽度,可以控制位置.如果用到图表混排的话,使用figure应该会更好.
当然如果使用minipage,可能会遇到种种比如分页,对齐的问题.如果想让minipage里的表格对齐两边对齐,可以使用\raggedright和\raggedleft,命令形式可以很好的配合环境命令使用.如果出现无法对齐,可能的原因就是minipage的宽度调节的有问题,或者是表格太大,无法并排.
使用\noindent可以是并排表格时,外面的环境的左缩进消失.相关内容,可以参考段落格式排版.
四,关于表格的其他
1,如果想让表格宽度太窄,希望能和段落左右对齐,即左右拉伸,可以使用\extracolsep
代码:
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}rcrc}
2,表格合并.\multicolumn{2}{c}{\cellcolor[gray]{0.8}{DeliveryTo}}
3,如果想让几个小表格始终在同一个页面.可以将其放在一个minipage下.
4,隔行变色.\rowcolors{1}{light-gray}{white}
注意隔行变色,如果和\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}rcrc}使用会出现比较奇怪的现象,就是左边会出现一点空白,然后没有填充颜色,可以在每行加入\makebox[0pt][l]{\fboxsep2pt\colorbox{bg-gray}{\strut\hspace*{0.94\linewidth}}}的方法来解决。
不过在分页的时候还是会出问题。
5,同时设定表格的宽度和表格内文字的位置.
\begin{tabular}[l]{|>{\centering}p{13mm}|p{16mm}<{\centering}|p{18mm}<{\centering}|p{10mm}<{\centering}|p{10mm}<{\centering}|}