所谓排版,很多人说它是一门艺术,而我一直都是很庸俗的把它理解为在一个矩形的空白区域里有规则的安置文本和图片(网页排版,还会涉及音像媒介)。所谓『页面布局』,就是对那个矩形的空白区域进行一些常规的划分。ConTeXt 对页面的规划如下图所示。
认真观察上图,可以发现 ConTeXt 为页面布局提供了二十多个尺寸参数(还有一些尺寸参数在图中未标注)。也许人类所谓的艺术,无非就是与那些参数众多的物件过不去,非要搞定它们不成。所以,弹钢琴是艺术,因为你要与 88 个按键参数作斗争。排版也必须是艺术,仅仅是页面布局,就需要跟二十多个尺寸过不去……
这些尺寸总是分为两类,即横向尺寸与纵向尺寸,我们分而击之。
横向尺寸
页面在横向上的布局,按照中文的排版术语来划分,可粗略分为订口、版心以及翻口的宽度,而这三个尺寸的和即为页面的宽度。
所谓页面,就是整个排版空间,也就是逻辑上虚拟的『纸张』,其宽度在 ConTeXt 中对应于 paperwidth。之所以强调页面是逻辑上虚拟的纸张,是因为最终打印的时候还有现实中的纸张尺寸,其宽度在 ConTeXt 中对应于 printpaperwidth.
所谓版心,就是用于摆放文档内容的区域。版心的宽度在 ConTeXt 中对应于 makeupwidth.
所谓订口,就是装帧成书籍时,页面被装订的一侧的空白区。订口的宽度,在 ConTeXt 中对应于 backspace.
所谓翻口,就是看书时,用于掀起书页的区域,其宽度在 ConTeXt 中对应于 cutspace,亦即 (paperwidth - backspace - makeupwidth). 也就是说,在页面的横向上,除去订口与版心,剩下的区域就是翻口。
通过下面的示例即可查看 ConTeXt 默认的纸张、页面、版心、订口以及翻口的宽度尺寸:
\usemodule[zhfonts]
\starttext
纸张宽度:\the\printpaperwidth
页面宽度:\the\paperwidth
版心宽度:\the\makeupwidth
订口宽度:\the\backspace
翻口宽度:\the\cutspace
\stoptext
可以将 \printpaperwidth
, paperwidth
这些宏视为变量,因为它们的值是可以改变的,而 \the
可以将这些变量的值『取』出来。我这里得到的结果如下:
注意,所得尺寸的单位是 pt
. 在印刷业中,pt
与厘米(cm)的可基于 1pt = 1/72in,1in = 2.53cm 进行换算。例如,\printpaperwidth
经过换算后约为 20.996 cm。
纵向尺寸
页面在横向上的布局,按照中文的排版术语来划分,可粗略分为天头、版心以及地脚的高度,而这三个尺寸的和即为页面的高度。
由于上一节已经介绍了页面与版心的宽度。在此,页面与版心的高度不言自明,它们在 ConTeXt 中分别对应于 paperheight 与 makeupheight,而纸张的高度则对应于 printpaperheight.
所谓天头,是指版心之上的区域,其高度在 ConTeXt 中对应于 topspace.
所谓地脚,是指版心之下的区域,其高度在 ConTeXt 中对应于 bottomspace,亦即 (paperheight - topspace - makeupheight).
通过下面的示例即可查看 ConTeXt 默认的纸张、页面、版心、天头以及地脚的高度尺寸:
\usemodule[zhfonts]
\starttext
纸张高度:\the\printpaperheight
页面高度:\the\paperheight
版心高度:\the\makeupheight
天头高度:\the\topspace
地脚高度:\the\bottomspace
\stoptext
我这里得到的结果如下:
经过 pt 与 cm 的换算,纸张的高度为 29.694 cm,结合上一节中换算的纸张宽度 20.996 cm,显然这是与 A4 纸(210 X 297mm )非常近似的尺寸。之所以这么巧合,自然是因为 ConTeXt 默认设置的纸张就是 A4 纸。
页面与纸张的尺寸设定
用于设定页面与纸张的宽高尺寸的 ConTeXt 宏为 \setuppapersize[页面尺寸][纸张尺寸]
. 例如,将页面尺寸设置为 4 X 6 cm,而将纸张尺寸设置为 16 X 24 cm:
\usemodule[zhfonts]
\definepapersize[MyPaper][width=8cm,height=12cm]
\definepapersize[MyPrintPaper][width=16cm,height=12cm]
\setuppapersize[MyPaper][MyPrintPaper]
\starttext
\showframe
纸张宽度:\the\printpaperwidth
纸张高度:\the\printpaperheight
页面宽度:\the\paperwidth
页面高度:\the\paperheight
\stoptext
\showframe
用于显示页面框架。我这里可以得到下图所示的输出结果:
显然我是用了比页面宽一倍而高度与页面相同的纸张尺寸。通常情况下,纸张尺寸与页面尺寸是相等的,也就是说将页面空间铺满整个纸面。这种页面尺寸小于纸张尺寸的情形主要用于演示文档的打印输出。因为对于演示文档而言,每一页都用 A4 纸打印,太浪费纸了。鉴于演示文档的页面所用的字体通常较大,因此将其页面尺寸缩小,让一张 A4 纸可以打印出 4 页演示文档,这样即省纸又能看清内容。
上例中所用的 MyPaper
与 MyPrintPaper
是我们自己定义的页面尺寸值。ConTeXt 提供了一组标准页面尺寸的预定义,我们可以直接使用。比如,将页面尺寸与纸张尺寸都设置为 A5,即 \setuppapersize[A5][A5]
。如果页面尺寸与纸张尺寸相同,那么 \setuppapersize
第二个参数可以省略,例如 \setuppapersize[A5]
。
版式设定
那些位于页面空间内的各个区域的尺寸参数可以通过 \setlayout
宏进行设定。下面通过对一个很经典的『Van de Graaf 的 Conon 版式』的设计演示 \setlayout
的基本用法。
Van de Graaf 的 Conon 版式的结构如下图所示,是双面对开版式,红色的矩形即为版心。
现在我们仅采用上文所讨论的页面、版心、天头、地脚、订口、翻口等尺寸参数进行设计,完整的示例如下:
% 设置双面对开
\setuppagenumbering[alternative=doublesided]
% 页面与纸张均为 A4
\setuppapersize[A4]
% Van de Graaf Conon 版式
\setuplayout
[backspace=.111\paperwidth,
width=.6666\paperwidth,
topspace=.0555\paperheight,
height=.7777\paperheight]
\starttext
\dorecurse{50}{\input knuth\par}
\stoptext
所得输出结果如下图所示。
上述示例中,值得注意之处:
\setuppagenumbering[alternative=doublesided]
用于将版式设为双面对开,这也是书籍的常规形式,迎合双面打印。这个宏的名字有点古怪,顾名思义,它的意思是『设置页码』,但是考虑到它的参数是将页码设置为双面(doubleside)的形式, 要满足这一要求,那么版式必定是双面对开的。\setuplayout
的width
与height
参数分别表示\makeupwidth
与\makeupheight
的值,也就是页面的宽度与高度尺寸。虽然没有显式样的设定翻口与地脚的尺寸,亦即
\cutspace
与\bottomspace
的值,但是由于\setuppapersize[A4]
已经设定了页面尺寸,因此翻口与地脚的尺寸也就被约束着自动确定了。
结语
本文仅针对中文文档排版常规的页面布局,对 ConTeXt 的页面布局相关的尺寸参数进行了简化处理。如果希望掌握这些参数的全集,以实现对页面布局更精微的设计,应该参考 http://wiki.contextgarden.net/Layout .
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。