next up previous contents index
Next: 18.3 图形与标题的间距 Up: 18. 定制图形环境 Previous: 18.1 图形的间距

18.2 图形上下方的水平线

通过重新定义 \topfigurerule 和 \bottomfigurerule  可在页面顶部或底部的文本和图形之间画上一水平线。尽管  \topfigurerule 和 \bottomfigurerule 是已经定义的  LATEX 命令,但是它们奇特的定义方式要求在重定义时用  \newcommand 而不是 \renewcommand

表18.3: Figure Rule Commands
\topfigrule 在一页顶部的最后一个浮动对象后, \textfloatsep 前 被执行的命令(见第 18.1 节)。
\bottomfigrule 在一页底部第一个浮动对象前, \textfloatsep 后 被执行的命令。


为了不破坏版面,这些命令所加的标尺的高度必须为零。例如要 划一条 0.4pt 的水平线,就必须加上一 -0.4pt 的距离:

\newcommand{\topfigrule}{\hrule\vspace{-0.4pt}}
因为 \topfigrule 在 \textfloatsep 之前被执行,上面的 命令没有在图形与水平线之间留出距离。下面的命令则在图形与水平线之间 留出了 5pt 的空间。

\newcommand{\topfigrule}{% 
  \vspace*{5pt}\hrule\vspace{-5.4pt}} 
\newcommand{\botfigrule}{% 
  \vspace*{-5.4pt}\hrule\vspace{5pt}}
在这里 \topfigrule 的定义中,首先向下移动 5pt (进入到 \textfloatsep  的区域)来给出图形与水平线之间的距离,然后画上一高为 0.4pt 的水平线, 最后再向上移动 5.4pt 以补偿前面向下的位移。同样地, \botfigrule  在图形与水平线之间留出了 5pt 的空间。 由于上面的命令使得图形与水平线之间的距离为 5pt ,所以水平线与文本 之间的距离为 \textfloatsep - 5pt (见第 18.1 节)。 水平线的线宽缺省为 0.4pt,并可用 \hrule 命令的 height 选项 来改变。

\newcommand{\topfigrule}{% 
  \vspace*{5pt}{\hrule height0.8pt}\vspace{-5.8pt}} 
\newcommand{\botfigrule}{% 
  \vspace*{-5.8pt}{\hrule height0.8pt}\vspace{5pt}}
需要注意下面几点:
  •  \topfigrule 和 \botfigrule 命令对浮动页上的图形 和放置在当前位置的图形(如使用了 h 选项)不起作用。 如果一放置在当前位置的图形正好位于页面的顶部或底部,也不会 画上水平线。
  • 水平线的长度与文本的宽度相等。而不管图形是不是很宽。
  • 因为 LATEX 的 \rule 命令在 \parskip 不为零时会产生 额外的空白,所以代之以 TEX 命令 \hrule


Wang Lei
2000-04-15