比较乱,没有整理。
==========================================================================
调整表格高度:
可以插一个看不见的盒子
使用下面的代码:
\rule{0pt}{高度}
==========================================================================
在导言区加上一行:\renewcommand{\arraystretch}{1.3}
数字表示相对于文字每行高度的倍数,根据需要调整即可。
==========================================================================
写表格的时候难免会遇到同一列的不同行中对齐方式不同的情况,但是Tabular环境和Array只能统一指定各列的对齐方式,这时就要用特殊的方法实现了。
在CTeX FAQ里提到的一种方法是用\centering来居中对齐,但是这只对用p来指定列宽而没有指定对齐方式的情况下管用,而且在换行时有RP现象。
看lshort的时候发现multicolumn是可以指定跨列单元格的对齐的,如果列数是1,那么不就能对齐了?
答案是肯定的,如果要在一个单元格里居中,只需要这样:
\multicolumn{1}{c}{文本}
注意第一个参数是数字1而不是字母l,(用过multicolumn的应该都知道嗯)。
要左对齐或者右对齐的话,把c改成l或者r就行了。
为了方便起见,可以自己定义专门用于对齐的命令:
\newcommand{\tc}[1]{\multicolumn{1}{c}{#1}} %居中对齐
\newcommand{\tl}[1]{\multicolumn{1}{l}{#1}} %左对齐
\newcommand{\tr}[1]{\multicolumn{1}{r}{#1}} %右对齐
这样一来就可以用\tc、\tr、\tl来方便地对齐单元格中的文字了
==========================================================================
LaTeX 表格的处理
LaTeX 表格处理概述
一般三线表的处理
带表格注释的三线表
固定列宽和自动伸缩列宽
固定列宽与对齐方式
自动伸缩列宽
跨页表格
表格旋转和后置
表格旋转
表格后置
辅助转换工具
LaTeX 表格处理概述
与 word 不同,LaTeX 通过一定的语法规则将表格写成纯文本形式。基本规则包括:表格从上到下,每一行从左到右,单元格内容使用 & 分隔,用 \\ 换行。最基本的表格环境是 tabular 环境。下面是一个简单的表格代码和实际效果:
\begin{tabular}[t]{l|c}
\hline
姓名 & 年龄 \\
\hline
张三 & 32 \\
李四 & 12 \\
王五 & 24 \\
\hline
\end{tabular}
一般三线表的处理
学术论文普遍使用三线表。三线表的特点主要是:整个表格通常只有三条横线,首尾两条横线较粗,中间一条较细,一般不使用竖线。LaTeX 处理三线表相当简单方便。用到的宏包主要是 booktabs 。下面是普通三线表的代码和效果:
\begin{table}[htbp]
\caption{\label{tab:test}示例表格}
\begin{tabular}{lcl}
\toprule
姓名 & 年龄 & 地址\\
\midrule
张三 & 32 & *\\
李四 & 12 & *\\
王五 & 24 & *\\
\bottomrule
\end{tabular}
\end{table}
带表格注释的三线表
三线表有时候还需要加上注释以便给出表格的资料来源等信息。解决这一问题可以使用下面三个办法之一:
* 使用 ctable 宏包。该宏包用法简单,下面是典型代码和效果:
\ctable[%
caption=The Skewing Angles,
label=tab:nowidth,
]{lcc}
{\tnote{for the abstraction reaction,
$Mu+HX \rightarrow MuH+X$.}
\tnote[b]{1 degree${} = \pi/180$ radians.}
\tnote[c]{this is a particularly long note, showing that footnotes
are set in raggedright mode as we don't like hyphenation
in table footnotes.}
}
{\FL & $H(Mu)+F_2$ & $H(Mu)+Cl_2$ \ML
$\beta$(H) & $80.9$\tmark[b] & $83.2$ \NN
$\beta$(Mu) & $86.7$ & $87.7$ \LL
}
* 使用 threeparttable 宏包。下面是典型代码和效果:
\begin{table}[htbp]
\centering\small
\begin{threeparttable}
\caption{\label{tab:results}Effect of Trade Openness on
Environment (Air Pollution)}
\begin{tabular}{lccc}
\toprule
& NO$_2$ & SO$_2$ & PM \\
\midrule
$\ln(y/pop)$ & 408.74* & 287.25* & 566.65 \\
& (121.79) & (118.81) & (336.19) \\
$\ln(y/pop)^2$ & $-$22.85* & $-$16.58* & $-$35.57** \\
& (6.90) & (6.78) & (19.06) \\
$(X+M)/Y$ & $-$.29** & $-$.31* & $-$.37 \\
& (.17) & (.08) & (.34) \\
$Polity$ & $-$3.20* & $-$6.58* & $-$6.70** \\
& (1.47) & (2.05) & (3.42) \\
$\ln(LandArea/pop)$ & $-$5.94 & $-$2.92* & $-$13.02* \\
& (5.93) & (1.39) & (6.29) \\
Obs. & 36 & 41 & 38 \\
$R^2$ & 0.16 & 0.68 & 0.62 \\
\bottomrule
\end{tabular}
\small
Note: Robust standard errors in parentheses. Intercept
included but not reported.
\begin{tablenotes}
\item[*] significant at 5\% level
\item[**] significant at 10\% level
\end{tablenotes}
\end{threeparttable}
\end{table}
固定列宽和自动伸缩列宽
有时三线表需要固定某列的列宽,或者指定整个表格的总宽度,指定某几列自动伸缩。
固定列宽与对齐方式
固定列宽可以使用 array 宏包的 p{2cm} 系列命令,如果需要指定水平对齐方式,可以使用下面的形式 >{\centering}p{2cm} 实现,但如果使用这种方式,缺省情况下不能使用 \\ 换行,需要使用 \tabularnewline 代替。为了仍然使用 \\ 换行,需要在导言区加上下面的代码:
\usepackage{array}
\newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
\newcolumntype{C}[1]{>{\PreserveBackslash\centering}p{#1}}
\newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}}
\newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}}
使用 C{3cm} 命令即可指定该列宽度为 3cm,并且文字居中对齐,左对齐和右对齐命令分别是 L{2cm} 和 R{2cm} 。
下面是一个的例子:
\begin{table}[htbp]
\centering\caption{\label{tab:test}2000 和~2004 年中国制造业产品的出口份额}
\begin{tabular}{l*{2}{R{2cm}}}
\toprule
& 2000 & 2004 \\
\midrule
钢铁 & 3.1 & 5.2 \\
化学制品 & 2.1 & 2.7 \\
办公设备及电信设备 & 4.5 & 15.2 \\
汽车产品 & 0.3 & 0.7 \\
纺织品 & 10.4 & 17.2 \\
服装 & 18.3 & 24\\
\bottomrule
\end{tabular}
\end{table}
自动伸缩列宽
使用 tabularx 宏包可以实现自动伸缩列宽。下面是一个简单的例子。与普通的 tabular 环境不同之处在于:(1)需要指定整个表格的总宽度;(2)需要用 X 指定至少一列为自动伸缩列。
\begin{table}[htbp]
\centering\caption{\label{tab:test}2000 和~2004 年中国制造业产品的出口份额}
\begin{tabularx}{10cm}{Xrr}
\toprule
& 2000 & 2004 \\
\midrule
钢铁 & 3.1 & 5.2 \\
化学制品 & 2.1 & 2.7 \\
办公设备及电信设备 & 4.5 & 15.2 \\
汽车产品 & 0.3 & 0.7 \\
纺织品 & 10.4 & 17.2 \\
服装 & 18.3 & 24\\
\bottomrule
\end{tabularx}
\end{table}
跨页表格
普通的表格不能跨页。如果需要跨页表格,需要使用 longtable 或 supertabular 等宏包。此处以 longtable 为主介绍。
下面是一个例子。
\begin{longtable}{p{1.2cm}p{8cm}p{5cm}}
\caption{\label{tab:test}WTO 英语缩写}\\
\toprule
缩写 & 原\hspace{1em}文 & 解\hspace{1em}释\\
\midrule
\endfirsthead
{\bf 续表~\ref{tab:test}}\\
\toprule
缩写 & 原\hspace{1em}文 & 解\hspace{1em}释\\
\midrule
\endhead
\endfoot
\bottomrule
\endlastfoot
WTO & World Trade Organization & 世界贸易组织\\
TRIMs & Trade-Related Investment Measures & 与贸易有关的投资措施\\
TPR & Trade Policy Review & 贸易政策审议\\
....
\end{longtable}
表格旋转和后置
表格旋转
如果表格过宽,可以将表格旋转 90 度横放。使用 rotating 宏包即可实现此功能。与普通表格的不同之处是:需要将 table 环境替换成 sidewaystable 环境。
表格后置
使用 endfloat 宏包可以将文章中的所有图表置于文章末尾,以满足某些杂志的排版要求。
辅助转换工具
* calc2latex 或 excel2latex 可以将电子表格文件数据转换为 latex 表格。
* dat2latex.pl 这是 perl 脚本,可将 gnuplot 的文本数据文件转换为 latex 表格。点击此处下载。
==========================================================================
Latex一些使用技巧(图表篇)
1. 设定表格的宽度和高度:
在使用array, tabular等表格环境时, Latex一般自己
根据表格的内容来设定表格的宽度和高度。但是用户
常常希望自己来设定其宽度和高度, 下面介绍一个
采用box的简单的方法:
只需要自定义宽度时, 采用命令\makebox:
用法:\makebox[width][position]{text}
在表格环境中, 试试下面的例子:
\begin{array}{ccc}
\makebox[10em][c]{aaa}&
\makebox[8em][c]{bbb}&\makebox[5em][]{ccc}\\
ddd&eee&fff
\end{array}
得到3列表, 其各列宽度分别为10, 8和5个字符。
要得到自定义宽度和高度的表格:
采用命令\parbox:
用法: \parbox[position][height][inner-pos]{width}{text}
每个表格单元的高度和宽度可以定义, 比如,
要得到3个字符高度和10个字符宽度的单元格,
\parbox[][3em][c]{10em}{aaa}
注意: 用box只需要定义第一行和第一列即可,
但必须保证定义的宽度和高度足以容纳其它单元格
的内容, 避免被忽略掉。
2. 图像和文字的混排一般需要宏包的支持,
但是也可以简单地由表格+图形(图像)来实现。
一般的大家用表格来做只有上下左右箭头的交换图,
但是, 如果有斜箭头, 就需要插入EPS图像了。
在比较规则的图形中, 可以使用picture环境画出
所需要的箭头, 然后把它放在表格的单元格中,
比如:
%上下左右箭头和标记的定义==============
\def\CDdown{\Big\downarrow} %% vertical arrow in CD
\def\CDfrom{\mathop{\longleftarrow\joinrel\relbar}\limits} %% <----
\def\CDllabel#1{\vcenter{\hbox to0pt{\hss$\scriptstyle#1$}}} %% *** |
\def\CDrlabel#1{\vcenter{\hbox to0pt{$\scriptstyle#1$\hss}}} %% | ***
\def\CDto{\mathop{\relbar\joinrel\longrightarrow}\limits} %% ---->
\def\CDup{\Big\uparrow} %% vertical arrow in CD
%定义一个斜箭头, 45度, 并且带标记。
\def\zyjt{\setlength{\unitlength}{0.1em}\begin{picture}(15, 15)
\put(0,15){\vector(1, -1){24}}\put(5,0){$_f$}
\end{picture}}
%在图表中使用图像命令来画简单的图:
$$
\begin{array}{rcl}
g&\CDto^j&T(g) \\
&{\zyjt}&\CDdown\CDrlabel{g}\\
& &A
\end{array}
$$
同样的方法也可以把图像放入表格的单元格中:
%在矩阵中插入图像文件得到图文混排:
$$
\begin{array}{|r|c|l|}
aaa&\includegraphics{fig.eps} &ccc \\
ddd & eee& fff
\end{array}
$$
这样, 只需要图像宏包就可以实现任意方式的图文混排了,
当然, 有时候需要使用\raisebox{高度}{文本}来调节非图像
单元格内容的高度, 比如\raisebox{1.5cm}{ccc}。
=====================================