“所见即所得(WYSIWYG,What you see is what you get)”编辑器可以使简单的工作更简单,却无法完成某些复杂的工作。

 

nroff/troff是UNIX下经典的typesetting工具,groff是GNU的*roff实现,并对troff的功能进行了增强。与LaTeX相比,体积较小,且大多为*nix自带,使用较为方便。虽说TeX为Donald Knuth所创,排版效果非常好,但体积相当庞大(安装完差不多3.5GB),而且通篇的/xx语法确实把我雷倒了——还是先由groff入手吧。

 

已经搜集到的*roff相关的资料:

groff最吸引我的地方在于能够轻松的编辑数学公式、绘图、制表、排版并且转化为ps/pdf文件或者网页。为了体验这些功能,将下面的代码为输入纯文本文件html_test,

.URL http://netpbm.sourceforge.net/doc "Netpbm manual"
.URL pic.html "Eric Raymond's pic guide"
.LK TestLink
.LP
.EQ
G(z) ~=~ e sup { ln ~ G(z) }
    ~=~ exp left ( sum from k>=1 { S sub k z sup k } over k right )
    ~=~ prod from k>=1 e sup { S sub k z sup k /k }
.EN
.LP
.TS
tab(:);
c s s
c | c | c
l | l | n.
Major New York Bridges
=
Bridge:Designer:Length
_
Brooklyn:J. A. Roebling:1595
Manhattan:G. Lindenthal: 1470
Williamsburg:L. L. Buck:1600
_
Queensborough:Palmer &:1182
/^:  Hornbostel:/^
_
Triborough:O. H. Ammann:1380
/^:/^:383
_
Bronx Whitestone:O. H. Ammann:2300
Throgs Neck:O. H. Ammann:1800
_
George Washington:O. H. Ammann:3500
_
.TE
.LP
.PS
lineht = lineht / 2
box "/fIletter.tr/fP"
arrow
circle "tbl"
arrow
Eqn: circle "eqn"
arrow
Troff: circle "troff"
arc cw
line down
arc cw
left
arrow
circle "grops"
arrow
box "/fIletter.ps/fP"
up
line <- from Troff.n
arc
line
box "/fItmac.m/fP"
.PE

 

然后输入下列命令:

pic html_test | eqn | tbl | groff -ms -Thtml > html_test.html

 

或者

groff -p -e -t -ms -Thtml html_test > html_test.html

 

在处理pic时,宏-ms必不可少。

 

如果不出错的话,链接将会在网页中正常显示,公式、表格以及图表会被转换为图片。

 

 

 

 

groff的groff_www扩展会调用pnmcut,netpbm的工具包中的一个工具。netpbm可以在http://netpbm.sourceforge.net/下载并安装。安装成功后,需要把netpbm的路径加入到PATH中,最好是在$HOME/.bashrc中加入。

 


Update 2011-04-21:

 

今天试着用groff写了一个文件,并把它转化为html格式,那是相当的痛苦——对于一个习惯了所见即所得的初学者,groff的学习曲线确实相当的陡峭。