表格的处理.docx

上传人:b****4 文档编号:27248312 上传时间:2023-06-28 格式:DOCX 页数:20 大小:34.36KB
下载 相关 举报
表格的处理.docx_第1页
第1页 / 共20页
表格的处理.docx_第2页
第2页 / 共20页
表格的处理.docx_第3页
第3页 / 共20页
表格的处理.docx_第4页
第4页 / 共20页
表格的处理.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

表格的处理.docx

《表格的处理.docx》由会员分享,可在线阅读,更多相关《表格的处理.docx(20页珍藏版)》请在冰豆网上搜索。

表格的处理.docx

表格的处理

【次页】:

9.图形的处理【标题页】:

latex123【前页】:

7.宏套件 目录 索引

8.表格的处理

这是属于一般人觉得比较困难,但却是很重要的部份,让我们多花点时间研究。

LaTeX的表格,因为是抽象逻辑的思考方式来制作表格,对一般用户而言,比较不容易转换成直观印象。

当然,有些编辑器,例如GNUEmacs,有方便画LaTeX表格的编辑器script,但这些我们先不去理他,先从LaTeX本身表格的结构理解起,这样在使用其他的辅助工具时也会比较得心应手,甚至没有其他工具,只要把握住表格的大结构,制作表格就不会摸不着头绪了。

由于LaTeX内建的表格功能算有点阳春,因此这一章会介绍一些外来的宏套件,来弥补LaTeX表格功能的不足,这些宏,使用上算相当普遍,几乎所有的TeX的各种发行版都会附上,因此不必担心可移植性的问题。

8.1表格的种类

表格的使用,在文章上常常是必备的要件,他有归纳及醒目的作用,当然,表格太多也是会喧宾夺主。

通常,我们中文的使用习惯,表格就是大方框内有小方框,文字置于小方框内,甚至某些小方框内还有斜线在分隔。

为了排版上的方便及视觉表现上的美观、清楚,在国际上大部份较正式的论文已不使用纵线、斜线,表格通常由横线来做区隔,甚至完全没有线条,使用空间区隔的方式。

这种趋势几乎在二十几年前就已开始普遍,只是国内的文件似乎还是很喜欢有纵、斜线在表格之中,好像没有一些框线层层包住就不像表格。

如非特殊的表现上的需求,我们应该朝简化表格本身的方向走,将重点置于表格的内容及表格的逻辑结构安排,漂漂亮亮的表格外观加上不当的内容配置,个人觉得这是个失败的表格制作。

另外,等粗的双线条,可能也是得尽量避免,通常粗细不等的外框双线条有装饰的作用,因此,如果文件是较正式的论文,那就可能要避免,如果是海报、DM或要让人们填写的表格之类的,那又是另外一回事,这时封闭性的方框可能会有需要。

这些规范只不过是一些惯例,并非一成不变的,得视文件的性质及使用场合来做变化,一个大原则是,如果是以文字叙述为主的文件,那么,表格本身如果比文字内容抢眼太多的话,或许就要考虑简化表格本身了。

我们这里就来比较,有纵线、无纵线、完全没有线框及含双线表格的各种形式的表格,大家就自由心证,看哪一种表格看起来比较顺眼。

由于HTML格式在表格的表现上可能会失真,因此这里制作成PDF格式供参考:

http:

//edt1023.sayya.org/tex/latex123/test-tables.tex

http:

//edt1023.sayya.org/tex/latex123/test-tables.pdf

8.2tabbing环境

这是LaTeX里头最基本的表格形式,除非自行另外定义、绘制,他并没有方便可用的线条指令来区隔,完全使用空间、位置的配置来显示表格内容,这时整个tabbing表格在LaTeX的地位并不是一个最小单位的box,LaTeX不会把整个表格当成一个单位来处理。

所以,tabbing表格是可以跨页的,他可以被分成两半来处理。

因此,要和其他文字、图表并排排版时,得另外放进一个box中,让他自成一个box单位,例如\parbox或minipage环境里头。

