1、hhline宏包调整水平线与垂直线的交叉点
by 李守军
2012-3-7
参考书:《Latex2e及常见宏包使用指南》李平编著,清华大学出版社
P112.(§4.9)
hhline宏包提供了一条类似于\hline的画线命令,即
声明:
=:表示与列等宽的两条水平直线。
-:表示与列等宽的一条水平直线。
~ :表示没有水平直线,只有一个与列等宽的空白。
|:表示一条垂直直线穿过两条水平直线。
: :表示一条垂直直线被两条水平直线切断。
# :表示两条水平直线段与两条垂直直线相交。
t :表示两条水平直线段中上边的线段。
2、
b :表示两条水平直线段中下边的线段。
* :表示给定的参数选项重复出现。如:*{3}{===#} 等价于===#===#===#。
如果在声明中用||或::来排版双垂线,那么由\hhline产生的水平直线会被切断。要得到“一条水平线被双垂线窜过”的效果,可以根据情况使用#或者省略垂线的声明。
选项t和b可以用于两条垂直直线中间,例如|tb|产生的交点形态与#一样,但并没有那么有效。它的主要作用是用来构造|t:(左上角)和:t|(右上角)以及|b:(左下角)和:b|(右下角)。
如果要用命令\hhline画一条水平直线,则在选项中应该只包含“-”,“~”和“|”。
3、下面是hhline宏包中提供的一个例子:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{latexsym}
\usepackage{CJK}
\usepackage{hhline}
%\usepackage{multirow}
%\usepackage{fancybox}
%\usepackage{booktabs}
%\usepackage{makecell}
\usepackage{array}
\begin{document}
\begin{CJ
4、K*}{GBK}{song}
\CJKtilde
\setlength{\arrayrulewidth}{1mm}
\begin{tabular}{||cc||c|c||}
\hhline{|t:==:t:==:t|} a&b&c&d \\
\hhline{|:==:|~|~||}1&2&3&4\\ \hhline{#==#~|=#} i &j&k&l \\
\hhline{||--||--||}w &x&y&z\\ \hhline{|b:==:b:==:b|}
\end{tabular}
\end{CJK*}
\end{document}
结果:
[说明:
注意,在标准LaTeX中,命令\hline的定义只用了一个TeX的底层画线命
令\hrule,而\hhline宏包中的命令\hhline用了许多这种画小线段的命令。在排版时,TeX系统会将这些信息准确地记录在dvi文件中,但是用来显示和打印dvi文件的驱动程序也许不能很好地将这些小线段排列整齐。此时可以将参数\arrayrulewidth 的值设置得更大些来改善这种情况。]
左边图为Auraro生成。可以双击打开。