“所见即所得(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相关的资料:
- An Introduction to the GNU Groff Text Processing System
- Produce device-independent documentation with Groff
- Groff Manual
- http://troff.org/
- http://oreilly.com/openbook/utp/UnixTextProcessing.pdf
- groff_www
- GROFF & [X]HTML
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的学习曲线确实相当的陡峭。