在tabbing环境中,第一个列(row)是以\=来标示Tab宽度来区隔字段(column),这个宽度是由字段里头的字符串宽度所决定的。

后续的每个字段是由\>这个符号来区隔,每列尾要自行加上\\来换行,最后一行可以不必使用\\换行。

tabbing的基本大结构是:

\begin{tabbing}

column1\=column2\=column3\\

item1\>item2\>item3\\

itemA\>itemB\>itemC

\end{tabbing}

这里特意把他排列整齐(事实上,不排整齐LaTeX也会帮忙排好),这样才能看得出来他的表格结构。

那如果想调整字段宽度时可以使用template的方式,例如:

\begin{tabbing}

xxxxxxxxxx\=xxxxxxxxxx\=xxxxxxxxxx\kill

column1\>column2\>column3\\

item1\>item2\>item3\\

itemA\>itemB\>itemC

\end{tabbing}

这里以10个x为字段的宽度,这里的\kill表示这一行是不印出来的,只是在表示各个字段的样本宽度,而且他会自动换行。

当然,要使用其他的字符串也是可以,例如以表格中最长字符串来取代整个x字符串,这样就会让字段宽度刚好都可以容纳其他栏内内容。

也可以使用\hspace{6em}或其他的长度指令,来指定字段的宽度。

对于字段内文字的控制,tabbing较不完备,虽然LaTeX有提供\'让这个符号之前的文字靠左,及\`让这个符号之后的文字靠右,但实际运用,可能不是使用者想要的结果,因此LaTeX的表格,主要还是以tabular环境较为常用。

但tabbing环境的好处是,他不见得一定要用于表格的排版,例如他也可以表现如条列环境般的另一种表现方式,而且他可以跨页排版。

8.3tabular环境

这大概是最常使用的表格形式,可以很方便的画线框。

这种表格,LaTeX是把整个表格当成一个单位来处理,就像字母一样,因此他在版面的安排上是和一般的字母一般的处理,所以,这种表格不经特殊处理,无法被分割成两个部份来跨页。

和tabbing环境的不同,除了可以有线条之外(tabular环境,当然也是可以完全没有线条),分隔字段的符号是&,而且,一定要指定栏内文字的置放位置,栏内文字超出指定的宽度时,会自动折行,还有许多其他更细节的调整。

8.3.1tabular表格的基本结构

\begin{tabular}[t]{lll}

\hline

column1&column2&column3\\

\hline

item1&item2&item3\\

itemA&itemB&itemC\\

\hline

\end{tabular}

其中[t]表示top,也可以是b表示bottom,或c代表center,这要在前后有文字相并排的时候才会显现作用,因为LaTeX会把整个tabular表格当成一个字母单位,所以可以和其他文字、图表并排排版。

这些参数的意思是和同行文字的对齐方式,top是表格顶端和前后文字对齐,bottom则是表格底部和前后文字对齐,center则是和表格中央对齐。

换行的方式和tabbing环境一样,其中的\hline是画一条横线的意思,连续两个\hline\hline会画双横线,他本身会自动换行,因此不必加上换行符号。

其中\begin{tabular}{lll}的lll是在指定各字段内容在小方框内的置放位置,l表示靠左(left),r表示靠右(right),c表示置中(center)。

在{lll}中加上bar(|)会画纵线,例如{|l|l|l|}这样就会变成传统的大方框、小方框的表格。

而两个bar就会画双纵线。

tabular环境内尚可使用另一个tabular环境来制作更复杂的表格,这在tabbing环境是不被允许的。

8.3.2tabular环境对字段的调整

1.p{宽度}

2.这里的p指的是段落(paragraph)。

通常用于一个小段落的文字,指定了宽度后里头的文字会自动折行,而且这个段落的顶端会和其他字段的顶端对齐。

3.@{文字、符号或指令}

4.这可以作用在本栏的各个列,让他们都出现某个文字、符号或都在某个指令的作用下。

这个指令另外会同时将字段间距缩成0,置于首尾的话,会有让横线和文字切齐的作用(预设不会切齐,横线两端会多出字段间距的部份)。

