Menseting dokumen dengan program Groff


Groff adalah suatu program komputer yang dapat dijalankan pada sistem operasi Unix, yang membaca suatu file masukan yang dibuat oleh users dan keluarannya berupa paper terformat yang siap untuk publikasi atau cetak. File masukan berisi teks atau kata-kata yang akan dicetak dan request yang memberi instruksi pada program groff yang menyatakan bagaimana memformat salinan yang akan dicetak.

Belajar program groff mengingatkan kita akan program WordStar di bawah DOS yang perintah settingnya terdiri dari perintah titik (dot command). Namun hasil kompilasi program ini sangat jauh berbeda dengan WordStar yang dapat dilihat pada contoh-contoh berikut ini.

Contoh type setting program groff adalah sebagai berikut:

.fo 'Contoh type setting dengan groff'
.nr pp 12
.+c "Contoh penggunaan Groff"
.pp
Groff adalah suatu program komputer yang dapat dijalankan pada sistem operasi Unix, yang membaca suatu file masukan yang dibuat oleh users dan keluarannya berupa paper terformat yang siap untuk publikasi atau cetak. File masukan berisi
.i "text,"
atau kata-kata yang akan dicetak dan
.i "request,"
yang memberikan instruksi pada program groff yang menyatakan bagaimana
.bx "memformat"
salinan yang akan dicetak.

Kalau file ini dikompilasi dengan program groff dengan perintah:
$ groff -me -Gpet -Tps nama-file > nama-file.ps atau kalau punya makro sendiri
$ groff -mmakroiww -Gpet -Tps nama-file > nama-file.ps

opsi -Gpet berfungsi untuk memanggil preprocessor grap, pic, eqn, dan tbl

akan dihasilkan:

Membuat bagan alir dengan preprocessor pic

.nr pp 12
.pp
Jika kita punya suatu contoh bahan teks yang telah siap, panggil program groff dengan mengetik sebagai perintah pada shell Unix:
.in +.5i
groff -mmakroiww -T \c
.i "tipe file"
mama-file > nama-file.ekstensi
.pp
Berikut ini adalah beberapa contoh hasil preprocessing program
.bi "pic",
.bi "tbl",
.bi "eqn"
dan
.bi "grap"
untuk mendukung implementasi groff. Keempat program ini berfungsi untuk mengolah perintah khusus untuk membuat gambar vektor
.i "(pic)", membuat tabel
.i "(tbl)", membuat persamaan matematik
.i "(eqn)", dan membuat grafik plot
.i "(grap)".
.PS
ellipse "bangun";
arrow;
box "\fIcucimuka\fP"
arrow;
box width 1.2 "\fInginternet\fP" "(gosok gigi)" dashed;
arrow;
box "\fImandi\fP";
arrow;
ellipse "berangkat"
.PE
.ce
Bagan 1. Kegiatan pagi hari (digambar dengan program (GNU)pic)

Hasil kompilasinya adalah:

Membuat tabel dan persamaan matematik

Membuat tabel

.TS
tab(#);
|l|c|c|.
_
Bahasa#Pembuat#Mesin
_
Fortran#Banyak#Hampir semua mesin
PL/1#IBM#360/370
C#BTL#11/45,H6000,370
BLISS#Carnegie-Mellon#PDP-10,11
IDS#Honeywell#H6000
Pascal#Stanford#370
_
.TE

Hasil kompilasinya adalah:

Membuat persamaan matematik

.EQ I
G(z)~mark =~ e sup { ln ~ G(z) }
~=~ exp left ( sum from k>=1 { S sub k z sup k } right )
~=~ prod from k>=1 e sup { S sub k z sup k /k }
.EN
.EQ I
lineup = left ( 1 + S sub 1 z +
{S sub 1 sup 2 z sup 2} over 2! + ... right ) ~
left ( 1+ { S sub 2 z sup 2 } over 2
+ {S sub 2 sup 2 z sup 4} over {2 sup 2 cdot 2! }
+ ... right ) ...
.EN
.EQ I
lineup = sum from m>=0 left (
sum from pile { k sub 1,k sub 2,...,k sub m >=0
above
k sub 1 +2k sub 2 + ... +mk sub m =m}
{S sub 1 sup {k sub 1}} over {1 sup k sub 1 k sub 1!} ~
{S sub 2 sup {k sub 2}} over {2 sup k sub 2 k sub 2!} ~
...
{S sub m sup {k sub m}} over {m sup k sub m k sub m!} ~
right ) ~ z sup m
.EN

Hasil kompilasinya adalah:

Contoh persamaan yang lain, silakan coba script eqn berikut ini:

.EQ
tan theta ~~=~~ { A ~+~ B } over { C ~+~ D }
.EN
.EQ
sqrt a+b + 1 over sqrt {ax sup 2 +bx+c}
.EN
.EQ
sum from i=0 to {i=inf} x sup i
.EN
.EQ
left { a over b + 1 right } ~=~ left ( c over d right ) + left [ e right ]
.EN
.EQ
roman sign (x) ~=~ left { lpile {1 above 0 above -1} ~~ lpile
{if~x>0 above if~x=0 above if~x<0}
.EN
.EQ
left floor x over y right floor <= left ceiling a over b right ceiling
.EN

Membuat grafik

.G1
label left "Komposisi (%berat)" left .05
label bot "Jarak titik dalam (mikron)" down .05
draw of solid
draw ef dashed
draw om dotted
draw em solid
copy "CuSn-alloy.dat" thru {
next of at $1, $2
next ef at $1, $3
next om at $1, $4
next em at $1, $5
}
.G2
.G1
graph A
frame ht 1.6667 wid 1.6667
label bot "Timah (%berat)" down .01
label left "Jarak titik (mikron)" left .01
ticks off
copy "CuSn-alloy.dat" thru {"$2" at $2,$1; }
graph A with .Frame.w at A.Frame.e +(.1,0)
frame ht 1.6667 wid 1.6667
label bot "Tembaga (%berat)" down .01
ticks off
copy "CuSn-alloy.dat" thru {"$3" at $3,$1; }
graph A with .Frame.w at A.Frame.e +(.1,0)
frame ht 1.6667 wid 1.6667
label bot "Oksigen (%berat)" down .01
ticks off
copy "CuSn-alloy.dat" thru {"$5" at $5,$1; }
.G2

Hasil kompilasinya adalah:

Silakan coba script grap berikut ini:

.G1
coord x 5,35 y 5,35
ticks off
copy until "END" thru {
.ft H
"x" at $1, $2
pic box ht 0.1 wid 0.1 at Here
.ft R
"" "$3" below at $1, $2
}
10 10 disini
20 20 beberapa
30 30 pic/troff
END
.G2

Contoh yang lainya:

Selamat mencoba