5.\multicolumn{字段数}{左右位置}{文字内容}

6.跨栏排版,例如一小段文字跨两栏。

左右位置可使用lrc之一。

7.\cline{a-b}

8.画某部份字段的横线,其中的a-b指的就是要画线的字段数,例如\cline{2-3}就是画第二栏至第三栏的横线。

9.\arrayrulewidth=单位长度

10.调整表格线条的粗细,默认值是0.4pt。

使用方法:

\arrayrulewidth=1.5pt即可,但要注意的是要在进入tabular环境之前设定好。

11.\tabcolsep=单位长度

12.调整两字段的左右间距。

请注意,这个值是实际两字段间距值的一半,预设是6pt。

使用方法和\arrayrulewidth一样。

13.\doublerulesep=单位长度

14.调整画双线时,这两线间的间距,默认值是2pt。

使用方法和\arrayrulewidth一样。

15.\arraystretch

16.调整表格的上下行距。

请注意,这要由\renewcommand来重设,因为在LaTeX定义出的一个常数值,而这个\arraystretch只是这些常数值的倍数,我们要重新改变他才能改变默认倍数。

例如:

example16.tex中的使用方法。

在tabular环境的参数中,可能是取代原来的参数,例如p{}。

也可能是置放在原参数的前后,如@{},这看一下实际例子就可以了解:

%example16.tex

\documentclass{article}

\usepackage{textcomp}%for\textcelsius

\renewcommand{\arraystretch}{1.2}%将表格行间距加大为原来的1.2倍

\arrayrulewidth=1pt%调整线条粗细为1pt

\tabcolsep=12pt%调整栏间距为24pt

\begin{document}

\centering

\section*{SPECIFICHEATS(20\textcelsius\AND1ATM)}

\begin{tabular}{@{\sf}lll@{}}%第一字段使用sansserif字族

\hline

&\multicolumn{2}{c}{\bfSpecificHeats}\\%跨二三栏排版,文字置中

\cline{2-3}%只画二三栏横线

&$c$(J/kg$\cdot$K)&$C$(J/mol$\cdot$K)\\

\hline

Aluminum&900&24.3\\

Copper&385&24.4\\

Gold&130&25.6\\

Steel/Iron&450&25.0\\

Lead&130&26.8\\

Mercury&140&28.0\\

Water&4190&75.4\\

Ice($-$10\textcelsius)&2100&38\\

\hline

\end{tabular}

\end{document}

textcomp也是LaTeX的标准宏之一,他提供了许多符号,不必进入数学模式也是可以正常使用。

但一般编译的话,可能会使用到pk点阵字,如果有安装cm-superType1字型的话,可以使用以下的编译方式:

latexexample16.tex

dvisp-Pcm-superexample16.dvi

ps2pdfexample16.ps

这样就会完全使用Type1字型。

如果没有安装cm-superType1字型,则可引用txfonts或pxfonts宏套件。

@{}如果完全没有加入任何参数,那么他的作用只是在去掉左右两栏间距而已,大家可以把有关@{}的部份拿掉,试着再编译看看,仔细比较看有什么不同。

有些专业排版的专家建议把表格前后加个@{}去除突出来的横线(实际上就是去除原有左右两边间距的部份)。

编译好的例子在:

http:

//edt1023.sayya.org/tex/latex123/example16.tex

http:

//edt1023.sayya.org/tex/latex123/example16.pdf

如果@{}里头不是指令,而是文字或符号,那这个文字或符号会加在各栏文字内容的前或后。

p{}指令的使用时机是某一个字段的文字比较多,需限定字段的宽度让他自动折行的情形,例如以下的例子:

%example17.tex

\documentclass{article}

\renewcommand{\arraystretch}{1.2}%将表格行间距加大为原来的1.2倍

\begin{document}

\centering

\section*{YiSyllablesAreaCharacterBlocks}

\begin{tabular}{@{}llp{6cm}@{}}

\hline

Start&End&CharacterBlockName\\

\hline

A000&A48F&YiSyllables.

YialsoknownasLolo,isascriptresemblingChinese

inoverallshapsthatisusedintheYunnanprovince

China.\\

A490&A4CF&YiRadicals.

BasicunitsoftheYisyllables.\\

\hline

\end{tabular}

\end{document}

这样会把p{}指定的字段当成一整个段落来处理,空一个空白行,同样是表示新段落的开始。

编译好的例子如下:

http:

//edt1023.sayya.org/tex/latex123/example17.tex

http:

//edt1023.sayya.org/tex/latex123/example17.pdf

8.4array宏套件

这个宏套件可以加强原有tabular环境的功能。

使用上只要引入array宏套件即可,tabular环境依原来的使用方法,只是多了些相关调整指令。

1.m{宽度}

2.这和p{}一样的作用,只是置放的位置不一样,此时其他字段的内容会对齐这个段落的中央位置。

3.b{宽度}

4.同p{},但其他字段的内容会对齐整个段落的底部。

5.>{指令}

6.这可以置于l,r,c,p,m,b参数之前,是对于某个字段的内容下指令,这个指令会在此一字段内容之前作用。

引用了arraypackage后,可能会抑制某些@{指令}的作用,此时要改用>{指令},但这没有去除字段间距的功能,可在前头再加个@{}即可。

7.<{指令}

8.和>{指令}相同,但会在此一字段内容之后才作用。

9.!

{指令}

10.这是取代|的作用,可以方便使用特殊符号来代替原来的纵线。

11.\extrarowheight

12.这是在调整字段内容顶端的空间大小,但不会改变底部的空间大小。

8.5tabularx宏套件

tabularx宏套件提供一个tabularx环境,这是加强型的tabular环境,附在LaTeX的工具组里头。

主要作用是改善\tabular*指令,指定表格宽度的功能。

在原始tabular环境,加了个星号,可以指定表格的宽度。

但由于\tabular*这个原始环境,他会去修改栏内空间,而不是实际整个表格方框的宽度,这使得某些文字会超出表格范围,因此,使用上可能tabularx会比较方便,他提供了X参数来取代原来的lrc参数,这个参数实际的作用是p{}的功能,因此会实际调整字段方框的宽度,而且里头的文字叙述超过字段宽度时会自动折行。

这个套件会自动引入arraypackage8.1。

这里使用这两种环境来排版,大家比较一下他的结果,就知道差异了:

%example18.tex

\documentclass{article}

\usepackage{tabularx}

\parindent=0pt

\renewcommand{\arraystretch}{1.2}

\begin{document}

\centering

\section*{\texttt{tabular*}environment}

\begin{tabular*}{8cm}{lll}

\hline

Start&End&CharacterBlockName\\

\hline

3400&4DB5&CJKUnifiedIdeographsExtensionA\\

4E00&9FFF&CJKUnifiedIdeographs\\

\hline

\end{tabular*}

\section*{\textsf{tabularx}package}

\begin{tabularx}{8cm}{llX}%8cm减去前两个字段宽度后,剩下的通通给

\hline%第三字段使用,文字超出的部份会自动折行

Start&End&CharacterBlockName\\

\hline

3400&4DB5&CJKUnifiedIdeographsExtensionA\\

4E00&9FFF&CJKUnifiedIdeographs\\

\hline

\end{tabularx}

\end{document}

tabularxpackage并不是都没有缺点的,例如,使用\verb指令时会有一些不兼容,另外,在tabularx环境内还要有其他的tabularx环境时,这个在里头的tabularx环境要由大括号括住,不能像tabular环境一下的直接巢状使用。

编译好的例子在:

http:

//edt1023.sayya.org/tex/latex123/example18.tex

http:

//edt1023.sayya.org/tex/latex123/example18.pdf

8.6表格线条粗细的控制(booktabs)

由前面几节所述,可以看得出来LaTeX表格宏的功能稍嫌阳春了点,对于一些特殊状况可能会无法处理,对于表格外观要求较高的使用者也会感到不足,虽然也可以自行去定义宏,但这样一来不但可能有可移植性的问题,而且也不是每个人都有时间去学习TeX/LaTeX宏的写作。

我们试图来看看有没有其他的解决方式,这里不得不会提到一些外来的宏套件,但这些套件的使用相当的普遍,几乎可以忽略他的可移植性的问题。

我们前面曾学过\arraryrulewidth指令,可以调整线条的粗细,但是这无法各别调整线条,每个在tabular表格环境内的线条会调整成一样的粗细。

booktabs宏套件可以很方便的达成这个目的。

我们来看看这个提供了什么方便的指令:

指令

功能

\toprule[线条粗细]

画表格顶端的横线

\midrule[线条粗细]

画表格里头的横线

\bottomrule[线条粗细]

画表格底部的横线

\cmidrule

指令某个字段画横线,取代原来的\cline

使用方法和tabular环境差不多,连环境名称都一样,但可在指令后加个方括号来指定线条的粗细,不指定的话,toprule及bottomrule都会比中间的其他线条粗一点。

其中cmidrule另有更进一步的功能:

\cmidrule[线条粗细](左右是否去边){画线字段}

其中「画线字段」和\cline一样,指定字段数即可,例如2-3。

左右去边要表明左(l)或/及右(r),也可由大括号指定要去掉多少(预设0.5em),如:

(lr{0.7em}){2-3}。

我们把example16拿来改一下,大家试着看看有什么不同,编译好的例子如下:

http:

//edt1023.sayya.org/tex/latex123/example19.tex

http:

//edt1023.sayya.org/tex/latex123/example19.pdf

由于屏幕分辨率的关系,如果分不出不同,请由打印机印出来比较,或将档案放大再来观察。

这里最粗的是toprule及bottomrule再来是midrule,最细的是cmidrule。

而且booktabs已经调整过原来tabular表格的上下间距,除非想得更大,不然的话,不需另外再去设定arraystretch的值了。

8.7彩色表格(colortbl)

彩色表格已经是很普遍,但千万要小心喧宾夺主的情况,也别弄成了大花脸。

因此,淡色系可能会比较合适。

我们在第3.4.3.1小节及example13曾提到过colorpackage的引用,但并没有详细说明这个套件的用法,而colortbl会使用到这些颜色的功能,因此这里稍微说明一下。

8.7.1color宏套件

这是附在LaTeX工具组graphicspackage中的一个宏,使用上非常简单,只要把color宏在文稿preamble区引上就可以使用颜色了。

以下是常要用到的控制指令:

指令

作用

\color{颜色}

这会使用文章所有内容都使用这个颜色

\definecolor

定义颜色

\textcolor{颜色}{文字内容}

让文字内容使用某特定颜色

\pagecolor{颜色}

这是在设定背景颜色,本页及其后的页面会使用这个背景颜色

\normalcolor{颜色}

回复原来的颜色

\colorbox{颜色}{文字内容}

这是方框背景的颜色

\fcolorbox{框色}{框内背景色}{文字内容}

这是方框颜色和其内背景颜色不同

这里要注意的是,指令里头使用的颜色,必需是有定义过的颜色才能使用。

color宏只定义了一些基本颜色,red,green,blue(RGB模型原色),cyan,magenta,yellow,black(CMYK模型原色),white,另外一个常用的gray灰阶模型(gray-scale),其他的颜色得自行定义。

定义颜色的语法如下:

\definecolor{颜色名称}{颜色模型}{调色盘值}

第一个参数就是自定义的一个颜色名称,颜色模型可使用rgb、cmyk或gray,各颜色深浅值在0-1之间,「调色盘值」就是各种原色的值。

RGB颜色的索引值,如果是Unix-like系统,可找一下rgb.txt这个档案,里头就会有各种颜色的索引值,或者,参考example24.pdf。

这里以bisque这个颜色为例子,他的rgb三原色的深浅比例为255,228,196,各除以256得0.996,0.891,0.755,定义方法如下:

8.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1